2014-07-04 2 views
0

글래스 피시 서버 4에 대한 인증 영역을 직접 작성했습니다. 레퍼런스에서 말한 것처럼, 영역 클래스와 로그인 모듈이있는 항아리를 domains/[domain]/lib에 넣었습니다. 모든 것이 작동합니다. 이제이 영역 라이브러리에서 비즈니스 빈에 액세스하려고합니다. 비즈니스 빈은 프로젝트의 EJB 부분에 있습니다. 그러나 영구적으로 실패합니다. 내 프로젝트는 "내-데모"라는이 경우라이브러리에서 JNDI를 통해 비즈니스 빈에 액세스하는 방법은 무엇입니까?

try { 
     Object object = InitialContext.doLookup("java:global/My-Demo-ejb/A"); 
     System.out.println("=====> Obj: " + object); 
    } catch (Exception e) { 
     logger.log(Level.SEVERE, "Looking up failed:"); 
     logger.log(Level.SEVERE, e.toString()); 
     e.printStackTrace(); 
    } 

을하고 EJB 서브 프로젝트는 "내-데모 - EJB"라는 : 나는 시도했다. 인터페이스 "A"는 다음과 같습니다

@Remote 
public interface A { 
... 
} 

거기 구현도 :

@Stateless 
@LocalBean 
public class AB implements A { 
... 
} 

는하지만 매번 내가 이것을 시도 예외 javax.naming.NameNotFoundException가 발생합니다. 또한 WAR 부분에 Bean을 넣으려고하면 JNDI 문자열과 함께 실패합니다. java:global/My-Demo-war/A

실수가 있습니까?

EDIT : JNDI 문자열 java:global/Demo/Demo-ejb/AB!de.login.security.AB을 사용하는 경우 작동합니다. 패키지의 전체 경로를 참조하는 것보다 쉬운 방법은 없으며 대신 AB 대신 인터페이스 이름과 함께 작동하지 않는 이유는 무엇입니까?

@Stateless(name="etc") 

그리고 당신이 그것을 액세스 할 수 있습니다 : 당신이 좋아하는 응용 프로그램 서버에 의존하는 JNDI 이름을 사용할 수 있습니다

답변

1

글래스 피쉬에서

InitialContext.doLookup("etc") 

그러나이 경우에만 작동합니다.

관련 문제