领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多经过大约六个月的开发,我很高兴地宣布 Spring Web Services 1.5.0 已经发布!在这篇文章中,我想介绍一些主要的新的特性。
1.5 版本包含两种新的传输方式:JMS 和电子邮件。使用这些新的传输方式不需要更改 Java 代码:只需添加一些配置即可!JMS 传输与 Spring 2 的 消息驱动 POJO 模型很好地集成,如下面的航空公司示例应用程序中的配置片段所示
<jms:listener-container connection-factory="connectionFactory">
<jms:listener destination="RequestQueue" ref="messageListener"/>
</jms:listener-container>
<bean id="messageListener" class="org.springframework.ws.transport.jms.WebServiceMessageListener">
<property name="messageFactory" ref="messageFactory"/>
<property name="messageReceiver" ref="messageReceiver"/>
</bean>
除了标准的 JMS 配置(连接工厂和要监听的目标名称)之外,您只需要定义一个 WebServiceMessageListener,并为其提供您正在使用的消息工厂(通常是 SaajSoapMessageFactory)和消息分发器的引用。如果您仍然停留在 EJB 领域,甚至还有一个 MessageDrivenBean 供您使用!请查看航空公司示例或 参考文档 以了解更多详细信息。
在客户端,同样简单。将 WebServiceTemplate 配置为使用 JmsMessageSender,并指定一个jmsURL 来发送消息。这是一个示例,同样取自航空公司示例
<bean id="jmsClient" class="org.springframework.ws.samples.airline.client.jms.JmsClient">
<property name="defaultUri" value="jms:RequestQueue"/>
<property name="messageSenders">
<bean class="org.springframework.ws.transport.jms.JmsMessageSender">
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
</property>
</bean>
除了 JMS 传输之外,Spring Web Services 1.5 还引入了电子邮件传输,从而符合 Zawinski 软件膨胀定律 ;)。此传输方式将轮询您的 POP3 或 IMAP 服务器以查找新邮件,或者 — 如果您的服务器支持 — 使用 IMAP IDLE 命令异步接收新邮件。
另一个新特性是基于 Apache WSS4J 的 WS-Security 实现。在 1.0 版本中,Spring Web Services 已经有一个基于 SUN XWSS 的 WS-Security 实现,但是这需要 Java 1.5,并且仅适用于 SUN JDK。基于 WSS4J 的解决方案适用于 JDK 1.4(与 Spring-WS 的其余部分一样),也适用于 WebSphere 使用的 IBM JDK。
请参阅 参考文档 以了解更多详细信息。
您可以通过 XML、应用程序上下文或注释配置 WS-Addressing
package samples;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.soap.addressing.server.annotation.Action
@Endpoint
public class AnnotationOrderEndpoint {
private final OrderService orderService;
public AnnotationOrderEndpoint(OrderService orderService) {
this.orderService = orderService;
}
@Action("http://samples/RequestOrder")
public Order getOrder(OrderRequest orderRequest) {
return orderService.getOrder(orderRequest.getId());
}
@Action("http://samples/CreateOrder")
public void order(Order order) {
orderService.createOrder(order);
}
}
在这种情况下,如果传入的 WS-Addressing 消息带有Actionheader 值http://samples/RequestOrder它将调用getOrder()方法。您可以查看股票报价示例或 参考文档 以了解更多详细信息。
另一个简洁的新特性是 @Endpoints 现在用 @Component 进行注解,因此如果您使用 Spring 2.5 的 组件扫描,**您的端点将自动被拾取**,不需要 XML 配置!对于 Spring-WS 组件的配置,我们现在提供两个新的命名空间,用于配置 OXM 编组器和其他常用结构。例如,以下是 JAXB2 编组器的配置
<oxm:jaxb2-marshaller id="marshaller" contextPath="org.springframework.ws.samples.airline.schema"/>
Spring Web Services 1.5 还引入了以下其他新特性
如果您想试用 Spring Web Services 1.5,您可以访问 网站,或直接访问 下载部分。
2008-04-18 更新:将 JMS 配置更改为使用命名空间。