3

对于与其他平台/语言(.NET、Delphi)的Java 对象交换,您会推荐哪个 Java SOAP XML 对象序列化库?

通信场景可能如下所示:

  • Java 对象编写器 -> SOAP XML 文本 -> .NET 或 Delphi 对象读取器
  • .NET 或 Delphi 对象编写器 -> SOAP XML 文本 -> Java 对象读取器

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

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

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

4

5 回答 5

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。

于 2009-04-13T18:29:53.167 回答
4

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

于 2009-04-18T05:35:23.110 回答
3

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

于 2009-04-11T00:53:31.507 回答
0

用于此的标准库可能是 Apache Axis 1。我建议使用axis2而不是axis 1.4-虽然它工作得很好。

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

于 2009-04-11T00:17:04.857 回答
0

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

XStream(输出为 JSON)是一个很好的干净的解决方案。如果您为类型加上别名,您将获得干净的输出格式。之后,使用哪个 SOAP 堆栈就无关紧要了,只要它很好并且可以与 Delphi/.NET 互操作即可。

于 2009-04-18T22:45:55.363 回答