您建议使用哪个Java XML对象序列化库?

时间:2009-04-10 08:22:06

标签: java .net delphi xml-serialization soap-serialization

您建议使用哪种Java SOAP XML对象序列化库 Java对象交换与其他平台/语言(.NET,Delphi)?

通信场景可能如下所示:

  • 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 - 将XML绑定到Java代码({{3} })。但是默认情况下它们不会生成SOAP序列化的XML。

一个可能的解决方案是一个Web服务库,它能够在没有HTTP服务器的情况下运行,并为SOAP XML内容提供简单的文件接口(不是完整的请求,只是一个序列化的对象)。 Axis 2 CXF 看起来非常有趣。

5 个答案:

答案 0 :(得分:5)

我更喜欢JAX-WS(使用JAXB 2.1数据绑定)而不是我使用的其他库(JAX-RPC,Axis 1和2,但不是XFire)。 JAXB 2数据绑定使用泛型,这使得属性的愉快映射具有maxoccurs> 1. JAX-WS本身有相当好的文档记录,并提供了相当不错的API。在某些情况下,方法和参数注释可能会有点失控 - 注释形式的XML地狱。它通常不是那么糟糕。

JAX-WS堆栈的一个不错的方面是项目Metro,Sun与Microsoft共同开发并与Web服务支持.NET 3.0很好地互操作,甚至可以以可行的方式实现MTOM。 / p>

答案 1 :(得分:4)

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

答案 2 :(得分:3)

除了运行正常的Axis2之外,Sun的JAX-WS(版本2)和Apache CXF(nee XFire)值得一试,它就是你的东西。 CXF可能是3中最成熟的,所以这是我的最爱,但所有3都非常好。

答案 3 :(得分:0)

此标准库可能是Apache Axis 1。我会建议使用axis2而不是轴1.4-虽然效果很好。

请记住,所有的SOAP扩展都使互操作性的梦想成为......梦想。

答案 4 :(得分:0)

我想你已回答了自己的问题。

XStream(以JSON格式输出)是一个很好的干净解决方案。如果您使用别名类型,则会获得干净的输出格式。之后,使用哪个SOAP堆栈并不重要,只要它与Delphi / .NET很好并且可以互操作。