今天調試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