Axis2, используя Thread.sleep для блокировки - PullRequest
1 голос
/ 02 июля 2010

В настоящее время я пишу Java WebService с помощью axis2. Однако один конкретный запрос требует от меня постоянного опроса состояния на другом сервере в течение 3-10 секунд.

Я хочу использовать Thread.sleep для опроса, как каждые 500 миль в течение 3 секунд. Имеет ли это какое-либо значение, такое как проблема производительности, или кто-нибудь может предложить лучшую идею?

EDIT Моя архитектура такова

Клиент <---> axis2 <---> опрашивает сервер в течение 3-10 секунд

Ответы [ 2 ]

1 голос
/ 03 июля 2010

Существует несколько различных опций:

Если вы можете изменить клиента, то может быть хорошей идеей перенести ожидание в клиент.Это означает, что на сервере нет загруженных потоков.

Таким образом, у вас будет две веб-службы: одна для инициализации запроса, вторая для получения результата.Клиент (не сервер оси) будет вызывать первый веб-сервис, а затем второй, возможно, несколько раз.

Это имеет то преимущество, что вам не нужно выполнять какую-либо работу с потоками на сервере (чтозначительно упрощает жизнь).Код потока находится в клиенте.

Если вы в конечном итоге спите на своем сервере, убедитесь, что у вас достаточно потоков, если вы используете Tomcat, см. Рекомендации по настройке Apache /Tomcat

1 голос
/ 02 июля 2010

Другим примером является возвращение исходящего звонящего с флагом receive_ok, а затем сохранение результатов на вашем сервере, когда они возвращаются со второго сервера. Первый сервер затем будет переподключен, и тогда вы сможете либо вернуть результаты, либо тот факт, что они еще не вернулись. Преимущество этого состоит в том, что вы можете делегировать опрос другому экземпляру и не связывать свой исходный сервер.

...