Web services 在CXF中,为什么要使用JAXB以外的任何其他绑定?(MTOM附件、Aegis、XMLBeans等)

Web services 在CXF中,为什么要使用JAXB以外的任何其他绑定?(MTOM附件、Aegis、XMLBeans等),web-services,jaxb,cxf,xmlbeans,aegis,Web Services,Jaxb,Cxf,Xmlbeans,Aegis,我一直在使用ApacheCXF,特别是它支持的各种数据绑定:JAXB(默认)、MTOM、Aegis和XMLBeans。既然所有这些都得到了支持,我想每个都有其优点。我想到了这些: 显然,当涉及大型附件时,最好使用MTOM JAXB依赖于注释,因此当类的修改受到限制时,它不太适合 Aegis没有wsdl2java工具,因此它不太适合“契约优先”开发,即从WSDL开始并从中生成Java代码 Aegis似乎通过Class.Aegis.XML文件中的声明性语法对Java类和XML之间的映射提供了更多的

我一直在使用ApacheCXF,特别是它支持的各种数据绑定:JAXB(默认)、MTOM、Aegis和XMLBeans。既然所有这些都得到了支持,我想每个都有其优点。我想到了这些:

  • 显然,当涉及大型附件时,最好使用MTOM
  • JAXB依赖于注释,因此当类的修改受到限制时,它不太适合
  • Aegis没有
    wsdl2java
    工具,因此它不太适合“契约优先”开发,即从WSDL开始并从中生成Java代码
  • Aegis似乎通过Class.Aegis.XML文件中的声明性语法对Java类和XML之间的映射提供了更多的控制。另一方面,我无法设想JAXB没有做到这一点的任何场景
我发现这个问题与JAXB和XMLBeans并列,但并没有给出一个全面的概述:


除了这些天真的、先验的考虑之外,您是否有任何血脉和胆量的经验支持使用JAXB之外的任何其他绑定?我是从CXF的角度提出这个问题的,但是如果想到任何其他选项(例如Castor),请不要犹豫,请详细说明。

如果从零开始创建WSDL第一个web服务,那么我肯定会建议在95%的时间(甚至更高)坚持使用JAXB。它绝对是CXF中测试最好的数据绑定,性能相当好

其他数据绑定通常用于以下两种情况之一:

1) Java第一个用例,您已经用Java编写了一些东西,希望将其公开为web服务,而对代码几乎没有修改。Aegis在这方面有它的优势,因为它的设计能够处理比JAXB更广泛的事情。但是,如果可以修改代码,添加JAXB注释通常并不难。如果你有很多普通的“豆子”,那没什么大不了的

2) 使用特定映射的现有应用程序。如果您有需要XMLBeans的现有应用程序(如果使用CXF的2.3-SNAPSHOT,则为SDO beans,如果遵循GSoC项目,则为JiBX beans),那么使用其他数据绑定可以通过删除从JAXB到这些对象模型的任何所需映射来帮助您

希望这能有所帮助。

记住,有多种实现:(参考实现,(我是技术负责人)等等

JAXB可以从Java类或XML模式开始使用。如果您有无法修改的类,则个别JAXB实现提供扩展来处理该问题。请参阅MOXy的可外部化元数据:

JAXB设计用于处理MTOM附件请参见附件封送器/解封器

MOXy具有基于XPath的映射,可完全控制对象到XML的绑定。请参见: