2012-07-15 2 views
1

서블릿에서 가져 오는 매개 변수에 따라 EJB 객체를 동적으로 호출하려는 서블릿이 있습니다.자바가 서블릿에서 EJB를 호출합니다.

EJB 객체와 메소드를 호출하는 가장 좋은 방법은 무엇입니까?

UPDATE : 예를 들어 , 나는이 얻을 매개 변수는 세션빈의 이름이고, 그래서 (그것의 이름)을 호출 한 다음 내부의 몇 가지 방법을 호출 할, 그래서 동적으로 생성됩니다.

감사의 말을 전하고 싶습니다.

+1

ID가 서블릿에 주어진 매개 변수 (컨텍스트 검색을 의미 함)에 의존하는 EJB를 호출하거나 항상 동일한 EJB에서 호출되는 메서드 만 수정 하시겠습니까? – fvu

+0

@fvu :'서블릿에 부여 된 매개 변수에 따라 ID가 다른 EJB를 호출합니다 .' - 이것이 내가 원하는 것인데, EJB가 존재하지 않기 때문에 이름으로 생성하고 몇 가지 메소드를 호출하고 싶습니다. 감사합니다. – user590586

답변

3

JNDI 조회를 통해이를 수행 할 수 있습니다.

InitialContext ic = new InitialContext(); 
MyEJB ejb = (MyEJB) ic.lookup("java:comp/env/MyEJB"); 

은 서블릿 매개 변수를 기반으로 조회 문자열을 생성, MyEJB의 원격 인터페이스를 검색합니다. 메소드에 대한 단서가 없다면, 리플렉션을 사용하여 알아 내야합니다.

+0

이것은 JSP에서만 필요합니다. 서블릿은'@ EJB' 어노테이션을 사용하여 EJB를 삽입하기 만하면됩니다. – Lion

+1

@Lion 빈의 이름은 서블릿 클라이언트 요청 .... 아주 재미있는 요구와 함께 가고 있습니다. – esej

+0

서블릿 매개 변수에 정확한 bean 이름이 포함되지 않았 으면 좋겠다. incomming "명령"에서 스위치를 수행 한 명령 패턴이 있다면 그 명령에서 빈 이름을 결정하고 해당 이름을 사용하여 조회를 수행하는 것은 괜찮습니다. –

0

@EJB 주사의 전체 시리즈없이이 결과를 얻는 가장 쉬운 방법은 조회를 사용하는 것입니다. 의 당신이 EJB1의 인스턴스를 필요로 파악했다고 가정하자 조회 코드는 다음과 같이 표시됩니다

private EJB1 ejb1 = null; 
try { 
    InitialContext ic = new InitialContext(); 
    ejb1 = (EJB1) 
      ic.lookup(ejb1.class.getName()); 
    ejb1.method1(); 
} catch (Exception ex) { 
    logger.log(Level.SEVERE,"Couldn’t create converter bean.",ex); 
} 

것은 우리 서버의 예를 확인 정확한 구문은 InitialContext를 및 조회의 생성에 사용하는 요구.