`
icarusliu
  • 浏览: 236878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在axis2下使用jibx数据绑定(自allblue 的blog)

阅读更多

最近在百忙之中捣鼓了一些东西,一是第一次在Linux下远程安装了一次Oracle10g加上patch,这个其实好多人都做过,只不过对我来说还是第一次,而且结果还是非常顺利的,并不像人家所说的通常都会是一场恶梦。大部分时间都在看官方的安装手册,或许是之前估计到了可能会有麻烦,所以做了很多功课,这个以后有时间再加上。虽然没遇到什么特别的障碍,但是步骤的确蛮多的。

  今天用axis2下的jibx数据绑定,重新改写了一个旧有的项目,感觉不错。之前在axis2下用xmlbeans数据绑定做了一个小灵通的平台,那个项目是使用axis2的入门之作,不过使用下来,似乎稳定性和速度都有不错的表现。因此开始准备从axis开始迁移到axis2。

  axis2,二代一般总会比一代好吧。axis2也的确是这样,除去新标准的支持,架构的优化,光光是速度的提升和资源占用的减少,就足以吸引我去试用这个新平台了。其实在axis2出0.9x版本的时候,我曾经下载过一个版本,不过当时的版本根本无法解析我的wsdl,所以就没再深究下去。不过目前的1.1版本应该说已经是趋于生产的版本了。

  得以于axis2的新架构,写一个服务,会有很多种不同的方法,你即可以用pojo结合rpc模式来写,也可以用axis2自己的axiom api从底层写,也可以从wsdl生成相应框架,然后填写相应逻辑。

  对于wsdl生成框架代码这种形式,又有不同的数据绑定可以使用。axis2 1.1 可以使用adb(axis2自己的data binding)、xmlbeans、jibx、jaxme、jaxbri。其中常用的还是前两种,axis2官方是极力推荐自己的data binding的,因为速度快,架构相对简单,而且有一些独有的特性。xmlbeans,是对模式支持最好的data binding,一些特别复杂的模式只能在xmlbeans下才能正确生成框架代码。其他几种代码wsdl2java目前都不是支持得很好,都还在实验改进阶段。

  面对这么多数据绑定模式,很多人都无从选择。官方maillist上也有好多人问该用哪个。查了一些资料,据说,adb很好用,而且速度快,如果只是简单的模式,那么使用这种数据绑定就可以了。xmlbeans的强力模式支持,可以支持足够负责的模式,速度上也只是比adb低5%左右。而jibx很多人没用过,因为使用没有前两种方便,不过jibx支持unwrapping代码生成(普通代码生成的服务方法,一般只有一个参数,而unwrapping可以生成多个参数的方法,相当直观。)

  bindmark项目对目前的各种xml数据绑定工具做了一个大致的评测,jibx无论在大中小三种数据量情况下,都名列前茅(javolution也相当不错,而且该包不仅仅用于xml处理),这无疑加大了我的兴趣。

  axis2的wsdl2java工具对于adb以及xmlbeans支持都已经很好了,可以直接从wsdl2java生成相应的绑定类。不过jibx就相对复杂了,这和jibx的架构有一定的关系。jibx的速度快得益于它是一种xml pull模式的xml解析器,简单理解xml pull就是把xml解析推迟到实际对象使用的阶段,当使用xml某部分所对应的java对象时,解析器才开始真正的解析,这样就比传统的通篇解析的sax性能要好很多。jibx并不像其它的绑定框架,一般从XML模式出发,它用一个binding文件来联系一个XML实例和JAVA类。这样的好处是,我们可以使用自己类,而不是框架所生成的用户使用类。于是要用jibx做XML数据绑定,你就不仅仅只有目标XML就可以了,而且还要再准备一些JAVA类和目标XML类来对应。这说起来好像很拗口,因为XML数据绑定框架本来就是要用来生成JAVA类来对应XML的,怎么还要事先准备某些类呢。这一点对于没有读完jibx官方教程的人来说,的确很难理解。我们所要准备的JAVA类都是一些很简单的,几乎只有getter和setter方法的简单类,然后通过binding文件来指定这些JAVA类中的各个字段和XML中的对应关系。binding文件是一个简单的文本文件,有自己的语法。在准备好JAVA类和binding文件之后,用jibx的Binding Compiler编译binding,这个过程其实是jibx在我们准备的基础类中添加框架所需要的各种方法,使得最终得到符合jibx规范的可最终使用的XML绑定类。

  我是用的是axis2的1.1版本,虽然最后成功使用了jibx数据绑定,但还是无法使用最吸引人的jibx绑定的uw模式,可能1.1的版本对这种模式的支持还是很有限。我通过jibx官方的xsd2jibx根据我的xml模式来生成所需的java基础类,然后编写binding。(由于binding有自己的一套语法,就不再累述了)。有了两种基础素材,就可以把他们通过axis2提供的wsdl2java来生成axis2所需的绑定代码了。

@%AXIS2_HOME%/bin/wsdl2java -uri provision-3t.wsdl \
-p org.mllm.dsmp.axis2.client.jibx -d jibx \
-Ebindingfile E:\Work\webservice\dsmp\
\@axis2\org\mllm\dsmp\axis2\schemas\binding.xml \
-s -pn sgPort -o build/client

 

生成后就通过所生成的DsmpStub来进行相关的服务调用。其实如果不使用uw模式,代码本身和xmlbeans之类的不是相差很多,但是在速度方面就有所优势了,特别是在重复多次调用某个服务时,一次调用所节省的时间累积起来还是能节省不少时间的。

分享到:
评论

相关推荐

    axis2不同数据绑定方式实例

    axis2不同数据绑定方式实例

    axis和jibx学习

    在提供的文件“使用Axis2和JiBX将Java类转换成Web服务.doc”中,可能详细介绍了如何利用这两者来创建Web服务。这可能包括以下步骤: 1. 配置Axis2环境,安装必要的库和依赖。 2. 创建Java类,定义服务接口和实现。 3...

    axis和axis2的一些发布差异(WSDL2Java) 收藏

    通过对Axis与Axis2在使用WSDL2Java工具时的不同之处的详细探讨,我们可以看到,虽然两种工具都实现了相似的功能,但Axis2在很多方面都进行了优化和改进,尤其是在命令行参数、部署描述文件生成以及数据绑定等方面。...

    cxf与axis2区别

    Axis2支持更多的数据绑定,包括XMLBeans、JiBX、JaxMe和JaxBRI,以及它原生的数据绑定(ADB)。Apache CXF目前仅支持JAXB和Aegis,默认是JAXB 2.0,但CXF 2.1版本中将支持XMLBeans、JiBX和Castor等数据绑定。 语言...

    axis2相关的jar包

    axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata-1.5.4.jar axis2-mtompolicy-1.5.4.jar axis2-saaj-1.5.4.jar axis2-soapmonitor-servlet-1.5.4.jar axis2-spring-1.5.4.jar ...

    axis2相关jar包~eclipse支持插件包

    axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata-1.5.4.jar axis2-mtompolicy-1.5.4.jar axis2-saaj-1.5.4.jar axis2-soapmonitor-servlet-1.5.4.jar axis2-spring-1.5.4.jar ...

    axis2传送list资源包

    在这里,我们提到了"axis2-adb-1.6.2.jar",这是Axis2的抽象数据绑定(Abstract Data Binding)模块,它允许将XML数据自动转换为Java对象和反之亦然。ADB简化了处理复杂数据结构,如List,因为它能自动将XML元素映射...

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    1. 对于`axis2-1.5.1-bin.zip`,你需要解压文件,然后在命令行中使用提供的脚本启动Axis2服务。 2. 创建Web服务,可以使用Java代码或者WSDL(Web Service Description Language)文件。 3. 将Web服务打包为AAR(Axis...

    axis2-1.6.1

    Apache Axis2是Axis1的下一代,设计为更灵活、可扩展且高效。在这个版本中,它提供了一系列改进和新特性,以满足开发人员在构建SOAP和RESTful Web服务时的需求。 描述中提到的“axis2-1.6.1”进一步确认了这是...

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...

    axis2所用jar包大全下载

    `adb`代表“抽象数据绑定”,它是Axis2的一种数据绑定机制,用于将XML消息转换为Java对象。 其次,“service”标签表明我们讨论的是与服务相关的组件。在Axis2中,`axis2-service-builder.jar`是用于生成服务部署...

    Axis2与CXF的对比

    - 如果项目对数据绑定有特殊要求,或者需要更复杂的Web服务特性,Axis2的全面支持可能更有优势。 3. **效率对比** - 在没有WS-Security的情况下,Axis2、Metro和CXF的性能相近,主要取决于XML数据转换的速度。...

    axis2最新使用包

    在"axis2.rar"压缩包中,"plugins"目录可能包含了各种插件,这些插件可以扩展Axis2的功能,例如添加安全特性、数据绑定支持或与其他框架集成。 创建一个Axis2 Web服务的步骤大致如下: 1. **设置环境**:首先,你...

    axis2包 使用axis2开发webservice需要的jar包

    1. `axis2-adb.jar`:包含了Axis2的数据绑定(ADB)实现,用于自动序列化和反序列化Java对象和XML。 2. `axis2-kernel.jar`:核心运行库,包含处理SOAP消息和管理服务的基本组件。 3. `axis2-transport-...

    axis2 安装使用教程

    ### Axis2 安装使用教程 #### 一、软件准备 在正式开始之前,需要确保以下软件和资源已经准备就绪: 1. **开发环境**: - MyEclipse 9.0 - Tomcat 6.0 - JDK 6 2. **MyEclipse 插件**: - `axis2-eclipse-...

    Axis2 接口生成wsdl工具

    在Axis2中,可以通过编写Java接口并使用Apt(Annotation Processing Tool)或者Wsdl2Java工具来生成WSDL文件。WSDL文件是一个XML文档,详细描述了Web服务的接口、消息格式、操作和地址,使得客户端能够理解如何与...

    web service 使用 axis2 框架使用的插件

    在本主题中,我们将深入探讨如何使用Axis2框架以及它所涉及的关键插件。 1. **Axis2框架**:Axis2是构建和部署Web服务的核心框架,它支持SOAP 1.1、SOAP 1.2、RESTful服务,并且可以处理MTOM(Message Transmission...

    axis2-1.6.1.rar

    6. **数据绑定**:Axis2提供了数据绑定框架,如ADB(Axis Data Binding)、JAXB(Java Architecture for XML Binding)和XMLBeans,它们可以自动将XML消息转换为Java对象和反之亦然。 7. **扩展性**:Axis2支持许多...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    c# devexpress chartControl数据绑定例程

    本文将深入探讨如何在C#环境中使用DevExpress的ChartControl进行数据绑定,以创建交互式、丰富的数据图表。 1. **DevExpress ChartControl简介** DevExpress ChartControl是一款功能齐全的图表组件,它支持多种...

Global site tag (gtag.js) - Google Analytics