javascript
带有Spring和Maven教程的JAX–WS
Spring框架通過(guò)JAX-WS提供對(duì)Web服務(wù)的遠(yuǎn)程支持,實(shí)際上,如Spring 參考文檔中所述 ,有三種將Spring POJO服務(wù)公開(kāi)為JAX-WS Web服務(wù)的方式:
選擇上述三種方法之一主要取決于您的執(zhí)行環(huán)境。 話雖如此,我們將向您展示如何使用上述所有方法來(lái)設(shè)置和公開(kāi)一個(gè)簡(jiǎn)單的Spring服務(wù)。
我們首選的開(kāi)發(fā)環(huán)境是Eclipse ,因此,必須先安裝具有Maven支持的Eclipse 。 用于Eclipse的Maven插件的安裝不在本教程的討論范圍內(nèi),因此將不予討論。 但是,您將需要以下組件:
在本教程中,我們將使用Eclipse Galileo,“ m2eclipse” Maven Integration for Eclipse插件版本0.10.0和Spring版本3.0.1。
讓我們開(kāi)始,
讓我們回顧一下有關(guān)Maven Web項(xiàng)目結(jié)構(gòu)的一些事情
這里要注意的一件事是,我們選擇使用兼容Java EE6的 Maven項(xiàng)目原型。 我們的選擇是有目的的,以便易于演示上述所有可用方法。 不過(guò),即使您使用其他環(huán)境(例如獨(dú)立的Servlet環(huán)境(例如Apache Tomcat)或Java EE 5兼容的應(yīng)用程序服務(wù)器(例如JBoss Application Server)),也可以按照本教程將Spring服務(wù)作為JAX-WS服務(wù)公開(kāi)。
為了在運(yùn)行時(shí)正確使用Spring ,我們必須向Web應(yīng)用程序提供所有必需的庫(kù)。 打開(kāi)“ pom.xml”的圖形編輯器并執(zhí)行以下更改:
- 創(chuàng)建一個(gè)名稱(chēng)為org.springframework.version且值為3.0.1.RELEASE的新屬性
- 導(dǎo)航到POM編輯器的“ Dependencies”頁(yè)面,并創(chuàng)建以下依賴(lài)關(guān)系(您應(yīng)在該頁(yè)面的“ Dependency Details”部分的“ GroupId”,“ Artifact Id”和“ Version”字段中進(jìn)行填充):
- 組ID: org.springframework工件ID: spring-web版本: $ {org.springframework.version}
 - 如您所見(jiàn), Maven以聲明方式管理庫(kù)依賴(lài)關(guān)系。 創(chuàng)建本地存儲(chǔ)庫(kù)(默認(rèn)情況下,位于{user_home} /。m2文件夾下),所有必需的庫(kù)都從公共存儲(chǔ)庫(kù)下載并放置在該庫(kù)中。 此外,庫(kù)內(nèi)的依賴(lài)關(guān)系會(huì)自動(dòng)解決和處理。 - 下一步是為Web應(yīng)用程序提供掛鉤,以便在啟動(dòng)時(shí)加載Spring上下文。 - 在/ src / main / webapp文件夾下創(chuàng)建一個(gè)“ WEB-INF /web.xml”文件,并添加以下內(nèi)容: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>jaxwsspring</display-name><session-config><session-timeout>30</session-timeout></session-config><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> </web-app>- 現(xiàn)在讓我們創(chuàng)建將驅(qū)動(dòng)Spring容器的applicationContext.xml文件。 在/ src / main / webapp / WEB-INF目錄下創(chuàng)建文件。 下面是一個(gè)示例“ applicationContext.xml”: <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"><context:component-scan base-package="com.javacodegeeks.jaxwsspring" /></beans>- 這里要注意的事情: 
- 將context:component-scan元素的base-package屬性更改為項(xiàng)目的基本包,以便掃描Spring組件
- 修改我們的“ GreetingServiceEndpoint”類(lèi)以擴(kuò)展Spring的“ SpringBeanAutowiringSupport”類(lèi)。 這樣,將兌現(xiàn)@Autowired批注,Spring的IoC容器將能夠?qū)?shí)際的“ greeting”服務(wù)實(shí)例注入到我們的終結(jié)點(diǎn)類(lèi)中,以正確地委派調(diào)用。
- 我們的“ GreetingServiceEndpoint”需要在與Spring上下文相同的Web應(yīng)用程序中運(yùn)行,以允許訪問(wèn)Spring的設(shè)施。 在Java EE 5環(huán)境中,默認(rèn)情況下就是這種情況,它使用JAX-WS Servlet端點(diǎn)部署的標(biāo)準(zhǔn)協(xié)定。
- 端點(diǎn)是在服務(wù)器端JAX-WS實(shí)現(xiàn)中注冊(cè)的類(lèi)。 對(duì)于Java EE 5服務(wù)器,可以簡(jiǎn)單地將其定義為“ web.xml”中的Servlet ,服務(wù)器檢測(cè)到這是一個(gè)JAX–WS端點(diǎn),并做出相應(yīng)的反應(yīng)。 Servlet名稱(chēng)通常需要與指定的Web服務(wù)服務(wù)名稱(chēng)匹配。
- GreetingServiceEndpoint可以從Spring的“ SpringBeanAutowiringSupport”派生而來(lái),但不必這樣做,因?yàn)樵摱它c(diǎn)是完全由Spring管理的bean <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"><context:component-scan base-package="com.javacodegeeks.jaxwsspring" /><bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"><property name="baseAddress" value="http://localhost:9999/" /></bean></beans>
- 將context:component-scan元素的base-package屬性更改為項(xiàng)目的基本包,以便掃描Spring組件
- 您可以更改“ SimpleJaxWsServiceExporter”的“ baseAddress”屬性以適合您的需求。 “ baseAddress”是將導(dǎo)出所有檢測(cè)到的Web服務(wù)的地址。 默認(rèn)的“ baseAddress”是“ http:// localhost:8080 /”
- 在POM編輯器的“概述”頁(yè)面上的“屬性”部分中找到,并刪除名稱(chēng)為org.springframework.version的屬性(如果存在的話)–如果您從一開(kāi)始就遵循此教程
- 導(dǎo)航到POM編輯器的“ Dependencies”頁(yè)面,并創(chuàng)建以下依賴(lài)關(guān)系(您應(yīng)在該頁(yè)面的“ Dependency Details”部分的“ GroupId”,“ Artifact Id”和“ Version”字段中進(jìn)行填充):
- 組ID: org.jvnet.jax-ws-commons.spring工件ID: jaxws-spring版本: 1.8
- 自撰寫(xiě)本文以來(lái), jaxws-spring庫(kù)的最新版本( 1.8 )的“ pom”文件中存在依賴(lài)項(xiàng)聲明缺陷。 特別是對(duì)于jaxb-impl的2.1.2版本,不必要的依賴(lài)聲明會(huì)導(dǎo)致代碼中斷。 要解決此問(wèn)題,必須為jaxb-impl庫(kù)的特定版本配置排除項(xiàng)。 為此,選擇新創(chuàng)建的依賴(lài)項(xiàng),找到編輯器頁(yè)面的“排除項(xiàng)”部分,然后如下所示創(chuàng)建排除項(xiàng):
- 組ID: com.sun.xml.bind工件ID: jaxb-impl
 
- 另外,為jaxb-impl庫(kù)的2.1.6版本創(chuàng)建另一個(gè)顯式依賴(lài)項(xiàng),如下所示:
- 組ID: com.sun.xml.bind工件ID: jaxb-impl版本: 2.1.6
 
- 最后但并非最不重要的一點(diǎn)是,我們必須配置兩個(gè)新的存儲(chǔ)庫(kù),以便Maven能夠下載項(xiàng)目依賴(lài)項(xiàng)。 導(dǎo)航到POM編輯器的“存儲(chǔ)庫(kù)”頁(yè)面,并創(chuàng)建以下存儲(chǔ)庫(kù):
- ID: download.java.net存儲(chǔ)庫(kù)1 URL: http : //download.java.net/maven/1/布局: 舊版
- ID: download.java.net存儲(chǔ)庫(kù)2 URL: http : //download.java.net/maven/2/
 - 要使用這種方法,我們必須遵循以下步驟: - 找到“ web.xml”文件,并通過(guò)定義主要的JAX-WS Servlet以及我們要作為Web服務(wù)公開(kāi)的服務(wù)所需的Servlet映射,來(lái)對(duì)其進(jìn)行更改; 每個(gè)服務(wù)一個(gè)Servlet映射。 因此,對(duì)于我們的特定測(cè)試用例,我們應(yīng)該添加以下聲明: <servlet><servlet-name>jaxws-servlet</servlet-name><servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class></servlet><servlet-mapping><servlet-name>jaxws-servlet</servlet-name><url-pattern>/GreetingService</url-pattern></servlet-mapping>- 更改“ applicationContext.xml”文件,如下所示: <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ws="http://jax-ws.dev.java.net/spring/core"xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://jax-ws.dev.java.net/spring/corehttp://jax-ws.dev.java.net/spring/core.xsdhttp://jax-ws.dev.java.net/spring/servlethttp://jax-ws.dev.java.net/spring/servlet.xsd"><wss:binding url="/GreetingService"><wss:service><ws:service bean="#greetingService" /></wss:service></wss:binding><bean id="greetingService" class="com.javacodegeeks.jaxwsspring.services.GreetingService" /></beans>- 這里要注意的事情: 
- 這種方法是特定于Spring 2.0的 ,因此已創(chuàng)建了與Spring 2.0兼容的“ applicationContext.xml”文件。 請(qǐng)注意,由于@Service注釋在Spring 2.0中不可用,因此我們直接在“ applicationContext.xml”文件中聲明了“問(wèn)候” Spring服務(wù)bean。
- wss:binding定義定義將哪些服務(wù)公開(kāi)到URL空間的哪一部分。 在上面的代碼中,它在/ GreetingService URL上部署了“ GreetingService”
- ws:service定義實(shí)現(xiàn)一個(gè)Web服務(wù)實(shí)例。 最簡(jiǎn)單的形式應(yīng)該配置bean屬性,以便將所有調(diào)用委托給指定的Spring bean。 如您所見(jiàn),使用這種方法我們可以省略創(chuàng)建“端點(diǎn)”類(lèi)來(lái)代理我們的Spring服務(wù)。
- 如果使用的是“ Style.DOCUMENT ”,則應(yīng)運(yùn)行“ wsgen ”工具。 “ Style.RPC ”僅用于演示目的。
- @Service批注在Spring 2.0中不可用,因此我們直接在“ applicationContext.xml”文件中聲明
- GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
- GWT Spring和Hibernate進(jìn)入數(shù)據(jù)網(wǎng)格世界
- Spring 3 HornetQ 2.1集成教程
- Spring3 RESTful Web服務(wù)
- GWT 2 Spring 3 JPA 2 Hibernate 3.5教程– Eclipse和Maven 2展示
現(xiàn)在讓我們創(chuàng)建一個(gè)“問(wèn)候” Spring服務(wù)。 在主程序包下創(chuàng)建一個(gè)名為“服務(wù)”的子程序包,并將“ GreetingService”類(lèi)放在此處。 下面是一個(gè)示例“問(wèn)候”服務(wù):
package com.javacodegeeks.jaxwsspring.services;import org.springframework.stereotype.Service;@Service("greetingService") public class GreetingService {public String sayHello() {return "Hello from Greeting Service";}}JAX–WS需要使用專(zhuān)用的端點(diǎn)類(lèi)。 如果需要導(dǎo)出現(xiàn)有服務(wù),則包裝器類(lèi)是最簡(jiǎn)單的JAX–WS兼容方法。 現(xiàn)在創(chuàng)建一個(gè)“問(wèn)候”端點(diǎn)類(lèi)。 在主程序包下創(chuàng)建一個(gè)名為“ endpoints”的子程序包,并將“ GreetingServiceEndpoint”類(lèi)放在此處。 下面是一個(gè)示例“問(wèn)候”端點(diǎn)類(lèi):
package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod; import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired;import com.javacodegeeks.jaxwsspring.services.GreetingService;@WebService(serviceName="GreetingService") public class GreetingServiceEndpoint {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}如您所見(jiàn),這是一個(gè)與JAX–WS兼容的“ greeting”服務(wù)實(shí)現(xiàn),僅委托給“ GreetingService”實(shí)現(xiàn)。 這是將在JAX-WS引擎中注冊(cè)的類(lèi)。 對(duì)于Java EE 5服務(wù)器(基于Servlet的Web服務(wù)方法),Web服務(wù)引擎管理端點(diǎn)類(lèi)實(shí)例的生命周期。 在其他兩種情況下,端點(diǎn)實(shí)例是作為Spring Bean本身定義和管理的,因此它們的生命周期將取決于Spring應(yīng)用程序上下文。
Spring為JAX-WS Servlet端點(diǎn)實(shí)現(xiàn)提供了一個(gè)方便的基類(lèi)-“ SpringBeanAutowiringSupport”。 要將我們的“ GreetingService”公開(kāi)為基于Servlet的Web服務(wù),我們必須執(zhí)行以下操作:
請(qǐng)牢記以上幾點(diǎn),如下所示更改端點(diǎn)類(lèi):
package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod; import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.support.SpringBeanAutowiringSupport;import com.javacodegeeks.jaxwsspring.services.GreetingService;@WebService(serviceName="GreetingService") public class GreetingServiceEndpoint extends SpringBeanAutowiringSupport {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}最后,將以下Servlet聲明添加到“ web.xml”中:
<servlet> <servlet-name>GreetingService</servlet-name> <servlet-class> com.javacodegeeks.jaxwsspring.endpoints.GreetingServiceEndpoint</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingService</servlet-name> <url-pattern>/GreetingService</url-pattern> </servlet-mapping>要構(gòu)建應(yīng)用程序,請(qǐng)右鍵單擊您的項(xiàng)目? 運(yùn)行為? Maven包
要部署Web應(yīng)用程序,只需將“ .war”文件從“ target”目錄復(fù)制到Java EE 5服務(wù)器Web應(yīng)用程序部署文件夾。 在本教程中,我們將Web應(yīng)用程序部署到JBoss 5.1.0 Application Server。
要啟動(dòng)該應(yīng)用程序,請(qǐng)將瀏覽器指向以下地址
http:// localhost:8080 / jaxwsspring /
如果一切順利,您應(yīng)該會(huì)看到顯示以下內(nèi)容的主網(wǎng)頁(yè):
“你好,世界!”
我們的網(wǎng)絡(luò)服務(wù)地址應(yīng)位于:
http:// localhost:8080 / jaxwsspring / GreetingService
如果將瀏覽器指向以下位置,則可以查看我們的Web服務(wù)WSDL:
http:// localhost:8080 / jaxwsspring / GreetingService?wsdl
結(jié)果應(yīng)如下所示:
<definitions name="GreetingService" targetNamespace="http://endpoints.jaxwsspring.javacodegeeks.com/"><types><xs:schema targetNamespace="http://endpoints.jaxwsspring.javacodegeeks.com/" version="1.0"><xs:element name="sayHello" type="tns:sayHello"/><xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/><xs:complexType name="sayHello"><xs:sequence/></xs:complexType><xs:complexType name="sayHelloResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="xs:string"/></xs:sequence></xs:complexType></xs:schema></types><message name="GreetingServiceEndpoint_sayHello"><part element="tns:sayHello" name="sayHello"/></message><message name="GreetingServiceEndpoint_sayHelloResponse"><part element="tns:sayHelloResponse" name="sayHelloResponse"/></message><portType name="GreetingServiceEndpoint"><operation name="sayHello" parameterOrder="sayHello"><input message="tns:GreetingServiceEndpoint_sayHello"/><output message="tns:GreetingServiceEndpoint_sayHelloResponse"/></operation></portType><binding name="GreetingServiceEndpointBinding" type="tns:GreetingServiceEndpoint"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="sayHello"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="GreetingService"><port binding="tns:GreetingServiceEndpointBinding" name="GreetingServiceEndpointPort"><soap:address location="http://127.0.0.1:8080/jaxwsspring/GreetingService"/></port></service> </definitions>現(xiàn)在我們有了Web服務(wù)定義,我們可以使用我們最喜歡的SOAP客戶(hù)端(生成或?qū)崿F(xiàn)一個(gè))來(lái)調(diào)用“問(wèn)候” Web服務(wù)的操作。 訪問(wèn)Web服務(wù)不在本教程的討論范圍內(nèi),因此我們將不再對(duì)其進(jìn)行討論。 不過(guò),我們將提供一個(gè)示例請(qǐng)求–使用我們首選的Web服務(wù)測(cè)試工具soapUI調(diào)用“ GreetingService”的“ sayHello”操作時(shí)的響應(yīng)對(duì)話框
soapUI工具發(fā)布的SOAP請(qǐng)求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoints.jaxwsspring.javacodegeeks.com/"><soapenv:Header/><soapenv:Body><end:sayHello/></soapenv:Body> </soapenv:Envelope>從“ greeting” Web服務(wù)接收到的相關(guān)SOAP響應(yīng):
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns2:sayHelloResponse xmlns:ns2="http://endpoints.jaxwsspring.javacodegeeks.com/"><return>Hello from Greeting Service</return></ns2:sayHelloResponse></env:Body> </env:Envelope>如上所述,Sun的JDK 1.6附帶的內(nèi)置JAX-WS提供程序也支持使用JDK 1.6附帶的內(nèi)置HTTP服務(wù)器公開(kāi)Web服務(wù)。 Spring的“ SimpleJaxWsServiceExporter”在Spring應(yīng)用程序上下文中檢測(cè)所有帶@WebService注釋的bean,并通過(guò)默認(rèn)的JAX–WS服務(wù)器(JDK 1.6 HTTP服務(wù)器)將其導(dǎo)出。
在這種情況下,終結(jié)點(diǎn)實(shí)例被定義和管理為Spring bean本身。 它們將在JAX-WS引擎中注冊(cè),但是它們的生命周期將取決于Spring應(yīng)用程序上下文。 這意味著可以將Spring功能(例如顯式依賴(lài)項(xiàng)注入)應(yīng)用于終結(jié)點(diǎn)實(shí)例。 當(dāng)然,通過(guò)@Autowired注解驅(qū)動(dòng)的注入也將起作用。
要利用這種方法,我們要做的就是通過(guò)使用@Service注釋對(duì)端點(diǎn)類(lèi)聲明為Spring bean。 另外,我們必須在應(yīng)用程序上下文文件中添加“ SimpleJaxWsServiceExporter” bean聲明,如下所示:
package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod; import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.javacodegeeks.jaxwsspring.services.GreetingService;@Service("greetingServiceEndpoint") @WebService(serviceName="GreetingService") public class GreetingServiceEndpoint {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}這里要注意的事情:
這里要注意的事情:
要構(gòu)建應(yīng)用程序,請(qǐng)右鍵單擊您的項(xiàng)目? 運(yùn)行為? Maven包
為了測(cè)試特定的方法,我們將將Web應(yīng)用程序部署到Apache Tomcat 6服務(wù)器。 不要忘記,我們將利用Sun的JDK 1.6構(gòu)建于JAX-WS的提供程序中。 即使我們?cè)赟ervlet容器中進(jìn)行操作。 在這種特定情況下,我們僅將Servlet容器用于啟動(dòng)Spring應(yīng)用程序。 另外,您可以實(shí)現(xiàn)Main類(lèi)并以編程方式啟動(dòng)Spring應(yīng)用程序。
要啟動(dòng)該應(yīng)用程序,請(qǐng)將瀏覽器指向以下地址
http:// localhost:8080 / jaxwsspring /
如果一切順利,您應(yīng)該會(huì)看到顯示以下內(nèi)容的主網(wǎng)頁(yè):
“你好,世界!”
我們的網(wǎng)絡(luò)服務(wù)地址應(yīng)位于:
http:// localhost:9999 / GreetingService
如果將瀏覽器指向以下位置,則可以查看我們的Web服務(wù)WSDL:
http:// localhost:9999 / GreetingService?wsdl
我們可以再次使用Web服務(wù)定義來(lái)生成和/或?qū)崿F(xiàn)SOAP客戶(hù)端,以調(diào)用“問(wèn)候” Web服務(wù)的操作。
作為GlassFish項(xiàng)目的一部分開(kāi)發(fā)的Sun的JAX–WS RI,將Spring支持作為其JAX–WS Commons項(xiàng)目的一部分。 這允許將JAX-WS端點(diǎn)定義為Spring管理的Bean,類(lèi)似于上一節(jié)中討論的獨(dú)立模式-但這次是在Servlet環(huán)境中。 請(qǐng)注意,這在Java EE 5環(huán)境中不可移植。 它主要用于Tomcat等非EE環(huán)境,并將JAX–WS RI嵌入為Web應(yīng)用程序的一部分。
與導(dǎo)出基于Servlet的端點(diǎn)的標(biāo)準(zhǔn)樣式的不同之處在于,這里將由Spring管理端點(diǎn)實(shí)例本身的生命周期,并且在“ web.xml”中僅定義一個(gè)JAX-WS Servlet 。 使用標(biāo)準(zhǔn)的Java EE 5樣式(如上所示),每個(gè)服務(wù)端點(diǎn)都有一個(gè)Servlet定義,每個(gè)端點(diǎn)通常都委派給Spring Bean。
最后一種方法是特定于Spring 2.0的 ,因此在更改任何代碼之前,我們應(yīng)該稍微更改項(xiàng)目配置。 特別是,我們必須刪除Spring 3庫(kù)的依賴(lài)關(guān)系,并向jaxws-spring庫(kù)添加一個(gè)新的依賴(lài)項(xiàng)。 打開(kāi)“ pom.xml”的圖形編輯器并執(zhí)行以下更改:
最后,我們實(shí)現(xiàn)“ GreetingService”,如下所示:
package com.javacodegeeks.jaxwsspring.services;import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; import javax.jws.soap.SOAPBinding.Use;@WebService(serviceName="GreetingService") @SOAPBinding(style = Style.RPC, use = Use.LITERAL) public class GreetingService {@WebMethodpublic String sayHello() {return "Hello from Greeting Service";}}這里要注意的事情:
要構(gòu)建應(yīng)用程序,請(qǐng)右鍵單擊您的項(xiàng)目? 運(yùn)行為? Maven包
為了測(cè)試特定的方法,我們將將Web應(yīng)用程序部署到Apache Tomcat 6服務(wù)器。
要啟動(dòng)該應(yīng)用程序,請(qǐng)將瀏覽器指向以下地址
http:// localhost:8080 / jaxwsspring /
如果一切順利,您應(yīng)該會(huì)看到顯示以下內(nèi)容的主網(wǎng)頁(yè):
“你好,世界!”
我們的網(wǎng)絡(luò)服務(wù)地址應(yīng)位于:
http:// localhost:8080 / jaxwsspring / GreetingService
如果將瀏覽器指向以下位置,則可以查看我們的Web服務(wù)WSDL:
http:// localhost:8080 / jaxwsspring / GreetingService?wsdl
我們可以再次使用Web服務(wù)定義來(lái)生成和/或?qū)崿F(xiàn)SOAP客戶(hù)端,以調(diào)用“問(wèn)候” Web服務(wù)的操作。
快樂(lè)編碼
賈斯汀
相關(guān)文章 :翻譯自: https://www.javacodegeeks.com/2010/11/jaxws-with-spring-and-maven-tutorial.html
總結(jié)
以上是生活随笔為你收集整理的带有Spring和Maven教程的JAX–WS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 剥削的拼音 剥削怎么读
- 下一篇: Java最佳实践– Char到Byte和
