2011-07-26 76 views
0

我有一個要求是在使用spring框架的獨立java應用程序中開發web服務客戶端。我的問題是我如何開發一個可用於調用Web服務的Java類。我所擁有的是WSDL和wsdl文件的位置?這個應用程序也應該運行在不同的環境中。 WSDL的url是diff。所以基本上我想如果可能的話外部化url屬性。如何開發JAX-WS webservice客戶端?

我聽說從spring框架中使用JaxwsproxFactoryBean,但沒有找到任何好的工作示例。

回答

0

在我看來,你不一定非要用Spring來創建一個Web服務客戶端。

wsimport工具可用於此目的。

打開命令提示符,將dir更改爲wsimport.bat/ws.import.sh所在的位置並執行下面的命令。

的wsimport -keep -verbose $文件夾中的名爲com {您的WSDL位置}

多個源文件已經生成(最有可能)。頂層文件夾的名稱取決於您在wsdl中使用的頂層包的名稱。

3

如果你想和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>