Quick Start URL: http://projects.spring.io/spring-ws/
继承了Spring文档驱动服务的理念,Spring-WS旨在促进合同为先的SOAP服务的开发。允许创建灵活的Web服务,使用许多方法来处理xml的有效载荷。由于是基于Spring本身的,这就意味着可以使用Spring的一些概念,比如依赖和注入。
以下是一段翻译成中文有些蹩脚的话:
People use Spring-WS for many reasons, but most are drawn to it after finding alternative SOAP stacks lacking when it comes to following Web service best practices. Spring-WS makes the best practice an easy practice. This includes practices such as the WS-I basic profile, Contract-First development, and having a loose coupling between contract and implementation. The other key features of Spring Web services are:
人们使用Spring-WS有许多原因,但大多数是在涉及到web服务最佳策略的时候发现它可以取代SOAP的堆栈缺陷之后被它吸引了。Spring-WS使用最好的策略作为一个简单的策略。这里所包含的策略有WS-I基本概要,合同优先开发策略,合同和实施之间的松散耦合策略。其它的一些功能如下:
功能:
- 使用最佳策略作为一个简单的策略:Spring-WS的策略使得实施最佳策略的方式更容易。
- 可以使用spring依赖、注入的功能
- 强有力的映射:可以将传入的XML请求分发到任何对象,具体取决于消息的有效载荷,SOAP的Action头或者XPath的表达式。
- XML API支持:传入的XML消息可以在标准的JAXP API(如DOM,SAX和STAX)中处理,也可以在JDOM,dom4j,XMO,甚至是编组技术中处理。
- 灵活的XML编组:Spring Web Services分发中的对象,XML映射模块支持JAXB 1和2, Castor, SMLBeans, JiBX和XStream。并且因为它是一个单独的模块,您也可以在非web服务的代码中使用它。
- 使用Spring的专长:Spring-WS使用Spring应用程序上下文进行所有的配置,这将有助于Spring开发人员快速上手。此外,Spring-WS的架构类似于Spring-MVC的体系架构。
- 支持WS-Security:WS-Security允许您签署SOAP消息,对其进行加密解密,或对其进行身份验证。
- 与Acegi Security集成:Spring Web Service的WS-Security实现提供哪与Spring Security个集成。这意味着您也可以将您现有的配置用于SOAP服务。
- 由Maven构建:这有助于您有
- Apache许可证。您可以自信地在您的项目中使用Spring-WS。
Maven依赖:
<dependencies>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.4.1.BUILD-SNAPSHOT</version>
</dependency>
</dependencies><repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/libs-snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
配置Spring-WS客户端
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="webServiceClient" class="WebServiceClient">
<property name="defaultUri" value="http://localhost:8080/WebService"/>
</bean>
</beans>
注入并使用WebService模板
public class WebServiceClient {
private static final String MESSAGE =
"<message xmlns=\"http://tempuri.org\">Hello World</message>";
private final WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
public void setDefaultUri(String defaultUri) {
webServiceTemplate.setDefaultUri(defaultUri);
}
// send to the configured default URI
public void simpleSendAndReceive() {
StreamSource source = new StreamSource(new StringReader(MESSAGE));
StreamResult result = new StreamResult(System.out);
webServiceTemplate.sendSourceAndReceiveToResult(source, result);
}
// send to an explicit URI
public void customSendAndReceive() {
StreamSource source = new StreamSource(new StringReader(MESSAGE));
StreamResult result = new StreamResult(System.out);
webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:8080/AnotherWebService",
source, result);
}
}