首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Eclipse 生成webservice Client与JAX-WS不兼容有关问题解决

2012-12-25 
Eclipse 生成webservice Client与JAX-WS不兼容问题解决我平时开发WebService的客户端,总是直接使用Eclipse

Eclipse 生成webservice Client与JAX-WS不兼容问题解决

我平时开发WebService的客户端,总是直接使用Eclipse生成,这样来的快,也很方便。

?

头一阵子其它组的人用,JAX-WS制作了一个WS,我们使用Ecllipse生成后。发现调用后,无法返回结果,等待数分钟没有返回,不知道为什么。而对方那边已经将方法内容全都注掉。导致当时非常郁闷。心想如果这样,开发方式,以及过去的代码都要改。

?

无奈,硬着头皮去找为什么,查了两边的堆栈都没有问题,程序本身也没有问题。最后将问题归结到Eclipse使用AXIS1生成的代码问题,准确的说是两边的通许有问题,版本不对。

?

抓了下包,看了下。对比JAX-WS生成的客户端和Eclipse AXIS生成的客户端,最后发现是AXIS的客户端使用的是HTTP1.0的协议,而JAX-WS使用的是HTTP1.1的协议。

?

上网又翻了一下,找到了修改AXIS的方法,将AXIS底层换成Apache Client的调用类。只需修改一下axis.jar内部的一个配置文件,位置在/axis/client/client-config.wsdd,修改方法如下:

将下面的文件内容

?

<?xml version="1.0" encoding="UTF-8"?><deployment name="defaultClientConfig" xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  <globalConfiguration>    <parameter name="disablePrettyXML" value="true"/>    <parameter name="enableNamespacePrefixOptimization" value="false"/>  </globalConfiguration>  <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>  <transport name="local" pivot="java:org.apache.axis.transport.local.LocalSender"/>  <transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender"/></deployment>

?替换成

<?xml version="1.0" encoding="UTF-8"?><deployment name="ApacheCommonsHTTPConfig" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  <globalConfiguration>    <parameter name="disablePrettyXML" value="true"/>    <parameter name="enableNamespacePrefixOptimization" value="false"/>  </globalConfiguration>  <transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender" />  <transport name="local" pivot="java:org.apache.axis.transport.local.LocalSender" />  <transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender" /></deployment>

?就可以了。完事后重新打包,替换旧的axis.jar。

?

之后需要补几个apache httpclient (commons-httpclient jar)相关的jar包就可以了。

?

AXIS 1已经很久不更新了,所以跟新WS有些不兼容,但修改后,AXIS client就可以正常的与其它WS通信了。

?

热点排行