2014-07-17 21 views
0

엔터프라이즈 응용 프로그램에서 웹 레이어를 EJB 레이어에서 분리하고 두 개의 별도 서버에 해당 파일 (jar 및 war)을 배포하려고합니다. 내 응용 프로그램을 방문하는 모든 사용자에 대해 데이터베이스 세션을 열고 싶지 않기 때문에 메모리에있는 데이터베이스의 데이터 표현을 저장하는 백업 빈이 있습니다. 사용자가 응용 프로그램을 방문 할 때마다 그는 뒷받침 빈의이 데이터 만 보게됩니다.JavaEE 데이터베이스 변경 후보기 업데이트

이제 데이터베이스 변경 사항이 완료 될 때마다이 데이터를 업데이트해야한다는 문제점이 있습니다. 지금까지는 CDI 이벤트를 사용했습니다. EJB는 변경이 이루어지고 백킹 빈이 이러한 이벤트를 듣고 데이터베이스 세션을 생성하고 내용을 업데이트 할 때 CDI 이벤트를 발생시킵니다.

이제 웹 응용 프로그램과 EJB 모듈을 별도의 컴퓨터에 배포하려고 했으므로 CDI 이벤트가 동일한 귀로 제한되어 있기 때문에 더 이상 작동하지 않습니다. 나는 이미 하나의 서버에 내 귀 모듈 전체를 배치하려고 시도했는데 이벤트가 정상적으로 작동해야하므로 이상한 backing bean에 의해 등록되지 않았다. ...

그럼 이제 내 질문이있다. JMS를 사용하여 백업 빈 데이터를 업데이트 하시겠습니까? 나는 이것이 이국적인 유스 케이스는 아니지만이 문제를 다루는 방법에 대한 정보를 찾을 수 없다고 생각한다.

+0

읽기 전용 응용 프로그램입니까? 그렇지 않으면 여러분이 묘사 한 접근법은 매우 약합니다. – Yuri

답변

0

사용중인 Java EE의 버전을 지정하지 않았지만 7 일 경우 WebSocket API이 있습니다. 서버 엔드 포인트를 사용하는 브라우저 기반이 아닌 Client Enpoint가 Oracle WebLogic 12 documentation에 있음을 알 수 있습니다.

또는 웹 응용 프로그램에 RESTful Web Service을 구현할 수 있습니다.이 응용 프로그램은 업데이트를 알려주기 위해 비즈니스 응용 프로그램에서 호출합니다.

+0

죄송합니다. JavaEE 6을 사용하고 있습니다. EJB 구성 요소에 의해 트리거되는 Servlet을 사용하려고 생각했습니다. 그건 당신의 아이디어와 비슷하지만 내 생각에이 접근법은 조금 더러운 것 같습니다. – nico1510

+0

컨테이너 전용 솔루션이나 다른 웹 소켓 구현을 사용할 수 있습니다. WebSocket을 사용할 수 없기 때문에 푸시를 사용할 수 없으므로 JMS 또는 웹 서비스를 통해 변경 사항을 폴링하거나 알림 메커니즘을 사용해야합니다. –