我有一個要求是在使用spring框架的獨立java應用程序中開發web服務客戶端。我的問題是我如何開發一個可用於調用Web服務的Java類。我所擁有的是WSDL和wsdl文件的位置?這個應用程序也應該運行在不同的環境中。 WSDL的url是diff。所以基本上我想如果可能的話外部化url屬性。如何開發JAX-WS webservice客戶端?
我聽說從spring框架中使用JaxwsproxFactoryBean,但沒有找到任何好的工作示例。
我有一個要求是在使用spring框架的獨立java應用程序中開發web服務客戶端。我的問題是我如何開發一個可用於調用Web服務的Java類。我所擁有的是WSDL和wsdl文件的位置?這個應用程序也應該運行在不同的環境中。 WSDL的url是diff。所以基本上我想如果可能的話外部化url屬性。如何開發JAX-WS webservice客戶端?
我聽說從spring框架中使用JaxwsproxFactoryBean,但沒有找到任何好的工作示例。
在我看來,你不一定非要用Spring來創建一個Web服務客戶端。
wsimport工具可用於此目的。
打開命令提示符,將dir更改爲wsimport.bat/ws.import.sh所在的位置並執行下面的命令。
的wsimport -keep -verbose $文件夾中的名爲com {您的WSDL位置}
多個源文件已經生成(最有可能)。頂層文件夾的名稱取決於您在wsdl中使用的頂層包的名稱。
如果你想和Spring一起去,JaxwsProxyFactoryBean是要走的路。至少我做到了。
我跟着這個例子:
http://krams915.blogspot.com/2010/12/spring-mvc-3-accessing-web-services.html
我還沒有試過本文所提供的確切的代碼,但我也跟着一步一步,我做了它的工作。它是無障礙:wsimport工具在本實施例中用於產生類和JaxwsProxyFactoryBean用於注入所述代理:
<bean id="subscriptionJaxProxyService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean"
p:serviceInterface="org.krams.tutorial.oxm.SubscriptionPort"
p:wsdlDocumentUrl="http://localhost:8081/spring-ws-standalone/krams/ws/subscription.wsdl"
p:namespaceUri="http://krams915.blogspot.com/ws/schema/oss"
p:serviceName="SubscriptionPortService"
p:portName="SubscriptionPortSoap11"/>
最後,通過彈簧注入編組/解組(例如Jaxb2Marshaller)反序列化Web服務的迴應。
注:
http://krams915.blogspot.com/2010/12/spring-ws-mvc-implementing-client.html
最討厭的部分是讓wsimport能夠正常工作。請確保從版本庫使用1.12版本:
<pluginRepository>
<url>http://download.java.net/maven/2</url>
<id>Java dot Net</id>
<layout>default</layout>
<name>Repository for JAX-WS commons</name>
</pluginRepository>