2009-08-26 2 views
2

Я пишу приложение, которое использует веб-службы для подключения удаленного сервера. Я написал метод для функции ping, чтобы определить, находится ли сервер в сети или нет (то есть он предоставляет веб-службы, которые могут доступ к нему через хост: порт). Я выполняю простую веб-службу с тайм-аутом в 2 с (доступным в качестве опции в классе-заглушке до того, как я сделаю вызов). Изначально вызов должен возвращаться в течение 2 секунд, что позволяет мне выяснить, является ли сервер вверх или вниз. Однако в некоторых случаях это занимает гораздо больше времени, чем 2 секунды.Проблема с осевым клиентом Остановка таймаут

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

Спасибо, Fell

+0

Вы можете включить код? – stevedbrown

ответ

1

Не используйте отправителя HTTP по умолчанию, переключиться на достоянию HTTP-клиент на основе отправителя. Подробности здесь - http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP - На той же странице есть сведения о том, как установить различные виды тайм-аутов.

+1

Выше решение не работает. Использование Axis 1.4 и Java 1.7. На самом деле, ни один подход не работает на время чтения Axis .. сюрприз! Пробовал все варианты, упомянутые ниже: http://wiki.apache.org/ws/FrontPage/Axis/AxisCommonsHTTP -/- http://www.coderanch.com/t/544075/Web-Services/ java/set-timeout-Axis-client -/- https://samaxes.com/2009/04/axis-14-read-timed-out-and-http-11/ – Santosh

2

В окурах клиента Axis есть возможность установить таймаут. Вы также можете использовать его. Обратите внимание, что тайм-аут измеряется в миллисекундах. check here

И если это Axis2, вы можете использовать, как это:

Stub s = new Stub(); 
ServiceClient sc = s.getServiceClient(); 
Options o = sc.getOptions(); 
o.setTimeOutInMilliSeconds(2000); //2 seconds 
sc.setOptions(o); 
s.setServiceClient(sc); 

Вы можете сделать ваши звонки после установки выше вещи.

Смежные вопросы