2015-07-15 4 views
1

У меня есть сервлет, который делает много файлов ввода-вывода для общей сети и поэтому длится долго. Я хочу реализовать индикатор выполнения на переднем конце, а не простой spinner gif, чтобы пользователь знал, что что-то на самом деле происходит, и это не просто «застряло».Возможны ли асинхронные сервлеты в Java 1.5?

Я запускаю Java 1.5 на Websphere 6.1, и нет никакого улучшения в поле зрения. Я знаю с помощью спецификации Servlet 3.0, асинхронная поддержка сервлета встроена, но мне интересно, есть ли обходной путь или что-то подобное, где я могу подделать его, чтобы выглядеть асинхронным?

я сделать простой AJAX вызова с помощью JQuery:

$.ajax({ 
    url: "/servlet.action", 
    success: function(json, status, xhr) { 
     alert("success"); 
    } 
}); 

Может сервлет периодически отправлять обновления статуса обратно клиенту, как это делает свой путь через процесс, или если клиент делает периодические запросы состояния на сервлет (или другой сервлет, который имеет доступ к статусу главного сервлета)?

В настоящее время я не могу обновить версии Java и/или Websphere.

+0

Я думаю, что ваша проблема - это версия websphere. См. [Здесь] (http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_websockets.html) "Версия 8.5.5.3 а позже веб-сервер WebSphere поддерживает полнодуплексную связь » –

+0

Возможно, вам лучше использовать WebSocket для этого – ControlAltDel

ответ

0

Я нашел обходной путь для этого:

  1. Отправить асинхронный запрос, чтобы начать процесс. Этот сервлет обновляет статический объект со статусом обработки. (например, карта какого-либо идентификатора сеанса/запроса → состояние процесса)
  2. Периодически отправляйте другой асинхронный запрос другому сервлету с доступом к этому статическому объекту и возвратите текущий статус. Статус может быть числом (% полным), строкой (сообщение состояния) или объектом, который содержит кучу информации.
  3. Затем периодический запрос может обрабатывать статус и обновлять индикатор выполнения или что-то в этом роде.

Это может быть сделано в любых контейнерах сервлетов с любой версией Java.

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