일부 도우미 클래스에서 엔티티 관리자를 주입하려고하는데 세션 빈에서 도우미에게 전달할 수 있지만 문제는 정적 초기화에서 엔티티 관리자를 사용해야합니다. 헬퍼 클래스 (와 같은 어떤 것)의 블록 :EJB 도우미 클래스에서 엔티티 관리자를 조회 중
class MySessionBeanHelperClass
{
// staff here...
static
{
SomeClass s = new SomeClass(entityManager);
}
}
그래서, 나는 유일한 방법은 그것을 주입 대신 엔티티 관리자를 조회하는 것입니다 생각합니다. 전달 된 SessionContent를 사용하면 여기에서 작동하지 않습니다.
두 번째 질문은 다음과 같습니다. 리소스 (이 경우 엔티티 관리자)를 조회하는 데 일반적인 방법을 사용하면 (다음과 같은 :)
Context ic = new InitialContext();
em = (EntityManager) ic.lookup("java:comp/env/persistence/em");
이 엔티티 관리자가 사용하는 모든 트랜잭션을 Bean 관리 트랜잭션으로 변환합니까 ??
감사합니다.
'EJB에서 알려진 문제는 앱에서 일회성 작업을 수행하는 "표준"방법이 없다는 것입니다. 이는 사실이 아닙니다. @Singleton과 @Startup을 결합하면 EJB 3.1에서 정확히 수행됩니다. TS가 EJB 3.0을 사용하고 있음을 나타내므로이 옵션은 불행히도 옵션이 아닙니다. –
@arjan : 오, 그래서 그들은 3.1에서 그것을 고쳤습니까? 좋은! –
네 말이 맞아, 나쁜 디자인 인 것 같았다! –