Установка времени ожидания для веб-службы Axis SOAP - PullRequest
8 голосов
/ 16 ноября 2011

Я использую веб-сервис 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 Ответ

8 голосов
/ 28 сентября 2012

Я также использовал ось 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.Заглушка, и если вы сгенерировали классы через wsdl2java, вы бы их уже получили.

...