Webservice 調用出現 java.net.SocketTimeoutException
阿新 • • 發佈:2019-02-04
今天發現在weblogic上的測試專案時,出現了這個錯誤,
<pre class="plain" name="code">Strings - Missing key history.btn.history for locale zh_CN, using en_US instead AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.net.SocketTimeoutException: Read timed out faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:237) at org.apache.axis.transport.http.HTTPSender.readHeadersFromSocket(HTTPS ender.java:583)
通過瀏覽器測試webservice地址發現可以正常訪問,檢查程式碼
Call call = (Call)service.createCall(); call.setMaintainSession(true); call.setTimeout(Integer.valueOf(<span style="font-size:24px;background-color: rgb(255, 0, 0);"><strong>30000</strong></span>)); call.setTargetEndpointAddress(new URL(url)); call.setOperationName(new QName(nameSpace, method)); call.addParameter(new QName(nameSpace, message[0]), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(nameSpace, message[1]), XMLType.XSD_STRING, ParameterMode.IN); call.setUseSOAPAction(true); call.setReturnType(Constants.XSD_STRING); call.setSOAPActionURI(nameSpace + method); obj = call.invoke(new Object[] { parameter[0], parameter[1] });
發現上面的設定時間太短導致伺服器端沒有來得及響應,客戶端就斷開連線導致,因此伺服器再次調整log跟蹤,發現伺服器的有些操作太長時間導致,調整伺服器端程式碼解決