2013-02-03 6 views
0

나는 여러개의 상태없는 bean과 그 bean에 의해 불려지는 서비스 클래스를 가지고있다. Bean 인스턴스를 해당 서비스 클래스에 직접 전달할 수는 없습니다.ejb는 현재 실행중인 bean을 얻는다.

현재 실행중인 Bean 인스턴스를 가져올 방법이 있습니까? 기존의 메커니즘이 있는지 궁금해합니다. 그래서 어딘가에 빈 인스턴스를 저장하기 위해 인터셉터와 관련 로직을 작성할 필요가 없습니다.

더 구체적으로 :

public class MyBean implements MyBeanInterface, CommonBeanInterface { 
    public void businessMethod() { 
     SomeService service = ... // service is somehow obtained 
     service.doWork(); 
    } 
} 

public class SomeServiceImpl implements SomeService { 
    public void doWork() { 
      CommonBeanInterface currentBean = getCurrentBean(); // its implementation I need 
    } 
} 

그래서 서비스 클래스에 나는이 서비스를 호출 빈 인스턴스를 얻을 필요가있다.

정보가 도움이 될 것입니다.

답변

1

해당 서비스를 호출 한 Bean을 식별하는 API가 없다고 생각합니다. 서비스가 빈과 동일한 컨테이너에있는 경우 (즉, 관련된 원격 호출이없는 경우) 동일한 스레드에서 실행됩니다. 따라서 ThreadLocal을 사용하여 정보를 전달할 수 있습니다.

+0

예, 'ThreadLocal'은 내가 사용하고 싶었지만 기존 API가 있다고 생각합니다. –