2

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

Exceptionaly,我必须在这个库中创建一个新类,它通过 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

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

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

4

1 回答 1

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 没有上下文的概念。

于 2013-04-21T13:40:36.437 回答