Как установить таймаут для вызова SOAP - PullRequest
3 голосов
/ 18 августа 2011

Мне нужно установить тайм-аут для вызова SOAP, используя javax.xml.soap через HTTPS. Однако я не знаю, как это сделать, должен быть прием, но я не смог его найти.

SOAPMessage sm = null;
SOAPMessage response = null;

SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance();
SOAPConnection connection = sfc.createConnection();

MessageFactory mf = MessageFactory.newInstance();
sm = mf.createMessage();
...
...
URL url = new URL("https://server:XXXX/blablabla);
response = connection.call(sm, url);

Я видел, как кто-то делает:

if (xxxSoapService instanceof Stub)
            ((Stub) xxxSoapService).setTimeout(10000);

xxxSoapService расширяет java.rmi.Remote и Stub из импорта org.apache.axis.client.Stub;

Естьвозможно, что-то там мне не хватает.

1 Ответ

0 голосов
/ 18 августа 2011

Предполагая, что вы уже делаете свой .call () в фоновом потоке.Вы можете запустить таймер в другом потоке и уничтожить поток загрузки.

Альтернативно, поскольку SOAPMessage содержит все ваши данные, вы можете просто использовать HttpUrlConnection для отправки сообщения.

HttpUrlConnection connection = // initialize me!
connection.setReadTimeout(TIMEOUT_VALUE);
SOAPMessage sm = // initialize me!

// more stuff for your message

connection.connect();

sm.writeTo(connection.getOutputStream());

Это должно работать, если я не ошибаюсь в поведении writeTo ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...