글래스 피시 서버 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 이름을 사용할 수 있습니다