10 분마다 실행되는 백그라운드 서비스가 있습니다.SEAM : 동적으로로드되는 클래스에서 EntityManager 및 Logger를 가져 오는 방법은 무엇입니까?
이 서비스는 작업을 수행하기 위해 DB에 쿼리를 실행합니다. Class.forName()을 사용하여 작업에 따라 다른 비즈니스 로직을 가진 클래스를로드합니다. 그들은 물론 같은 인터페이스를 구현합니다.
SEAM 구성 요소로 선언되었지만 entityManager 또는 Logger를 사용하려고하면 NPE가 발생합니다.
내 자신의 질문에 답하기 위해 Class.forName()이 SEAM의 주입 메커니즘을 따르고 종속성을 주입 할 기회가 없기 때문에 이것이라고 생각합니다.
나는 클래스를로드 한 후,이 코드들을 직접 삽입함으로써 해결할 수있을 것이다. 그렇게 할 수있는 더 좋은 방법이 있습니까?
감사합니다.
EJB 3 타이머를 사용하고 있습니다. 이상하게도 나는 다른 질문에서 언급 한 '문맥 상 문제 없음'을 가지고 있지 않다. Component.getInstance (String, boolean)를 사용하여 구성 요소를로드하면 lyfecicle.beginCall()을 호출 할 필요가 없으므로 문제가 해결되었습니다. 이제는 EntityManager 및 로거를 사용할 수 있습니다. 감사! –
@Cleber Goncalves 의견에 감사드립니다 – stacker