使用axis1.4时不考虑超时

时间:2011-10-10 15:45:51

标签: java axis

我在初始化webservice存根时设置超时,我甚至在调用之前使用getTimeout()记录它,以确保它已设置,但无论设置的超时值如何,调用都会完成。这可能是一个错误,还是我错过了什么?

以下是我的代码:

proxy = new DCPControllerWSPortTypeProxy();
proxy.setEndpoint(endpoint);            
((Stub)proxy.getDCPControllerWSPortType()).setTimeout(120000);

1 个答案:

答案 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

我希望这会以某种方式帮助你=)