5

バージョンでAxis2を使用しています:

Implementation-Version: 1.7.0-SNAPSHOT
Implementation-Vendor-Id: org.apache.axis2
Implementation-Vendor: The Apache Software Foundation
Jenkins-Build-Number: 1847

ServiceClient のタイムアウトを 2000 ミリ秒に設定したいのですが、これが私たちのコードです:

Options options = new Options();
options.setTo(new EndpointReference(getUserServiceEndPoint()));
options.setProperty(Constants.Configuration.ENABLE_REST,
        Constants.VALUE_TRUE);
// setting timeout to 2 second should be sufficient, if the server is
// not available within the 3 second interval you got a problem anyway
options.setTimeOutInMilliSeconds(2000);

ServiceClient sender = new ServiceClient();
sender.engageModule(new QName(Constants.MODULE_ADDRESSING)
        .getLocalPart());
sender.setOptions(options);
OMElement getSessionResult = sender
        .sendReceive(getPayloadMethodGetSession());

ただし、ログにはまだ表示されます。

org.apache.axis2.AxisFault: ホストは 60000 ミリ秒のタイムアウト内に接続を受け入れませんでした

そして、実際には60秒もかかります。したがって、エラーメッセージは間違っているだけではなく、タイムアウトオプションが無視され、常にデフォルトのオプションが使用されているようです。

誰かが同様の問題を抱えていましたか?

ありがとう
セバスチャン

4

2 に答える 2

5

問題を解決できました(ただし、私には重複しているように見えます)

int timeOutInMilliSeconds = 2000;
options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
options.setProperty(HTTPConstants.SO_TIMEOUT, timeOutInMilliSeconds);
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, timeOutInMilliSeconds);

セバスチャン

于 2012-11-23T03:53:45.863 に答える
0

Axis2 1.6.3 の API ドキュメントによると、次のような 2 つのプロパティまたは timeOutInMillis のいずれかです。

Options options = new Options();
options.setProperty(HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));

また

options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);

ソース: http://axis.apache.org/axis2/java/core/docs/http-transport.html

于 2015-08-20T20:03:33.483 に答える