如何查找(JDBC)JNDI资源?

时间:2013-04-16 16:51:29

标签: java tomcat jndi

我们有一个个人java库,它部署在tomcat服务器上(v5.5& v6)。 该库与许多Web应用程序共享,因此它部署在tomcat目录中的shared / lib上。

异常,我必须在这个库中创建一个新类,通过JNDI查找jdbc数据源。

为此,我的代码在这里:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource dataSource = (DataSource) envCtx.lookup("jdbc/corp.xx.xx.xxxxDS");

所有上下文都没有问题地实例化。但是当它查找jdbc数据源时,我有一个例外:在上下文中找不到名称jdbc

我们不在网络应用中,这是一个问题吗? 是否可以使用ResourceLink声明context.xml?怎么样?

nb:jndi在server.xml中设置(GlobalNamingResources中的资源)

1 个答案:

答案 0 :(得分:2)

<Context ...>
  ...
  <ResourceLink name="linkToGlobalResource"
            global="simpleValue"
            type="java.lang.Integer"
  ...
</Context>

其中 name 是新名称(相对于java:comp / env的名称), global 是在server.xml中配置的全局jndi名称

因此,从您的代码中,查找 linkToGlobalResource ,它将为您提供链接的全局资源

参考:http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Resource_Links

答案已更新:

你的JNDI访问将来自web-app而不是共享jar,因为独立jar没有上下文的概念。