Можете ли вы сделать тайм-аут вызова RPC через х секунд? - PullRequest
0 голосов
/ 13 августа 2010

Если у меня есть служба, которая выполняет вызовы RPC (скажем, веб-службам, службам отдыха или просто для очистки данных из URL-адреса и т. Д.), Могу ли я установить таймаут через 5 секунд?

Я не хочу, чтобы он зависал, а затем зависал, если удаленная служба не работает, попробуйте в течение x секунд, если она не работает, затем просто переходите к следующему вызову удаленной службы.

Ответы [ 5 ]

1 голос
/ 24 января 2012

Я думаю, что следующая ссылка от GWT будет полезна: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDelayed.html

0 голосов
/ 14 августа 2010

Если вы используете Apache HTTP Components , то сделайте следующее:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(httpParams, socketTimeoutMillis);
0 голосов
/ 13 августа 2010

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

Как дела в классе RPC? Какие библиотеки вы используете?

0 голосов
/ 13 августа 2010

Какой протокол вы используете?Это http или RMI?Наилучшим способом будет внедрение тайм-аута на канале подключения (например, Socket).Если это то, что вы хотите сделать, посмотрите на http://download.oracle.com/javase/1.5.0/docs/guide/net/properties.html

0 голосов
/ 13 августа 2010

Если это автономное приложение, то вы можете использовать ОС для его планирования (например, Task Scheduler в Windows).Если это не отдельное приложение, вы можете превратить его в задачу Java и использовать таймер Java для ее планирования.

Посмотрите на Java.util.Timer, и вот пример http://www.java2s.com/Code/Java/Development-Class/UsejavautilTimertoscheduleatasktoexecuteonce5secondshavepassed.htm

...