Web Service 调用时间每次都得五分钟才响应结果(Web Service Call Need 5 minutes Everytime)
Web Service 调用时间每次都得五分钟才响应结果(Web Service Call Need 5 minutes Everytime)
刀狂剑痴 发表于2年前
Web Service 调用时间每次都得五分钟才响应结果(Web Service Call Need 5 minutes Everytime)
  • 发表于 2年前
  • 阅读 514
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

今天调试WebService服务的时候遇到一个问题,WebService的服务端是用Jaxws(JDK自带)构建,测试用的客户端是用Eclipse自动生成。

在每次客户端调用的时候,服务端能接受请求,并处理请求,但是返回时候,客户端不能立即得到响应,而需要大约5分钟/300000g毫秒才能结果。 

代码类似: 

服务端代码com.je.ws.HelloService.java:

package com.je.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(name="helloService" ,portName="helloServicePort" ,targetNamespace="http://www.javaedu.com")
public class HelloService {
 @WebMethod
 public String hello(String name){
 System.out.println("Sev.Hello:" + name);
 return "OK, " + name.length;
 }
 
 public static void main(String[] args){
 Endpoint.publish("http://192.168.3.120:8080/HelloServicePort", new HelloService());
 }
}

客户端代码,省去由Eclipse自动生成代码,客户端调用代码:com.je.test.JestClient.java:

package com.je.test;
import java.rmi.RemoteException;

public class JestClient {
 public static void main(String[] args) throws RemoteException {
  HelloServiceProxy jp = new HelloServiceProxy();
  String hello = jp.hello("xidada");
  System.out.println(hello);
 }
}

问同事没人见过,Google/百度也少有答案。最后不断更换条件,终于找到答案了。原因竟然是Http协议的版本问题…… 在eclipse 生成的方法中,XXXPortBindingStub.java调用方法中添加

_call.setProperty(MessageContext.HTTP_TRANSPORT_VERSION,HTTPConstants.HEADER_PROTOCOL_V11);

添加之后,OK。更深层原因不明,等待高手答疑,希望对大家有帮助。

解决方法来自大S.O. http://stackoverflow.com/questions/1985963/eclipse-generated-web-service-client-extremely-slow

标签: Web Service
共有 人打赏支持
粉丝 18
博文 111
码字总数 82582
×
刀狂剑痴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: