你会推荐哪个Java SOAP XML对象序列化库?

3
我应该推荐哪个Java SOAP XML对象序列化库,用于与其他平台/语言(.NET、Delphi)进行Java对象交换?
通信场景可能如下:
- Java对象编写器 -> SOAP XML文本 -> .NET或Delphi对象读取器 - .NET或Delphi对象编写器 -> SOAP XML文本 -> Java对象读取器
我知道有XStream XML序列化库和JSON作为替代解决方案,但由于Delphi和.Net内置支持SOAP XML序列化对象,这将提供一种“标准化”的方式,支持嵌套对象、数组等高级功能。
编辑: 同时,我找到了JAXB - (https://jaxb.dev.java.net/)、JAXMe和JiBX - Binding XML to Java Code(http://jibx.sourceforge.net/)。但它们不会默认生成SOAP序列化的XML。
一种可能的解决方案是一个能够在没有HTTP服务器的情况下运行,并为SOAP XML内容(不是完整的请求,只是序列化对象)提供简单文件接口的Web服务库。 Axis 2CXF看起来非常有趣。

你看过这篇文章吗?http://java.dzone.com/announcements/asynchronous-object-exchange - Scott W
5个回答

5
我更喜欢使用JAX-WS(带有JAXB 2.1数据绑定),而不是其他库(如JAX-RPC、Axis 1和2,但不包括XFire)。JAXB 2数据绑定使用泛型,可以很好地映射具有maxoccurs> 1的属性。 JAX-WS本身有相当好的文档,并提供了一个相当不错的API。在某些情况下,方法和参数注释可能会变得有点复杂 - 在注释形式下成为XML地狱。通常情况下并不会太糟糕。
JAX-WS堆栈的一个好处是项目Metro,它与微软一起开发,并与.NET 3.0的Web服务支持进行互操作,甚至实现了可行的MTOM。

+1 对于JAX-WS和JAXB。有时你必须真的涉足注释,但最终我对结果非常满意。 - Martin Lazar

4
我建议使用 CXF。它是一个非常好的服务栈,包括JAXB数据绑定和JAX-WS支持。如果您需要更高级的消息转换和路由,您可能需要查看像Mule这样的开源集成平台,它包括CXF(还支持Axis和XStream)。它很轻量级,可以嵌入或在没有应用服务器的情况下运行。

目前来说,CXF 是我最喜欢的,它很新,但功能非常丰富。 - mjn
非常易于使用,您只需专注于编写Java代码,让CXF处理Web服务的繁琐细节。 - Martlark

3
除了工作良好的Axis2之外,Sun的JAX-WS(版本2)和Apache CXF(原名XFire)也值得一试,如果Soap是你的菜的话。CXF可能是这3个中最成熟的,所以它是我的最爱,但这3个都相当不错。

0

这方面的标准库可能是Apache Axis1。我建议使用axis2而不是axis 1.4-尽管它的工作效果相当不错。

请记住,所有SOAP扩展都使得互操作性成为了一个梦想。


0

我认为你已经回答了自己的问题。

XStream(输出为JSON)是一个很好的清洁解决方案。如果你使用类型别名,你就可以得到一个干净的输出格式。之后,无论你使用哪种SOAP堆栈,只要它与Delphi/.NET良好地互操作即可。


我建议不要这样做。XStream是一个很好的库,用于将POJO序列化为xml,但如果想使用SOAP(当然,JSON作为格式也是一样),它就不是很适合了。 - StaxMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接