領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多經過大約六個月的開發,我很高興地宣佈 Spring Web Services 1.5.0 已釋出!在這篇文章中,我想介紹一些主要的新功能。
1.5 版本包含兩個新傳輸:JMS 和電子郵件。使用這些新傳輸無需更改 Java 程式碼:只需新增少量配置即可!JMS 傳輸與 Spring 2 的 訊息驅動 POJO 模型完美整合,如下面的配置片段摘自 airline 示例應用程式所示:
<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 可供您使用!有關更多詳細資訊,請參閱 airline 示例或 參考文件。
在客戶端,同樣簡單。將 WebServiceTemplate 配置為使用 JmsMessageSender,並指定一個jmsURL 來發送訊息。以下是一個示例,再次摘自 airline 示例:
<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 valuehttp://samples/RequestOrder它將呼叫getOrder()方法。有關更多詳細資訊,請參閱 stockquote 示例或 參考文件。
另一個不錯的新功能是,@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 配置以使用名稱空間。