2010-06-18 8 views

답변

1

내가 무슨 뜻인지 정확히 모르겠다. 먼저 stateless EJB와 stateful EJB를 구별해야합니다.

  • 비 상태 EJB 는 잘 하고, 데이터를 포함하지 않아야합니다. 앱. 서버는 언제든지 파괴하거나 재구성하기로 결정할 수 있습니다. 조회 할 때 생성되는 특정 인스턴스에 대한 참조를 실제로 보유하지는 않습니다. 앱. 서버는 EJB 풀을 유지 관리하며, 그 중 하나는 호출 당 사용됩니다.

  • Stateful EJB는 데이터를 포함 할 수 있습니다. Bean을 조회 할 때 만들어지는 하나의 특정 인스턴스에 대한 참조를 보유합니다. 콜백 메소드는 @PostConstruct 또는 @PreDestroy으로 지정할 수 있습니다 (이러한 콜백은 상태없는 EJB에도 있지만 의미가 없습니다). 이 메소드가 호출되기 전에 뭔가를 수행해야하는 경우 말했다

, 나는 당신이 요격 사용하는 것이 좋습니다 (@Interceptor을 사용하여, Stateless 및 Stateful EJB를 작동). AOP와 마찬가지로 bean 메소드가 실제로 실행되기 전후에 무언가를 수행 할 수있는 기회를 얻는다.

+0

데이터는 클라이언트에 독립적이므로 상태가없는 bean을 만들었습니다 (잘못 입력했을 수 있음). 메서드 호출 전에 config 파일을 읽어야합니다. 이 구성은 배포 후에 변경 될 수 있으므로 다른 사용자가 내 EJB를 찾을 때마다이 데이터를 업데이트해야합니다. – Filip

+0

지금 봅니다. 구성 데이터는 비즈니스 데이터가 아니며 귀하의 경우에는 완전히 정적이지 않습니다. 나는 매번 구성을 재구성하면 성능이 현저해질 것을 두려워합니다. 특정 기간이 경과하면 타임 스탬프를 저장하고 데이터를 다시로드 할 수 있습니다. 정적 필드에 인스턴스 필드에 config를 저장하거나 EJB 3.1을 사용하는 경우'@ Singleton' 빈을 사용할 수 있습니다. 인스턴스 필드는 Bean 인스턴스마다 하나의 설정을 갖게된다는 것을 의미합니다. 정적 필드는 하나의 설정 만 의미하지만 올바르게 동기화해야합니다. – ewernli