Как получить интент синглтона в JBoss? - PullRequest
0 голосов
/ 11 июня 2011

У меня есть синглтон, который я должен создать в своем фильтре, и по какой-то причине я не могу получить его экземпляр при первых попытках пары.(Приложение, развернутое в JBoss EAP 5.1) Это то же самое решение без каких-либо изменений прекрасно работает с сервером приложений Jetty.Большое спасибо за ваш ответ заранее.

С уважением,

Роман

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Зачем вам нужен синглтон в вашем фильтре? У вас есть веб-приложение, контекст сеанса и запрос для добавления любых данных, которые вы хотите.

Тем не менее, не увидев ваш код, ~ 100% вероятно, что вы используете статическую переменную класса для хранения экземпляра? Если да, пожалуйста, обратите внимание, что классы ограничены загрузчиками классов, и это одна из многих причин, почему плохая идея прибегать к таким идиомам на сервере приложений (который в значительной степени гарантированно будет реализован с использованием иерархий загрузчиков классов). и т. д.) Очевидно, что у JBoss и Jetty разные подходы.

1 голос
/ 11 июня 2011

Если вы не хотите использовать какую-либо инфраструктуру внедрения зависимостей (Spring, Guice), сделайте это по старинке:

Установка ServletContextListener

В методе contextInitialized(ServletContextEvent sce) создайте свой синглтон и сохраните его как атрибут в ServletContext

Когда ваш фильтр будет инициализирован, вы сможете получить этот одноэлементный экземпляр из ServletContext, который передается внутри интерфейса FilterConfig в методе init вашего фильтра

...