原创

永続的なタイムアウトの問題の解決

温馨提示:
本文最后更新于 2024年04月12日,已超过 48 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

現在、JBoss + Java 7 で実行されている古いプロジェクトの問題に対処しています。そこで WSDL ファイルを介した呼び出しを使用していますが、リモート サービスが利用できない場合、非常に長いタイムアウト (約 1 分) が発生します。 。プロパティを追加してこれを変更しようとしましたが、このタイムアウトに追加したプロパティはどれも応答しないようです。

次のエラーが発生します:

Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:625)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:933)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1092)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:288)

私のコード(プロジェクトの機密性のためにわずかに変更されました):

import javax.xml.ws.BindingProvider;


MyRemoteService port = svcService.getBasicHttpEndpoint();

BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put("com.sun.xml.ws.connect.timeout", 3000);
bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 5000);

ここで推奨されている他のプロパティのセットも試しました。

bp.getRequestContext().put("com.sun.xml.internal.ws.connect.timeout", 3000);
bp.getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 5000);

または

bp.getRequestContext().put("javax.xml.ws.client.connectionTimeout", 3000);
bp.getRequestContext().put("javax.xml.ws.client.receiveTimeout", 5000);

どれもうまくいきませんでした。システムプロパティの設定も試してみましたが、やはりダメでした。

sun.net.client.defaultConnectTimeout=3000
sun.net.client.defaultReadTimeout=10000

このタイムアウトを機能させるためにどのように設定すればよいかについて、さらにアドバイスはありますか?手伝ってくれてありがとう

正文到此结束
热门推荐
本文目录