2

JAX WS および Http Post 呼び出しの接続と要求のタイムアウトを設定しようとしています。私のコードは機能しますが、最大 20 秒しかかかりません。つまり、タイムアウト値を 5 秒、2 秒に変更できますが、動作しますが、タイムアウト値を 30 秒に設定すると 20 秒でタイムアウトになり、タイムアウト値を 60 秒に設定しても 20 秒でタイムアウトします。その最大20秒がどこに設定されているか知っている人はいますか??

JAXWS の場合:

//This works, timed out in 10 seconds
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 10000);

// This would time out in 20 seconds!!!
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 60000);`

HTTP の場合:

// This works, timed out in 10 seconds
HttpConnectionParams.setConnectionTimeout(params, 10000);

// This would time out in 20 seconds!!!
HttpConnectionParams.setConnectionTimeout(params, 50000);
4

1 に答える 1

0

Glassfish のデフォルトの JAX-WS ランタイムはMetro 2.0です。5.6を参照してください。Metro ガイドのHTTP タイムアウトセクションに記載されているので、次のようになります。

// setConnectTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, timeout);

// setReadTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put("com.sun.xml.ws.request.timeout", timeout);

参考として、 Websphereには次の 3 つのパラメーター(Metro 2.0 では 2 つだけ)があることがわかります。

  1. CONNECTION_TIMEOUT: WebSphere JAX-WS クライアントが http/https 接続を確立するために待機する時間 (デフォルトは 180 秒)
  2. WRITE_TIMEOUT: クライアントがリクエストの送信を完了するまで待機する時間 (デフォルトは 300 秒)
  3. RESPONSE_TIMEOUT: クライアントが応答の受信を完了するまで待機する時間 (デフォルトは 300 秒)
于 2013-03-27T04:29:18.980 に答える