我在我的应用程序中使用JSF和EJB作为两个单独的项目。下面我描述了用于JNDI查找的代码
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 for port中是否有任何特殊配置要求,我用于查找?
答案 0 :(得分:2)
默认情况下,JNDI端口为1099
。如果你想要另一个端口用-Djboss.service.binding.set=ports-01
启动jBoss。这将为每个端口增加100。 1099 - > 1199等。
答案 1 :(得分:1)
默认端口是1099,上下文加载器将尝试进行自己的发现。
但是,您也可以指定java.naming.provider.url
的端口,例如,这也适用于:
properties.put("java.naming.provider.url", "jnp://localhost:15102");
我还建议您不要使用硬编码字符串,而是依赖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);