Tomcat:用于与Tomcat 5.5 JNDI树建立外部客户端连接的init上下文参数是什么?

时间:2009-04-13 16:10:27

标签: tomcat jndi

目前我正在将它用于JBoss,但我还需要一些外部Tomcat:

Properties props = new Properties();
props.put(Context.PROVIDER_URL, "jnp://localhost:1099");
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming.client");
props.put("j2ee.clientName", "abtest");

使用Google搜索我发现了这些,但我无法弄清楚Tomcat的端口配置接受JNDI连接......

props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.naming.java.javaURLContextFactory");
props.put(Context.PROVIDER_URL, "http://localhost:???");

请你能帮帮我吗?

2 个答案:

答案 0 :(得分:6)

据我所知,tomcat不支持远程访问其JNDI树,因此只能从tomcat进程访问它。因此,tomcat为默认的InitialConext设置所有初始化参数,你可以像这样使用它:

// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/EmployeeDB");

// Allocate and use a connection from the pool
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();

您还可以在this link

中了解更多tomcat中的JNDI

答案 1 :(得分:1)

我发现这个在Tomcat中使用的有用链接:EJB in Jboss called from Tomcat

这似乎是愚蠢的,但事实上,该主题的方法足以被考虑。 主要思想是:Tomcat服务器有自己的JNDI系统,因此内部web-app必须首先声明他们想要使用的JNDI,然后使用该声明来查找远程服务器的对象(Jboss的EJB)。

希望能帮到你,

此致