我正在使用Coldfusion 9上的web服务来获取属性数据并将结果保存到本地数据库。脚本每天通过调度器执行一次。问题是有时会抛出错误(见下文)。
基本上我得到一个ID列表(一个请求得到这个列表)和循环的结果与一个webservice请求每个ID(~150个请求)。
遗憾的是,我无法在一次请求中获得所有属性的详细数据。
我已经尝试在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...
对这个有什么想法吗?导致超时的原因是:远程服务器速度慢?我们的服务器不能为新的连接打开更多的套接字?
您可能必须以较小的批量处理web服务请求。使用DB或其他持久化变量来存储150个id的初始列表,然后在单独的cfschedule
调用中执行1- 50,51 -100等操作。您可以在代码中更新计划作业的属性,以便在处理批处理时将间隔设置为61秒,然后在所有批处理完成后将其重置为原始值。