2009-03-24 2 views
1

내가 작성한 JNDI 및 EJB주는 : 통해 I 다른 성분 (예 : 서블릿)에서 액세스 할는 EJB를 원격 인터페이스와

@Stateless 
public class TestSessionBean implements TestSessionRemote 
{ 

    public void businessMethod() 
    { 
      System.out.println ("***businessMethod"); 
    } 
} 

서버에서 실행 :

ic = new InitialContext(); 
ic.lookup("myEJB"); 

나는 netBeans 6.5.1과 glassfish v2를 사용하고 있습니다.

내가 어떻게 할 수 있습니까?

감사합니다, 이도

답변

2

실제로 EJB3 사용하는 기본 명명 규칙은, 내가 주위를 얻을 수있는 방법을 찾을 수없는 한 느릅 나무. interfaceClass가 원격의 클래스입니다이

InitialContext ctx = new InitialContext(); 
ctx.lookup(interfaceClass.getSimpleName()+"#"+interfaceClass.getName()); 

뭔가를 할 수있는 원격 서비스를 ACESS하려면 TestSessionBean # package.TestSessionBean

:

여러분의 빈의 이름이 같은이 될 것입니다 인터페이스.

웹 서버에 대한 원격 인터페이스 (또는 해당 지역의 로컬)를 정의하지 않았 음을 유의하십시오. 당신은 다른 맥락에서 theejb에 접근 할 수 없을지도 모른다.

이름을 바꾸는 것에 관해서는 실제로 나는 anotations를 통해 가능하다고 생각하지 않습니다. 확실하지 않음

+1

죄송합니다. 거의 1 개월 후이 항목을 부활시킵니다. Glassfish v2에서는 @Stateless (mappedName = "fooBean")를 수행 할 수 있으며 "fooBean"을 사용하여 조회 할 수 있습니다. 이것은 벤더에 따라 다르며 이식 가능하지 않습니다. 글래스 피쉬 3 (EJB 3.1)에서 약간 변경되기 때문에 조심하십시오. Remote 인터페이스 조회와 함께 mappedName을 계속 사용할 수는 있지만 표준화 된 java : 전역 이름 지정 설정이 있습니다. 아직 혼란스럽지 않다면 http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html을 참조하십시오. – Jim

관련 문제