2011-10-10 53 views
2

我設置了初始化webservice存根時的超時時間,我甚至在進行調用之前使用getTimeout()進行了日誌記錄,以確保它已設置但調用完成的超時值設置。這可能是一個錯誤還是我在這裏錯過了一些東西?超時沒有考慮到使用axis1.4

下面是我的代碼,這樣做:

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

回答

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

我希望這會幫助你以某種方式=)