我一直在使用Apache CXF,特别是它支持的各种数据绑定:JAXB(默认),MTOM,Aegis和XMLBeans。由于所有这些都得到了支持,我认为每个都有它的优点。我想出了这些:
wsdl2java
工具,所以它不太适合“契约优先”开发,即从WSDL开始并从中生成Java代码。我发现这个问题并列JAXB和XMLBeans,但它没有提供全面的概述:
除了这些天真的,先验的考虑之外,你是否有任何血腥经验可以支持使用除JAXB之外的任何其他绑定?我是从CXF的角度问的,但如果想到任何其他选择(例如Castor),请毫不犹豫地详细说明。
答案 0 :(得分:3)
如果从头开始创建WSDL第一个Web服务,那么我肯定会建议在95%的时间内坚持使用JAXB(可能更高)。它绝对是CXF中经过最佳测试的数据绑定,表现相当不错。
其他数据绑定进入的地方通常是两种情况之一:
1)Java首次使用的情况是,您已经使用Java编写了一些您希望作为Web服务公开的内容,几乎不需要修改代码。 Aegis在这方面具有优势,因为它的设计能够处理比JAXB更广泛的事物。但是,如果您可以修改代码,添加JAXB注释通常不是那么难。如果你有大多数正常的“豆子”,这不是什么大问题。
2)使用特定映射的现有应用程序。如果你有期待XMLBeans bean的exice应用程序(如果使用2.3-SNAPSHOT的CXF,则为SDO bean,或者如果遵循GSoC项目则使用JiBX bean),那么使用其他数据绑定可以帮助从JAXB删除任何所需的映射到这些对象模型。
希望有所帮助。
答案 1 :(得分:3)
请记住JAXB is a specification因此有多种实施方式:Metro(参考实施,MOXy(我是技术主管)等。
可以从Java类或XML模式开始使用JAXB。如果您有无法修改的类,则单个JAXB实现提供扩展来处理该类。请参阅MOXy的可外部化元数据:
JAXB旨在与MTOM附件一起使用,请参阅附件marshaller / unmarshaller。
MOXy具有基于XPath的映射,可以完全控制对象到XML的绑定,请参阅: