2011-07-26 56 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>