Webservice, использующий Coldfusion -> java.net.SocketTimeoutException: истекло время ожидания соединения - PullRequest
1 голос
/ 22 октября 2011

Я использую веб-сервис вместо Coldfusion 9 для получения данных о свойствах и сохранения результата в нашей локальной базе данных. Сценарий выполняется через планировщик один раз в день. Проблема в том, что иногда выдает ошибку (см. Ниже).

Обычно я получаю список идентификаторов (один запрос, чтобы получить этот список) и перебираю результат с одним запросом веб-службы для каждого идентификатора (~ 150 запросов).

К сожалению, я не могу получить подробные данные для всех свойств в одном запросе.

Я уже пытался установить -Dsun.net.client.defaultConnectTimeout=10000 в аргументах JVM - тот же результат ...

"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...

Есть идеи на этот счет? Что вызывает таймаут: медленный удаленный сервер? наш сервер, который не может открыть больше сокетов для новых подключений?

1 Ответ

0 голосов
/ 22 октября 2011

Возможно, вам придется выполнять запросы веб-службы небольшими партиями. Используйте БД или другую постоянную переменную для хранения начального списка из 150 идентификаторов, а затем выполните 1-50, 51-100 и т. Д. В отдельных вызовах cfschedule. Вы можете обновить свойства запланированного задания в коде, чтобы установить интервал 61 секунда при обработке пакета, а затем сбросить его до исходных значений после завершения всех пакетов.

...