如何在Tomcat 6中配置全局JNDI数据源?

4

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

我希望在我的Web应用程序工件之外创建数据源定义。基本上,我不想让我的应用程序知道访问数据库服务器的凭据。

我曾经认为,在Weblogic中可以创建“全局”JNDI数据源,就像在Tomcat中一样,但是到目前为止,我还没有成功。

我尝试在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"

非常感谢您的帮助。

2个回答

15

将数据源配置移动到<GlobalNamingResources>的server.xml中。(别忘了把驱动程序jar文件添加到tomcat lib)。 配置您的context.xml,以便所有应用程序都知道全局资源。

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

1
如果我将资源定义移动到server.xml的GlobalNamingResources部分,我会得到相同的结果:SEVERE:Null组件Catalina:type = DataSource,path = /,host = localhost,class = javax.sql.DataSource,name =“jdbc/selfcare” - Luciano Fiandesio
你是否更新了context.xml以链接到全局资源? 你是否将oracle驱动程序放入了tomcat库中? 你是否重新启动了服务器? 重新部署了你的应用程序? 清理了缓存? - Anthony Accioly
你已经更新了context.xml文件以链接到全局资源吗?> 是的 你是否将Oracle驱动程序放入Tomcat库中?> 是的,CATALINA_HOME/lib 你已经重新启动服务器了吗?> 是的 重新部署了你的应用程序吗?> 没有部署应用程序 清除了缓存吗?> 是的 - Luciano Fiandesio
我也尝试将日志级别设置为调试以找出问题所在,但没有运气。仍是同样的信息。 - Luciano Fiandesio
好的,你的例子是关于jdbc/mydb的,你的错误是关于jdbc/selfcare的?它们都正确地配置了Oracle数据库连接池的资源吗?你是否给全局资源和context.xml资源链接名称分配了不同的名称? - Anthony Accioly
显示剩余6条评论

0
你的错误是:user="xxxx",你需要写成username="xxxx"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接