`
tom_seed
  • 浏览: 318585 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring整合WebService进行客户端调用

 
阅读更多

一、使用jaxws

    配置方法如下:

<bean id="tradeService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean">
	<property name="serviceInterface" value="com.webservice.test.trade.TradeService" />
	<property name="namespaceUri" value="http://trade.test.webservice.com/" />
	<property name="wsdlDocumentUrl" value="http://127.0.0.1:8080/webservice/tradeService?wsdl" />
	<property name="serviceName" value="tradeService" />
	<property name="portName" value="tradeServiceImplPort" />
</bean>

 若只知道访问路径(wsdlDocumentUrl),不确定其他参数时,可先确保访问路径正确,其他参数(namespaceUri、serviceName、portName)根据错误提示进行逐一修改即可。

TradeService代码:

package com.webservice.test.trade;

import javax.jws.WebService;

@WebService
public interface TradeService {
	String callServiceXml(@WebParam(name="xml")String xml);
}

注意:

a.对于接口类和相关类的包路径,一定要和服务器的一样,否则会出现

Unexpected wrapper element {****}tradeService found.……错误。

其实namespaceUri参数就是服务器包的路径

http://trade.test.webservice.com/对应服务器上的路径就是com.webservice.test.trade

 

b.接口参数上必须打上@WebParam(name="xml"),否则会出现:

JaxWsSoapFaultException: Unmarshalling Error: unexpected element (uri:"", local:"arg0")错误。

 

c.若都是Java工程间的通信,为避免一些不必要的情况出现,可以让服务端将接口进行打包,发送给客户端调用方,保证路径一致等问题。

 

二、使用spring ws的WebServiceTemplate

    配置的方法如下:

<bean id="xxxWebService" class="org.springframework.ws.client.core.WebServiceTemplate">
	<property name="defaultUri" value="http://XXX.net:8080"/>
</bean>

 

三、使用CXF

 配置方法如下:

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 
<jaxws:client id="xxxWebService" serviceClass="com.xxx.UploadFileService" address="http://XXX.net:8080">  
</jaxws:client>

 

四、使用xfire
 配置方法如下:

<bean id ="dwdsspWebService" class ="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
	<property name ="serviceClass">
            <value>com.xxx.UploadFileService</value>
        </property>
        <property name ="wsdlDocumentUrl">
            <value>http://XXX.net:8080/XXXServicePort?WSDL</value>
        </property>
</bean>

 

在当前项目中主要是java工程间的通信,之前一直用Spring RMI和Spring集成hessian,比较习惯公共jar包的方式,所以我就只尝试了第一种客户端调用服务端的方式。

参考地址如下:

http://blog.csdn.net/kkdelta/article/details/7290769

 

http://blog.csdn.net/fu9958/article/details/5959262

 

http://blog.csdn.net/kkdelta/article/details/3987591

 

http://blog.csdn.net/jadyer/article/details/9002984

 

http://blog.csdn.net/vickychen89/article/details/6606571

 

http://coach.iteye.com/blog/894159

 

http://my.oschina.net/zimingforever/blog/212492

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics