2010-03-09 87 views
10

任何人都可以推荐一个好的Java开源库来构建简单的SOAP Web服务客户端吗?我正在寻找一些可以在Java 5 SE环境中工作的最小依赖和配置。升级到Java 6并不是真正的选择,如果我可以避免使用完整的J2EE容器,我宁愿避免使用它。我不需要发布和服务,只需要消耗。用于Java的轻量级SOAP客户端库

我目前正在使用Axis2,但我必须拉入大约15MB的额外jar才能在不发生NoClassDefFoundError的情况下简单调用Web服务,并且我正在寻找一些更少膨胀的东西。

我也看过CXF,但我不愿意使用它,因为它与Spring紧密耦合。春天不是一个100%的交易断路器,但我宁愿尽量避免它。

有什么建议吗?

+0

它是一个嵌入式系统,或者为什么你关心15MB,当工作的事情? – stacker 2010-03-09 20:25:14

+7

所有额外的依赖关系都会增加一个系统的部署时间,更重要的是,从长远来看,这对系统的可维护性是不利的。 避免不必要的膨胀是我尝试在软件开发的所有方面坚持的原则。我不写更多的代码来完成工作,同样我不依赖于不需要的库。 – 2010-03-09 22:41:17

回答

6

在Spring 3.0中,将大的spring.jar分解为可减小大小的模块。

检查Spring Web Services

WS Client Example

的缺点是,你需要管理很多罐子的这可以成为复杂的之间的依赖关系,如果不希望引入行家。这就是为什么我仍然在使用轴的原因(其中包括兼容性问题)。

+1

我很想介绍Maven,但它不在我的掌控之中......听起来越来越像Spring将成为阻力最小的路径。 – 2010-03-10 16:53:13

+0

如果有帮助,upvote怎么样? BTW http://xfire.codehaus.org/可能是您的另一种选择。 – stacker 2010-03-10 18:05:48

+0

经过一段时间的研究之后,Spring的实现似乎是唯一的选择,而不需要像Axis或CXF那样的东西。 – 2010-04-05 18:17:11

1

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

10

尝试简单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> 
+1

方法名称中存在拼写错误/更改:'.endpointUrl' - >'.endpointUri' – loopasam 2015-01-27 13:25:52