如何设置SOAP调用的超时

时间:2011-08-17 21:31:57

标签: java soap timeout

我需要通过HTTPS使用javax.xml.soap为SOAP调用设置超时 但是,我不知道该怎么做,必须有一个技巧,但我找不到它。

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来自import org.apache.axis.client.Stub;

我可能在那里失踪了。

1 个答案:

答案 0 :(得分:0)

假设您已经在后台线程中执行了.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()的行为。