Web Service 調用時間每次都得五分鐘才響應結果(Web Service Call Need 5 minutes Everytime)

今天調試WebService服務的時候遇到一個問題,WebService的服務端是用Jaxws(JDK自帶)構建,測試用的客戶端是用Eclipse自動生成。java

在每次客戶端調用的時候,服務端能接受請求,並處理請求,可是返回時候,客戶端不能當即獲得響應,而須要大約5分鐘/300000g毫秒才能結果。 web

代碼相似: eclipse

服務端代碼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:spa

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。更深層緣由不明,等待高手答疑,但願對你們有幫助。code

解決方法來自大S.O. http://stackoverflow.com/questions/1985963/eclipse-generated-web-service-client-extremely-slowxml

相關文章
相關標籤/搜索