为Axis SOAP Webservice设置超时

时间:2011-11-16 14:40:24

标签: java soap timeout axis

我正在使用像这样的Axis 1.4网络服务:

FooServiceLocator fooLocator = new FooServiceLocator();
fooLocator.getEngine().setOption("sendMultiRefs", false);
Foo foo = fooLocator.getFooService(new URL(soapServiceUrl));

如何为连接建立和打开的连接设置超时? (类似于org.apache.commons.net.SocketClient setTimeout()setSoTimeout())?

我发现了一个建议设置超时的提示:

((Stub) sPcspService).setTimeout(soapTimeoutSecs * 1000);

但是显式演员看起来更像是黑客,而不是官方的API使用。

获取源代码,我找到了对

的引用
  

DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY

但我也不知道我是否使用Commons HTTP Client或其他,以及如何应用此选项。

1 个答案:

答案 0 :(得分:8)

我曾经使用过轴1.4和肥皂,用你的例子设置存根超时,我会这样做:

FooServiceLocator fooLocator = new FooServiceLocator();
fooLocator.getEngine().setOption("sendMultiRefs", false);
Foo foo = fooLocator.getFooService(new URL(soapServiceUrl));

FooStub binding = (FooStub) foo;
binding.setTimeout(soapTimeoutSecs * 1000);

您的FooStub已扩展到org.apache.axis.client.Stub,如果您通过wsdl2java生成了类,那么您已经获得了它们。