2017-02-09 48 views
0

私はいくつかのWebサービスと通信する必要があります。私はhttps://cxf.apache.org/download.htmlからのApache CXFをダウンロードして、コマンド例外java.net.SocketTimeoutException:読み取りタイムアウト

wsdl2java.bat -encoding UTF-8 <url> 

でJavaクラスを生成した。しかし、私は、約30秒後に長い要求を実行しようとしているとき、私は例外を取得しました:私はしようとした

Caused by: javax.xml.ws.soap.SOAPFaultException: java.net.SocketTimeoutException: Read timed out 
    at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.createSystemException(MethodMarshallerUtils.java:1326) 
    at org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.demarshalFaultResponse(MethodMarshallerUtils.java:1052) 
    at org.apache.axis2.jaxws.marshaller.impl.alt.DocLitBareMethodMarshaller.demarshalFaultResponse(DocLitBareMethodMarshaller.java:415) 
    at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.getFaultResponse(JAXWSProxyHandler.java:580) 
    at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.createResponse(JAXWSProxyHandler.java:523) 
    at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:389) 
    at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:174) 
    at com.sun.proxy.$Proxy718.loadLoanHistorySynch(Unknown Source) 
    ... 55 more 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) 
    at java.net.SocketInputStream.read(SocketInputStream.java:170) 
    at java.net.SocketInputStream.read(SocketInputStream.java:141) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265) 
    at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:88) 
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:124) 
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) 
    at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116) 
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413) 
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973) 
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735) 
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) 
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
    at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621) 
    at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193) 
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404) 
    at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231) 
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) 
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) 
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 
    at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:578) 
    at org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:127) 
    at org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:93) 
    at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:376) 
    ... 67 more 

を異なるパラメータでタイムアウトを増やしても何も役に立ちませんでした。

 int timeout = 60 * 1000; 

    ((BindingProvider)client).getRequestContext().put("javax.xml.ws.client.connectionTimeout", timeout); 
    ((BindingProvider)client).getRequestContext().put("javax.xml.ws.client.receiveTimeout", timeout); 

    ((BindingProvider)client).getRequestContext().put("com.sun.xml.internal.ws.request.timeout", timeout); 
    ((BindingProvider)client).getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", timeout); 

    ((BindingProvider)client).getRequestContext().put("com.sun.xml.ws.request.timeout", timeout); 
    ((BindingProvider)client).getRequestContext().put("com.sun.xml.ws.connect.timeout", timeout); 

    ((BindingProvider)client).getRequestContext().put("timeout", timeout); 

どのようにリクエストタイムアウトを増やすことができますか?

+0

CXFでクラスを生成しましたが、Axis2でコードを実行しています。 – pedrofb

答えて

-1

タイムアウトがとてもミリ秒である。基本的には60秒です

60 * 1000 = 60000; 

、私は以下のようにしようと、それは私のために働きました。

HashMap<String, java.lang.Object> properties = new HashMap<>(); 
      properties.put(HTTPConstants.HTTP_PROTOCOL_VERSION, 
        HTTPConstants.HEADER_PROTOCOL_10); 
      properties.put(HTTPConstants.SO_TIMEOUT, new java.lang.Integer(
        360000)); 
      ServiceStub._getServiceClient().getOptions() 
        .setProperties(properties); 
+0

エラーを処理する前にこれを修正したい場合があります。「60 * 1000」は「60,000」です。これは* 60秒です。 – EJP

+0

おっとそれを編集しました。 – developer

+0

今、あなたはその質問に答えていません。 – EJP

関連する問題