Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > J2EE и демон объект(компонент)


Автор: VSergeyV 7.6.2008, 13:01
Необходимо чтобы при запуске J2EE приложения создавался объект(компонент), который что-то делал, и был жив на всем протежении работы приложения - как это сделать? Могут ли это EJB 3, или какой pattern использовать, или еще как то?

Автор: powerOn 8.6.2008, 22:17
Сам ищу такую возможность. Но пока не нашёл, ибо стандартного пути (например EJB-singleton, который появится в версии 3.1) видимо нет. Поэтому, возможно, придётся реализовывать такой сервис как Stateless Bean, а состояние хранить в БД. Извращение конечно, (по крайней мере мне не нравится... неестественно как-то...) но пока другого пути я не вижу. 

Впрочем, ещё как вариант классический singleton, но тут могут возникнуть споры, по поводу зло это или нет.

Автор: VSergeyV 9.6.2008, 07:39
Цитата(powerOn @  8.6.2008,  22:17 Найти цитируемый пост)
 Поэтому, возможно, придётся реализовывать такой сервис как Stateless Bean, а состояние хранить в БД

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


Цитата(powerOn @  8.6.2008,  22:17 Найти цитируемый пост)
Впрочем, ещё как вариант классический singleton

видимо только так, еще посоветовали использовать таймер

Автор: VSergeyV 9.6.2008, 11:16
Цитата(VSergeyV @  9.6.2008,  07:39 Найти цитируемый пост)
видимо только так, еще посоветовали использовать таймер

нашел еще под используемый App Server WebLogic класс weblogic.application.ApplicationLifecycleListener с событиями (postStart, postStop, preStart, preStop), даже лучше таймера будет)

Автор: mindflyer 9.6.2008, 17:38
Под JBoss для этих целей используем MBean's. Более того, у нас практически вся логика именно в них реализована, а EJB3 используем для секьюрити и кластеризации.

Автор: VSergeyV 10.6.2008, 08:33
Цитата(mindflyer @  9.6.2008,  17:38 Найти цитируемый пост)
Под JBoss для этих целей используем MBean's

а подробней можно? smile  //просто как я понял это - не самое хорошее рещение будет

Автор: powerOn 10.6.2008, 11:16
Это не портируемое решение. С JBoss тогда не слезешь.

Автор: ki22 3.8.2010, 15:11
Может я не понял вопрос, но если на клиенте создать remote-представление на Stateful бин, то он (вернее его состояние) 
будет жить, пока живет его представление и не вызывается метод Remote

Автор: ki6opr 4.8.2010, 03:33
а нельзя добавить веб приложение к проекту ? и используя ServletContextListener создавать нужный объект при запуске ? 
у меня так в биллинге (написан на EJB) запускается Quartz (планировшик) который уже запускает нужные службы (типа обработки зависших транзакций, уведомлений клиентам и тд) которые должны запускаться через некоторые промежутки времени.

и все замечательно переносимо, потому что стандартно (разработка на Glassfish а продакшен на Jboss)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)