【问题标题】:How to lookup a (JDBC) JNDI resource?如何查找(JDBC)JNDI 资源?
【发布时间】:2013-04-09 04:36:08
【问题描述】:

我们有一个部署在 tomcat 服务器(v5.5 和 v6)上的个人 java 库。 这个库被很多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 数据源时,我有一个异常: Name jdbc not Found in Context

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

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

【问题讨论】:

  • 当您写“pb”时,您的意思可能是“问题”吗?请不要把这个地方当成手机。

标签: java tomcat jndi


【解决方案1】:
<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 没有上下文的概念。

【讨论】:

  • 是的,但我想知道是否可以将 jndi 资源添加到共享库的 Web 上下文中。否则,我必须在每个使用该库的 Web 应用程序中添加上下文:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
相关资源
最近更新 更多