2011-06-01 86 views
0

我在我的應用程序中使用JSF和EJB作爲兩個單獨的項目。下面我描述了用於JNDI查找的代碼配置JNDI查找端口jboss + EJB

protected final Object lookup(Class className) throws NamingException { 

     Properties properties = new Properties(); 
     properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); 
     properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); 
     properties.put("java.naming.provider.url",ProjectConstants.PORT_NUMBER); 
     initialContext = new InitialContext(properties); 
     return initialContext.lookup(ProjectConstants.DEPLOYMENT_NAME+"/"+className.getSimpleName().substring(0, className.getSimpleName().lastIndexOf("Remote")) + "/remote-" + className.getName()); 
    } 

是否有任何特殊配置需要在jboss中用於端口,我用於查找?

回答

1

默認情況下,JNDI端口是1099。如果你想要另一個端口啓動jBoss -Djboss.service.binding.set=ports-01。這將爲每個端口增加100個。 1099 - > 1199等

+0

是的你是對的 – chetan 2011-06-01 17:14:55

1

默認端口是1099,上下文加載器將嘗試執行自己的發現。

但是,你也可以指定一個端口到java.naming.provider.url,比如這將工作烏斯以及:

properties.put("java.naming.provider.url", "jnp://localhost:15102"); 

我還recommened你不使用硬編碼字符串,但依靠現有的常數在javax.naming.Context,例如:

final Properties props = new Properties(); 

    props.put(Context.SECURITY_PRINCIPAL, username); 
    props.put(Context.SECURITY_CREDENTIALS, password); 
    props.put(Context.INITIAL_CONTEXT_FACTORY, MY_JNDI_FACTORY); 
    props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); 
    props.put(Context.SECURITY_PROTOCOL, MY_JNDI_PROTOCOL); 
    props.put(Context.PROVIDER_URL, server);