我也遇到了,
最简单的应用,根本不会耗时。但是就是在call.invoke(new Object[] { test });时卡住了。要等好几分钟才会有返回结果。服务端立马返回了结果,但是客户端就是在等待中。我查过很多资料有的说因为服务端和客户端采用的底层协议不一致或者说http版本不一致,一个是http1.0,一个是http1.1但是没有结果

解决方案 »

  1.   

    使用axis调用没有解决,但是我客户端用其他方式可以正常。估计是axis调jws需要特殊配置否则结果返回就要近5分钟,而且这个时间还真巧,刚好不到300秒,每次都这样
      

  2.   

    首先利用抓包工具在客户端和服务端分别抓取HTTP通信包(抓包过程略)。分析抓包日志可以看出,服务端很快就返回了响应,客户端也收到了响应消息。但是这个消息却由axis处理,没有送到axis客户端的应用层。
    进一步比较axis服务端和jax-ws服务端的响应包发现,axis服务端会在发送响应消息时关闭http连接,而jax-ws为了增加连接重用,返回的http头中,连接信息描述如下:
    connection: keep-alive
    很显然,axis客户端没有正确处理这一消息,认为http连接如果没有关闭就会继续等待后续数据包。
    apache提供了自己的解决方案。即:用他的 httpclient包来管理http连接。用org.apache.axis.transport.http.CommonsHTTPSender来代替org.apache.axis.transport.http.HTTPSender。具体用法如下:
    1、  引入三个jar包,commons-codec.jar,commons-httpclient.jar,commons-collections.jar
    2、  增加配置文件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">
        <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>
       
    3、  在axis自动生成的代理类XXProxy中,修改init方法(下面的例子表示调用kaopuUpSoap服务):
    private void _initKaopuUpSoapProxy(){
            try {
                EngineConfiguration conf = new FileProvider(this.getClass()
                                                               .getResourceAsStream("/client-config.wsdd"));
     
                kaopuUpSoap = (newcom.zte.iups.wbs.up.wsdl.KaopuUpServiceLocator(conf)).getkaopuUpSoapPort();
     
           即:在生成代理类时,传入配置文件参数进行初始化。
           还有另一种方法是,直接在代码中指定使用哪个HttpSender。
    通过上述三个步骤修改后的axis客户端,不管调用哪种Web Service服务端,都能在极短时间内返回响应。问题得以解决。
      

  3.   

    我也遇到这个问题,请问下楼主解决了吗,我现在的解决办法是把jdk6升级成jdk7可以解决,或者加入cxf也可以解决
      

  4.   

    貌似这位同学也遇到类似的问题  http://bbs.csdn.net/topics/390103420