【问题标题】:How to configure a global JNDI datasource in Tomcat 6?如何在 Tomcat 6 中配置全局 JNDI 数据源?
【发布时间】:2011-08-25 05:22:10
【问题描述】:

我正在努力在 Tomcat 6.0.32 中配置一个简单的 JNDI 池数据源。

我想在我的 Web 应用程序工件之外创建数据源定义。基本上我不希望我的应用程序知道访问数据库服务器的凭据。 我的假设是,就像在 Weblogic 中一样,应该可以在 Tomcat 中创建“全局”JNDI 数据源,但到目前为止我还没有成功。

我已尝试在 CATALINA_HOME/conf/context 中添加数据源定义:

<Resource name="jdbc/mydb"
 auth="Container"
 type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
 factory="oracle.jdbc.pool.OracleDataSourceFactory"
 url="jdbc:oracle:thin:@1.1.1.1.:xxx"
 user="xxxx"
 password="yyyy"/>

结果是服务器在启动时输出以下行:

SEVERE: Null component Catalina:type=DataSource,path=/,host=localhost,class=javax.sql.DataSource,name="jdbc/mydb"

任何指针都将不胜感激。

【问题讨论】:

    标签: java tomcat datasource


    【解决方案1】:

    你的错误:user="xxxx",你需要改写username="xxxx"。

    【讨论】:

      【解决方案2】:

      将您的数据源配置移动到 server.xml &lt;GlobalNamingResources&gt;。 (并且不要忘记将驱动程序 jar 文件添加到 tomcat lib)。 配置您的 context.xml 以便所有应用程序都知道全局资源。

      <Context>
          <WatchedResource>WEB-INF/web.xml</WatchedResource>
          <ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
      </Context>
      

      【讨论】:

      • 如果我将资源定义移动到 server.xml 的 GlobalNamingResources 部分,我会得到相同的结果:严重:空组件 Catalina:type=DataSource,path=/,host=localhost,class=javax .sql.DataSource,name="jdbc/selfcare"
      • 您是否更新了 context.xml 以链接到全局资源?你把oracle驱动放到tomcat库了吗?你重启服务器了吗?重新部署您的应用程序?清理缓存了吗?
      • 您是否更新了 context.xml 以链接到全局资源? > YES 你有没有把oracle 驱动放到tomcat 库中? > YES, CATALINA_HOME/lib 你重启服务器了吗?是 重新部署了您的应用程序? > 没有部署应用程序清理缓存? > 是的
      • 我也尝试将日志级别设置为调试以弄清楚发生了什么,但没有运气。相同的消息。
      • 好的,你的例子是在谈论 jdbc/mydb,你的错误是在谈论 jdbc/selfcare?他们是否都为 Oracle 数据库连接池正确配置了资源?您是否为全局资源和 context.xml 资源链接名称赋予了不同的名称?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2017-06-09
      • 2012-05-30
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      相关资源
      最近更新 更多