2012-05-24 142 views
1

我使用的Grails的WS-客戶端插件 但我的應用程序等待SOAP響應從服務器返回從中我正在使用Web服務,然後從該代碼Grails的處理網絡連接失速

def proxy = webService.getClient(wsdlUrl) 

我的應用程序等待這主要發生在服務器關閉或網絡連接速度較慢時。

如果web服務暫時從服務器上刪除,並且包含wsdl的url在嘗試訪問Web瀏覽器時重定向到網站的主頁,則等待也會繼續。

如何檢測wsdl是否存在以及如何設置超時屬性,以便等待響應10秒鐘,然後停止等待響應,並在代碼停止時正常執行代碼。

我也沒有得到任何異常或錯誤。

回答

0

聽起來像默認情況下客戶端上沒有設置讀取和/或連接超時。這應該有助於如果Web服務停止:proxy.setConnectionTimeout(value_in_milliseconds)

雖然我不確定是否設置了讀取超時,但如果主機啓動並接受連接但Web服務不可用或沒有響應。我們找到的最佳解決方案是使用Apache Commons HTTP客戶端,而不是默認客戶端,這爲客戶端的連接設置提供了更精細的配置。他們也可能在WS-Client插件中,但相關文檔(實際上是GroovyWS文檔)似乎沒有提及任何有關讀取超時的內容。