我正在使用像这样的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
或其他,以及如何应用此选项。
答案 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生成了类,那么您已经获得了它们。