2009-12-15 4 views
1

다양한 위치에서 일부 데이터를 검색하기 위해 Stateless Session Bean을 실행 중입니다.무 상태 세션 빈 결과 캐싱?

이 SLSB의 캐싱을 달성하는 가장 좋은 방법은 무엇입니까?

요격기 사용 중? JBossCache 사용하기?

우리는 JBoss 5.0.1을 사용하고 있습니다.

답변

1

기술적으로, 상태 유지 세션 빈에서 상태를 유지할 수 있습니다. 단지 상태가 호출 사이의 컨테이너에 의해 지워질 수 있습니다. 결과적으로 캐시가 사라질 수 있기 때문에 캐시 자체를 Bean에 보관하지 않아야합니다.

이미 JBoss Appserver를 사용하고 있기 때문에 JBossCache는 분명히 당연한 것처럼 보입니다. jboss 서비스 디스크립터를 사용하여 JBossCache 인스턴스를 구성 할 수 있으며 EJB는 JMX/JNDI에서 캐시 인스턴스를 검색 할 수 있습니다. 이미 JBossAS에 모두 포함되어 있으므로 추가 종속성은 필요 없습니다.

JBossCache를 사용하면 클러스터에 분산 된 캐시 보너스도 추가로 제공됩니다.

+1

달성 할 수있는 기존의 인터셉터가 있습니까? (예 : 메소드 인수를 캐시 키로 사용하는 요격 ... 캐싱 코드와 비즈니스 코드를 섞어 놓지 않는 것이 좋습니다. – jruillier

+0

나는 선반 밖의 그런 것들을 알지 못하지만, JBoss EJB 인터셉터는 작성하기가 쉽기 때문에 자신 만의 롤백을 할 수 있습니다. – skaffman

0

steteless 세션 빈 자체는 호출간에 데이터를 저장할 수 없으므로 이름은 상태가 없음을 나타냅니다. 하나. 캐시를 보유하고이 빈을 상태없는 빈 메소드에 전달하는 상태 유지 세션 빈을 작성할 수 있습니다.

void someMethod(StateFulBean sfb){ 
    Cache cahce = sfb.getCache(); 
    ... 

} 

또한 EBJ 3.1을 사용할 때 싱글 톤 주석을 사용하고 캐시를 싱글 톤으로 세션 무 상태 세션 빈에 삽입 할 수 있습니다.

+0

EJB에서 참조되는 "상태"는 개체 상태가 아닌 대화 상태입니다. SLSB는 원하는만큼의 상태를 가질 수 있습니다. 동일한 빈의 두 가지 다른 호출 사이에서 생존하지 못할 상태입니다. – skaffman

+0

나는 대화 상태를 언급하고 있었다. 어쩌면 내가 명확하게 표현하지 않았지만 나는 영어 원어민이 아니기 때문에 사면을 간청합니다. – Sylar