2009-04-10 49 views
4

哪些Java SOAP XML对象序列化库,你会推荐为与其他平台/语言(.NET,德尔福)Java对象交换您推荐使用哪种SOAP XML对象序列化库?

通信场景看起来是这样的:

  • Java对象的作家 - > SOAP XML文本 - > .NET或Delphi对象读者
  • .NET或Delphi对象的作家 - > SOAP XML文本 - > Java的对象读者

我知道有XStream的的XML序列化库和JSON作为替代解决方案,但是由于德尔福和.Net都内置了支持SOAP XML序列化的对象,这将提供与支持“标准化”的方式用于高级功能嵌套对象,数组等。

编辑: 同时,我发现JAXB - (https://jaxb.dev.java.net/),JAXMe,并的JiBX - XML绑定到Java代码(http://jibx.sourceforge.net/)。但是默认情况下,它们不会生成SOAP序列化的XML。

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

+0

你见过这篇文章吗? http://java.dzone.com/announcements/asynchronous-object-exchange – 2009-04-10 15:59:23

回答

5

我喜欢JAX-WS(与JAXB 2.1数据绑定)在我用过的其他liberaries(JAX-RPC,轴1和2,但不是XFire的)。 JAXB 2数据绑定使用泛型,这使得maxoccurs> 1时的属性映射变得愉快。JAX-WS本身具有相当丰富的记录并提供了相当好的API。在某些情况下,方法和参数注释可能会略微失控 - 注释形式的XML地狱。它通常不是很糟糕。

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

+0

对于JAX-WS和JAXB为+1。有时你必须真正涉足注释,但最终我对结果非常满意 – 2009-04-13 19:12:01

0

这个标准库很可能是Apache Axis的1。我会建议使用axis2而不是1.4轴 - 尽管它工作得很好。

铭记的是,所有的SOAP扩展的互操作性做出的梦想只是......一个梦。

3

除了可以正常工作的Axis2之外,Sun的JAX-WS(版本2)和Apache CXF(nee XFire)值得一试,Soap是你的东西。 CXF可能是3中最成熟的,所以这是我最喜欢的,但所有3个都相当不错。

+0

对于axis2为+1,对于jax-ws为-1 – 2009-04-13 19:34:38

4

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

+0

CXF是我目前最喜欢的,新但功能非常丰富的 – mjn 2009-04-18 09:03:00

+0

很容易使用,并且您可以专注于您的java代码,并让CXF处理Web服务蹒跚。 – Martlark 2009-04-20 09:08:02

0

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

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

相关问题