2009-03-11 2 views
1

안녕하세요! Java EE와 Stackowerflow에 비교적 친숙합니다. 친절하겠습니다 :-)Ejb 3, stateful 세션 빈과 협동하는 메시지 구동 빈?

어떤 상태 변화에서든 Java 메시지를 트리거하는 장치가 있습니다. 이러한 장치는 일반적으로 약 30-90 분 간격으로 활성화됩니다. 각 이벤트 메시지에는 이벤트 세부 사항 외에도 장치 ID가 들어 있습니다.

내 응용 프로그램의 Central은 이러한 이벤트를 구독하는 메시지 기반 Bean입니다. 이벤트가 발생할 때마다 데이터베이스에 대한 정보를 조회해야합니다.

각 활성 장치와 상태 기반 세션 빈을 연결할 수 있다면 정말 대단 할 것입니다! 이 웹 응용 프로그램이 있었다면 http 세션을 사용하여 stateful bean에 대한 핸들 또는 참조를 저장할 수있었습니다 (나는 맞습니까?). 내 메시지 bean에서이를 아카이브 할 수있는 방법이 있습니까?

+0

이 장치 데이터는 변경 가능합니까? 기기가 수정되면 무엇을하고 있습니까? 비즈니스 로직에서 보유하고있는 엔티티의 상태는 데이터베이스의 표현과 다릅니다. 제 생각에는 데이터는 한 곳만 있어야합니다. – Timo

답변

2

당신이 설명하는 것처럼 할 수 없다는 점을 제외하고는 좋을 것입니다. MDB (및 SLSB)는 정의에 따라 무 상태이므로 호출하는 동안에 만 대화를 유지하는 것이 안전합니다.

결국 스펙을 깨고 어딘가에 (아마도 MDB 자체에서) 정적 속성을 만들 수는 있지만, 이식성이 떨어지고 확장 성도 보장되지 않습니다.

제 제안은 JPA 레벨에서 캐시를 사용 설정하는 것입니다 (자세한 내용은 지속성 공급자에게 환경 설정 참조). 그래서 필요한 데이터가 빠르면 (정말로 빠름) 조회 할 수 있습니다. 이것은 휴대 가능하고 클러스터 친화적입니다. 이것이 내가 프로젝트에서 사용하는 방법이며, 나는 그것에 매우 만족합니다.

희망이 있습니다.

0

나는 특정 제품을 추천하는 것이 좋지 않지만 테라코타 서버는 이와 같은 요구 사항을 충족하지 못하고 있습니까?