如何开发JAX-WS webservice客户端?

时间:2011-07-26 23:48:50

标签: spring jax-ws

我有一个要求在使用spring框架的独立java应用程序中开发Web服务客户端。我的问题是如何开发一个可用于调用Web服务的java类。我所拥有的是WSDL和wsdl文件的位置?此应用程序也应该在diff envt中运行。其中WSDL的url是diff。所以基本上我想尽可能外化url属性。

我听说过使用Spring框架中的JaxwsproxFactoryBean但没有找到任何好的工作示例。

2 个答案:

答案 0 :(得分: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"/>

最后,通过spring(例如Jaxb2Marshaller)注入marshaller / unmarshaller来反序列化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>
    

答案 1 :(得分:0)

在我看来,您不一定要使用Spring来创建Web服务客户端。

wsimport工具可用于此目的。

打开命令提示符,将dir更改为wsimport.bat / ws.import.sh所在的位置,然后执行以下命令。

wsimport -keep -verbose $ {your wsdl location}

将在名为com的文件夹中生成(最有可能)多个源文件。顶级文件夹的名称取决于您在wsdl中使用的顶级包的名称。