扩展Axis2框架,支持基于JVM的脚本语言
2010-10-09 08:12:20 来源:WEB开发网要支持契约优先的方法,需要为服务生成一个框架、一个消息接收者。已经写好的通用消息接收者运转不了,它只能在有限的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 服务。
上图展示了该解决方案的架构。传输监听器(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
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接