大家好
我一直在网上搜索,到目前为止,下面的解决方案似乎最接近我可以得到没有任何第三方库的解决方案,但它不起作用。(
我没有wsdl我可以存根。我正在调用一个外部web服务,并简单地传递一个soap消息。
我在没有容器的情况下测试了相同的代码。在我的ide中的main方法中,它在那里工作,当我部署到wildfly10时,它看起来像是被jboss忽略或覆盖了。
我在standalone.xml中找不到任何属性来修改readtimeout设置,它只需要用于这个webservice调用。
我的调试日志没有打印任何东西到日志,这表明它没有被执行。我希望立即出现错误,因为setReadTimeout(1);
谁有什么想法?SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
URL endpoint = new URL (null, ENDPOINT, new URLStreamHandler() {
@Override
protected URLConnection openConnection(URL u) throws IOException {
LOG.debug("1.");
URL clone = new URL (u.toString ());
LOG.debug("2.");
URLConnection connection = clone.openConnection ();
LOG.debug("3.");
connection.setConnectTimeout (10000);//10 seconds
LOG.debug("4.");
connection.setReadTimeout (1);//1 ms
LOG.debug("5.");
return connection;
}
});
SOAPMessage soapResponse = soapConnection.call(soapMsg, endpoint);
如果我编辑呼叫行如下,读取超时工作,但我得到http 500,但url是正确的:
SOAPMessage soapResponse = soapConnection.call(soapMsg, endpoint.getContent());
发送前不要记录消息。出于某种原因,这清除了您的soap消息。在发送SOAP消息之前,注释掉记录或打印出SOAP消息的任何代码。现在应该可以工作了。