我在初始化webservice存根时设置超时,我甚至在调用之前使用getTimeout()记录它,以确保它已设置,但无论设置的超时值如何,调用都会完成。这可能是一个错误,还是我错过了什么?
以下是我的代码:
proxy = new DCPControllerWSPortTypeProxy();
proxy.setEndpoint(endpoint);
((Stub)proxy.getDCPControllerWSPortType()).setTimeout(120000);
答案 0 :(得分:1)
要解决此问题,您必须在项目中的任何位置添加以下类。当我遇到类似的问题时,我已经将它声明为同一个类中的私有类,我正在实例化我的存根。 (我目前正在使用Axis 2)
private class CustomNetworkClient extends sun.net.NetworkClient
{
public CustomNetworkClient(int readTimeout)
{
defaultSoTimeout = readTimeout;
}
}
执行此操作后,您可以在代码中添加以下行,这将设置超时。
CustomNetworkClient client = new CustomNetworkClient(SOAP_READ_TIMEOUT);
或者您可以简单地执行以下操作,因为您并不真正需要正在创建的对象:
new CustomNetworkClient(SOAP_READ_TIMEOUT)
以前报告过这是一个错误,使用HTTPS连接时没有设置连接超时和读取超时:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4700777
以下链接帮助我找出了解决方法: http://www.noizeramp.com/article.php?article=se-networking_specifics_under_Java_Web_Start
我希望这会以某种方式帮助你=)