WEB开发网
开发学院软件开发Java 扩展Axis2框架,支持基于JVM的脚本语言 阅读

扩展Axis2框架,支持基于JVM的脚本语言

 2010-10-09 08:12:20 来源:WEB开发网   
核心提示: 要支持契约优先的方法,需要为服务生成一个框架、一个消息接收者,扩展Axis2框架,支持基于JVM的脚本语言(5),已经写好的通用消息接收者运转不了,它只能在有限的Schema结构上运行,Heshan具备Web服务、SOA、中间件和分布式系统的相关经验,他喜欢打篮球,我们可以利用Axis2现有的基

要支持契约优先的方法,需要为服务生成一个框架、一个消息接收者。已经写好的通用消息接收者运转不了,它只能在有限的Schema结构上运行。我们可以利用Axis2现有的基础设施来做到这一点。Axis2创建了一个表示WSDL的中间XML结构,我们必须根据该XML结构运行两个XSLT文件,来生成框架类和消息接收者。有了这些XSLT文件和代码生成工具,我们就能用Jython支持契约优先的Web服务了。最后,就可以使用消息接收者和框架来编写Jython实现的服务客户端了。

服务器端

本节将讨论如何将业务逻辑暴露为Web服务。

要在Axis2中暴露Jython实现的Web服务,可以从Axis2可插拔部署器的概念中找找解决方案。为了暴露用Jython编写的服务,我们要编写一个自定义的部署器、一个Jython消息接收者。

消息接收者消费SOAP消息,并把SOAP消息传给应用。消息接收者是输入管道中最后一个处理器。

部署器需要将Jython的数据类型映射到XML Schema数据类型。这个过程称为数据绑定。然后借助数据绑定和方法注解,就能为Jython服务生成XML Schema了。接下来,生成的XML Schema和有关AxisService的元数据都会交给Axis2引擎。Axis2引擎将创建出对应的WSDL,Jython服务也会被暴露为Web 服务。

扩展Axis2框架,支持基于JVM的脚本语言

上图展示了该解决方案的架构。传输监听器(Transport Listener)接收传入的SOAP消息,并将消息传给处理器链。接着,SOAP消息交由Jython消息接收者处理,消息接收者会遍历Axis对象模型(AXIOM)的结构、检索相关的信息。检索到的信息再传递给Jython服务。然后Jython服务开始执行,生成的结果再返回给Jython消息接收者。Jython消息接收者会为返回的Jython对象创建一个AXIOM结构。接下来,响应经由处理器链发送给传输发送者。传输发送者再将响应发送给客户端。对每个交换的SOAP消息来说,前面所述的过程都会执行一遍。

如何部署Jython服务

部署时,Axis2引擎会读取Jython脚本的注解,并完成动态Jython类型到静态Java类型的映射。这一过程称为数据绑定。相应的匹配类型映射完成之后,会创建服务的XML Schema。下面的步骤描述了如何生成Jython服务的XML Schema:

读取Jython服务的注解。

为Jython服务创建AxisService。

给每个Jython方法创建一个AxisOperation。

给操作增加AxisMessage。AxisMessage包含方法参数的类型。

将所有AxisOperation添加到AxisService中。

最终为Jython消息生成XML Schema。

生成的AxisService会交给Axis2引擎。最后由Axis2引擎生成WSDL。

结论

Apache Axis2可以以这种方式进行扩展,来支持基于JVM的脚本语言。扩展之后,用户就可以暴露服务、用JVM脚本语言扩展编写服务客户端了。

关于作者

Heshan Suriyaarachchi是WSO2公司的一名软件工程师,是WSO2企业服务总线(ESB)团队的成员。Heshan具备Web服务、SOA、中间件和分布式系统的相关经验。他喜欢打篮球,业余时间还参与开源项目。

他的博客是:http://heshans.blogspot.com/

查看英文原文:http://www.infoq.com/articles/axis2_scripting

上一页  1 2 3 4 5 

Tags:扩展 Axis 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接