2015-02-02 3 views
2

У меня есть приложение JavaEE, в котором есть 2 веб-приложения. У меня также есть другой веб-модуль библиотеки, который содержит common_bean, который аннотируется @ApplicationScopedМожем ли мы предоставить CDI @ApplicationScoped экземпляр bean-компонента через веб-приложение в том же EAR?

Мой вопрос: могу ли я поделиться экземпляром common_bean через два веб-приложения?

Обновлено - Я сделал тест

В Web App1 (/ web1)

@WebServlet("/Servlet1") 
public class Servlet1 extends HttpServlet { 

@Inject 
CommonBean commonBean; 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    commonBean.setValue("Servlet1: " + System.currentTimeMillis() + "--" + commonBean); 
} 
} 

В Web App2 (/ web2)

@WebServlet("/Servlet2") 
public class Servlet2 extends HttpServlet { 

@Inject 
CommonBean commonBean; 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    commonBean.setValue("Servlet2: " + System.currentTimeMillis() + "--" + commonBean); 
} 
} 

Результат

  • Если я бегу/Web1/servlet1 FIRST затем Run/Web2/servlet2:

    /Web1/servlet1 ------- Работали

    /Web2/servlet2 ---- --- Не удалось за исключением CDI

  • Если я бегу/Web2/servlet2 FIRST затем Run/Web1/servlet1: (Restart сервер затем повторно проверить)

    /Web2/servlet2 ------- Работал

    /Web1/servlet1 ------- Не удалось за исключением CDI

Любые комментарии!

+0

Да, переместите компонент в собственный проект, который развертывается отдельно и передает, например. через REST или RMI. – Smutje

+0

@Smutje: Я не хочу использовать REST | RMI. Я хочу использовать CDI Inject. – Loc

+0

Вы считали '@ Singleton'? http://stackoverflow.com/questions/8502836/jboss-weld-cdi-inject-the-same-instance-in-two-different-objects – Smutje

ответ

2

Я нашел проблему. Мне нравится публиковать решение здесь. Это может помочь кому-то:

Решение: Настройка модуля веб-библиотеки в качестве EAR модуля Ассамблеи (Lib модуль баночка) - Делая это, только экземпляр фасоли, созданного и этот экземпляр будет общим для всех веб-приложений в том же EAR.

Я не уверен, что это спецификация CDI или NOT, но она работала как на Glassfish & Wildfly.

+0

Это, скорее всего, сервер приложений. На какой сервер приложений вы развертываете? –

+0

@JohnAment: Смотрите мое обновление! – Loc

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