2011-09-30 3 views
0

jboss 7에 배포 된 ejb-jar에는 jdni 바인딩 "java : global/foo! IFoo"가 있습니다. Jboss 관리 콘솔에이 바인딩이 표시됩니다. 기본적으로 jndi 포트는 1099입니다. jboss의 클라이언트가 해당 바인딩에 객체를 가져 오지만 같은 시스템에서 실행되는 독립 실행 형 클라이언트는 그렇지 않습니다.jboss jndi 컨텍스트가 비어 있습니다.

Properties properties = new Properties(); 
properties.put("java.naming.factory.initial", 
       "org.jboss.as.naming.InitialContextFactory");  
properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); 
properties.put("java.naming.provider.url","jnp://localhost:1099"); 
Context ctx = new InitialContext(properties); 
NamingEnumeration<NameClassPair> list = ctx.list(""); 
while (list.hasMore()) { 
    System.out.println(list.next().getName()); 
} 

결과가 없습니다. 또한 위의 이름에 대한 조회가 실패합니다. 어디에 문제가 있습니까?

답변

2

원격 JNDI 조회 지원은 JBoss AS 7.1.0.Final (AS7-1338)에서만 구현 된 것으로 보입니다.

원격 조회를 수행하는 JNDI 속성도 변경되었습니다. 이러한 JNDI 속성을 사용하여 InitialContext을 인스턴스화 할 수 있습니까? 당신이 사용자와 암호 (add-user.sh/add-user.bat 스크립트를 통해 응용 프로그램 사용자를 추가)를 제공해야하므로

properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
properties.put(Context.PROVIDER_URL, "remote://localhost:4447"); 
properties.put(Context.SECURITY_PRINCIPAL, "user"); 
properties.put(Context.SECURITY_CREDENTIALS, "password"); 

JNDI 트리에 대한 원격 액세스가 확보된다.

내 로컬 서버에서이 작업을 수행했지만 NamingEnumerationInitialContext.list()에 의해 반환됩니다. 아래의 조회가 제대로 작동하더라도 여전히 비어 있습니다. 나는 JBoss forum에 대한 답변을 올렸지 만 지금까지는 운이 없다.

// This lookup works fine 
System.out.println(ctx.lookup("jms/RemoteConnectionFactory").getClass().getName()); 
// ... but this list doesn't (empty enumeration) 
NamingEnumeration<NameClassPair> list = ctx.list(""); 
관련 문제