2011-10-22 91 views
1

我正在使用Coldfusion 9上的Web服務獲取屬性數據並將結果保存到我們的本地數據庫。腳本每天通過調度程序執行一次。問題在於有時會出現它會引發錯誤(請參閱下文)。Coldfusion消費webservice - > java.net.SocketTimeoutException:連接超時

基本上我得到了一個ID列表(一個請求來獲得這個列表),並在每個ID(約150個請求)的一個web服務請求上循環遍歷結果。

很遺憾,我無法在一個請求中獲取所有屬性的詳細數據。

我試着已經設置在JVM參數-Dsun.net.client.defaultConnectTimeout=10000 - 同樣的結果...

"Error","jrpp-7225","10/22/11","03:00:32",,"Cannot perform web service invocation properties. 
The fault returned when invoking the web service operation is: 
AxisFault 
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/} Server.userException 
    faultSubcode: 
     faultString: java.net.SocketTimeoutException: connect timed out 
     faultActor: 
      faultNode: 
       faultDetail: {http://xml.apache.org/axis/}stackTrace:java.net.SocketTimeoutException: connect timed out 
       at java.net.PlainSocketImpl.socketConnect(Native Method) 
       at java.net.PlainSocketImpl.doConnect(Unknown Source) 
       at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
       at java.net.PlainSocketImpl.connect(Unknown Source) 
       at java.net.SocksSocketImpl.connect(Unknown Source) 
       at java.net.Socket.connect(Unknown Source) 
       at sun.reflect.GeneratedMethodAccessor191.invoke(Unknown Source) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
       at java.lang.reflect.Method.invoke(Unknown Source) 
       at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:15... 

在這一個任何想法?什麼導致超時:慢速遠程服務器?我們的服務器無法爲新連接打開更多套接字?

回答

0

您可能必須以較小的批次進行web服務請求。使用DB或其他持久變量來存儲150個ID的初始列表,然後在單獨的cfschedule調用中執行1-50,51-100等。您可以更新代碼中計劃作業的屬性,以在處理批處理時將間隔設置爲61秒,並在所有批處理完成後將其重置爲原始值。

+0

錯誤似乎發生在循環的每個索引上。還有其他建議嗎?任何想法如何增加timeoutlimit(應用程序範圍會很大,但服務器範圍也可以)? – Seybsen

+0

發佈你的循環/代碼 – Antony