2010-03-09 6 views
2

디자인 문제가 있습니다.Java EE 구성 요소 간의 알림

내 응용 프로그램에 여러 Java EE 구성 요소가 있습니다. 간단히 말해 서비스 제공자 (비 UI) 역할을하는 사람과 다른 사람 (UI 웹 응용 프로그램) 인 사용자입니다.

소비자는 시작하는 동안 서비스 공급자 (기본적으로 DB에서 데이터를 읽음)에서 구성 데이터를 가져 와서 캐시에 저장합니다.

캐시는 데이터베이스에서 수행 된 모든 변경 사항을 반영하기 위해 주기적으로 새로 고쳐집니다.

문제는

는 별도로 캐시 새로 고침에서, 나 또한 누군가를 다시로드하십시오 구성이 변경되었습니다 DB가 변경 될 때 소비자에게 통지합니다.

이것을 달성하기 위해 어떤 알림 메커니즘을 사용할 수 있습니까?

+0

참조 http://stackoverflow.com/questions/2406984/what-are-the-ternational-of-jms – ewernli

+0

BTW, 나 don 당신의 질문을 이해하지 못합니다. 캐시가 소비자입니까? 캐시를 새로 고치는 메커니즘이 있으므로 소비자는 구성 변경 시점을 알 수 있습니까? 그렇지 않으면 시간 소인을 사용하십시오. 주기적으로 시간 소인을 확인하고 캐시의 시간 소인과 db의 시간 소인이 다른 경우 구성을 다시로드합니다. – ewernli

답변

3

JMS 주제/대기열을 사용합니다. 주제 및 모든 청취자에게 "REFRESH_CACHE"메시지를 보내는 제작자

+0

대기열은 PTP (point-to-point)이므로 실제로 작동하지 않습니다. 둘 이상의 소비자가 있다고 가정하면 주제 (pub/sub)를 사용하려는 것입니다. – mtpettyp

1

주제를 사용합니다. 데이터베이스가 변경되면 주제에 메시지를 보낼 수 있고 모든 클라이언트는 메시지를 수신 할 수 있습니다.

1

Observer 디자인 패턴을 살펴보십시오. 소비자가 목록에 소비자를 저장하고 흥미로운 일이 발생할 때이를 알릴 수 있습니다.

0

OBSERVER 패턴이 필요할 수 있습니다.
콜백을 사용하여 소비자 (귀하의 UI 앱)에게 알립니다. 통지를 위해 JMS를 사용할 수 있습니다.