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

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的用法。

捕获我找到的引用源代码



但是我既不知道我是否使用Commons HTTP Client或另一个,也不知道如何应用此选项。

最佳答案

我以前也使用 Axis 1.4和soap来为您的示例设置 stub 的超时,我将这样做:

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生成了类,您将已经得到它们。

09-12 04:57