我有一个要求在使用spring框架的独立java应用程序中开发Web服务客户端。我的问题是如何开发一个可用于调用Web服务的java类。我所拥有的是WSDL和wsdl文件的位置?此应用程序也应该在diff envt中运行。其中WSDL的url是diff。所以基本上我想尽可能外化url属性。
我听说过使用Spring框架中的JaxwsproxFactoryBean但没有找到任何好的工作示例。
答案 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中使用的顶级包的名称。