2011-09-30 45 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嗎?

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樹的遠程訪問被固定,所以你需要提供一個用戶和密碼(通過add-user.sh/add-user.bat腳本添加應用用戶)。

我在我自己的本地服務器上完成了這項工作,但InitialContext.list()返回的NamingEnumeration仍然是空的,儘管下面的查找工作正常。我在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("");