在CXF中,为什么要使用除JAXB之外的任何其他绑定?(MTOM附件,Aegis,XMLBeans,......)

Lás*_*oek 7 web-services cxf xmlbeans jaxb aegis

我一直在使用Apache CXF,特别是它支持的各种数据绑定:JAXB(默认),MTOM,Aegis和XMLBeans.由于所有这些都得到了支持,我认为每个都有它的优点.我想出了这些:

  • 显然,MTOM是首选涉及大型附件的地方.
  • JAXB依赖于注释,因此在限制类的修改时它不太适合.
  • Aegis没有wsdl2java工具,所以它不太适合"契约优先"开发,即从WSDL开始并从中生成Java代码.
  • 似乎是神盾提供了通过在其声明语法的Java类和XML之间的映射稍微控制 .aegis.xml文件.另一方面,我无法设想JAXB没有做到这一点的任何场景.

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

JAXB与Apache XMLBeans

除了这些天真的,先验的考虑之外,你是否有任何血腥经验可以支持使用除JAXB之外的任何其他绑定?我是从CXF的角度问的,但如果想到任何其他选择(例如Castor),请不要犹豫,详细说明.

Dan*_*ulp 4

如果从头开始创建第一个 WSDL Web 服务,那么我绝对会建议 95% 的时间(甚至更高)坚持使用 JAXB。它绝对是 CXF 中经过测试最好的数据绑定,并且性能非常好。

其他数据绑定的出现通常是针对以下两种情况之一:

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

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

希望能有所帮助。