У меня есть приложение 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
Любые комментарии!
Да, переместите компонент в собственный проект, который развертывается отдельно и передает, например. через REST или RMI. – Smutje
@Smutje: Я не хочу использовать REST | RMI. Я хочу использовать CDI Inject. – Loc
Вы считали '@ Singleton'? http://stackoverflow.com/questions/8502836/jboss-weld-cdi-inject-the-same-instance-in-two-different-objects – Smutje