Spring整合WebService进行客户端调用

本文介绍了四种不同的Java Web服务调用方式:使用jaxws、springws的WebServiceTemplate、CXF及xfire,并详细展示了每种方式的具体配置方法。特别强调了在使用jaxws时需要注意的细节问题,如包路径一致性、接口参数注解等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用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.youkuaiyun.com/kkdelta/article/details/7290769

 

http://blog.youkuaiyun.com/fu9958/article/details/5959262

 

http://blog.youkuaiyun.com/kkdelta/article/details/3987591

 

http://blog.youkuaiyun.com/jadyer/article/details/9002984

 

http://blog.youkuaiyun.com/vickychen89/article/details/6606571

 

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值