【问题标题】:Lightweight SOAP Client Library for Java [closed]用于 Java 的轻量级 SOAP 客户端库 [关闭]
【发布时间】:2010-03-09 17:01:36
【问题描述】:

谁能推荐一个好的 Java 开源库来构建一个简单的 SOAP Web 服务客户端?我正在寻找可以在 Java 5 SE 环境中工作的具有最小依赖项和配置的东西。升级到 Java 6 并不是这个项目的真正选择,如果可以避免的话,我宁愿避免使用完整的 J2EE 容器。我不需要发布和服务,只需要消费。

我目前正在使用 Axis2,但我必须提取大约 15MB 的额外 jar 才能对没有 NoClassDefFoundError 的 Web 服务进行简单的调用,并且我正在寻找一些膨胀更少的东西。

我也看过 CXF,但我不愿意使用它,因为它与 Spring 紧密耦合。 Spring 不是 100% 的交易破坏者,但如果可能的话,我宁愿避免它。

有什么建议吗?

【问题讨论】:

  • 它是嵌入式系统,还是你为什么关心 15MB,什么时候工作?
  • 所有额外的依赖都会增加部署时间,更重要的是从长远来看它不利于系统的可维护性。避免不必要的臃肿是我试图在软件开发的各个方面坚持的原则。我不会编写超过完成工作所需的代码,同样我不依赖于不需要的库。

标签: java soap


【解决方案1】:

试试简单的soap-ws库,非常好用。

一个轻量级且易于使用的 Java 库,用于在纯 XML 级别上处理 SOAP。

示例用法

 SoapClient client = SoapClient.builder()
    .endpointUri("http://example.com/endpoint")
    .build();

 client.post(envelope);

依赖

<dependency>
    <groupId>org.reficio</groupId>
    <artifactId>soap-client</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

来自存储库

<repository>
    <id>reficio</id>
    <url>http://repo.reficio.org/maven/</url>
</repository>

【讨论】:

  • 这个库还可以生产吗?
【解决方案2】:

在 Spring 3.0 中,他们将大 spring.jar 拆分为模块,这将减小大小。

查看Spring Web Services

WS Client Example

缺点是您必须管理很多 jar 之间的依赖关系,如果不想引入 maven,这可能会变得复杂。这就是我仍在使用轴的原因(其中包括兼容性问题)。

【讨论】:

  • 我很想介绍 Maven,但它超出了我的控制范围......听起来越来越像是 Spring 将成为阻力最小的路径。
  • 在研究了一段时间之后,spring 的实现似乎是唯一真正的选择,而无需使用 Axis 或 CXF 之类的东西。
【解决方案3】:

在研究了一段时间之后,原始 SAAJ API (https://saaj.dev.java.net/) 是我发现的唯一比构建在它之上的 Spring WS 库更精简的东西。 SAAJ 的问题在于它几乎无法使用,除非您愿意使用他们极其冗长的 API 来构建消息的 XML 有效负载。有一些方法可以解决这个问题并使用 JAXB 之类的东西来生成实际的消息内容,但它不是很干净,Spring WS 基本上就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2011-10-25
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多