2010-09-03 35 views
7

我一直在玩Apache CXF,特别是它支持的各种数据绑定:JAXB(默认),MTOM,Aegis和XMLBeans。既然所有这些都得到支持,我想每个人都有其优点。我想出了这些:在CXF中,为什么使用除JAXB之外的任何其他绑定? (MTOM附件,Aegis,XMLBeans,...)

  • 很明显,MTOM是优先考虑的地方涉及大型附件。
  • JAXB依赖于注释,所以当修改类受到限制时它不太适合。
  • Aegis没有wsdl2java工具,所以它不太适合“合同优先”的开发,即从WSDL开始并从中生成Java代码。
  • 似乎宙斯盾在类.aegis.xml文件提供通过其声明语法在Java类和XML之间的映射稍微控制。另一方面,我无法设想JAXB没有做到这一点。

我发现这个问题并列JAXB和XMLBeans的,但它没有给出一个全面的概述:

JAXB vs Apache XMLBeans

除了这些天真的,先验的考虑,你有任何血液 - 和 - 有没有经验可以支持除JAXB以外的任何其他绑定?我是从CXF的角度来问的,但是如果有其他选择的话(例如Castor),请不要犹豫,详细说明。

回答

3

如果从头开始创建WSDL第一个Web服务,那么我绝对会推荐在95%的时间内(或许更高)使用JAXB。这绝对是CXF中测试最好的数据绑定,表现相当出色。

当其他数据绑定进来通常是两种情况之一:

1),你已经用Java编写的,你要公开与小Web服务来进行任何修改的东西Java的第一个用例到代码。 Aegis在这里具有强大的优势,因为它旨在能够处理比JAXB更广泛的事物。但是,如果您可以修改代码,那么添加JAXB注释通常并不困难。如果你有大部分正常的“豆类”,这不是什么大不了的事情。

2)使用特定映射的现有应用程序。如果您的应用程序需要XMLBeans bean(或者如果使用2.3-SNAPSHOT CXF,则使用SDO bean,如果使用GSoC项目,则使用JiBX bean),那么使用其他数据绑定可以通过从JAXB移除所需的映射到这些对象模型。

希望有所帮助。

3

记住JAXB is a specification所以有多种实现:Metro(参考实现,MOXy(我是技术主管)等

JAXB从Java类或XML模式开始被使用如果你有课。无法修改个别JAXB implmentations提供扩展来处理该问题。见莫西的外部化的元数据:

JAXB的设计采用了MTOM附件见附件编组/解组工作。

莫西已经基于XPath的它提供了你的对象到XML绑定看到的完全控制映射:

相关问题