2012-02-20 3 views
0

Я вызываю поток из бэк-компонента, который делает много действий db. Я хочу добавить сообщение в контекст, , но пока я не дойду до конца метода run(), контекст уже выпущен. Как я могу добавить сообщение в контекст внутри метода run() потока, без зависимости от компонента?facescontext освобождается до завершения резьбы для работы

ответ

0

Да .. Вы можете сделать это с помощью AJAX толчке ... Вы можете использовать простое лицо или все, что вы хотите сделать, толкающее ...

Вы должны сделать боб для уведомлений .. и всякий раз, когда вам хотите уведомить о клиенте (как вам нравится) сообщить, что боб как-то ... думаю об этом :)

Таким образом, вы можете объявить клиенту через 30 минут, что он хотел это сделать ...

В худшем случае вы можете использовать функцию setInterval в javascript .. периодически проверять сервлет на сообщения ...

Вот a tutorial for commet ..

Подробнее о comet here

(Да .. с AJAX толчок довольно длинный путь .. - если вы хотите сделать это самостоятельно)

приветствий ,

+0

В моем веб-сайте мы не используем премьер или лед. Есть ли другой вариант, который вы знаете? – OshikawaL

+0

вы можете использовать jQuery или что-то, что хотите (даже чистый javascript - я предлагаю jQuery всем, потому что это crossbrowser) .. и сделайте сам ajax push ... Я думаю, вы можете сделать это с помощью сервлета. Прочитайте это: http : //en.wikipedia.org/wiki/Comet_ (программирование), но я предлагаю вам использовать простые шрифты только для необходимой страницы :) – Alex

+0

Возможно, вы можете связать мне пример, потому что я не очень хорошо его знаю? – OshikawaL

0

Экземпляр контекста лиц привязан к нити, обслуживающей текущий запрос через ThreadLocal. Вы можете попробовать восстановить экземпляр FacesContext и передать его в качестве переменной в поток перед его запуском.

+0

Я пробовал, и он не работает. – OshikawaL

+0

Я предполагаю, что вы начинаете свои темы на этапе приложения-приложения? Если это так, вы ждете их завершения до возвращения строки результата? – Nerrve

+0

Видимо, нет, учитывая проблемы :) – BalusC

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