Тайм-аут клиента Axis 1.4 не работает для SocketTimeoutException - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема с тем, что мой клиент Axis 1.4 не будет использовать тайм-аут в соответствии с настройкой тайм-аута, которую я установил (время запроса 60-80 секунд вместо времени ожидания 15 секунд), если возникает следующая сетевая проблема. Сейчас это единственный случай, когда тайм-аут не работает должным образом.

Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.7.0]
at java.net.SocketInputStream.read(SocketInputStream.java:150) ~[?:1.7.0]
at java.net.SocketInputStream.read(SocketInputStream.java:121) ~[?:1.7.0]
at com.ibm.jsse2.a.a(a.java:104) ~[?:7.0 build_20130515]
at com.ibm.jsse2.a.a(a.java:176) ~[?:7.0 build_20130515]
at com.ibm.jsse2.qc.a(qc.java:668) ~[?:7.0 build_20130515]
at com.ibm.jsse2.qc.h(qc.java:791) ~[?:7.0 build_20130515]
at com.ibm.jsse2.qc.a(qc.java:614) ~[?:7.0 build_20130515]
at com.ibm.jsse2.h.write(h.java:32) ~[?:7.0 build_20130515]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[?:1.7.0]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) ~[?:1.7.0]
at org.apache.commons.httpclient.ChunkedOutputStream.flush(ChunkedOutputStream.java:191) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:506) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) ~[commons-httpclient-3.1.jar:?]
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) ~[commons-httpclient-3.1.jar:?]
at org.apache.axis.transport.http.CommonsHTTPSender.invoke(CommonsHTTPSender.java:196) ~[axis-1.4.jar:?]
... 94 more

и 2 дополнительных вопроса

  1. Я хочу воспроизвести эту проблему на своем локальном компьютере. Как я могу создать исключение SocketTimeoutException в BufferedOutputStream.flush? Все, что я могу воспроизвести, это SocketTimeoutException в BufferedInputStream.read.

  2. Как сделать тайм-аут эффективным?

Мой код клиента для установки времени ожидания:

java.net.URL portAddress = new java.net.URL(url);
        org.tempuri.PaymentServiceSoapStub _stub = new org.tempuri.PaymentServiceSoapStub(portAddress, this);
        _stub.setPortName(getPaymentServiceSoapWSDDServiceName());
        _stub.setTimeout(connectionTimeout);
...