gpt4 book ai didi

java - 在 Tomcat 8 应用程序中使用多个连接池时出现命名错误

转载 作者:行者123 更新时间:2023-11-28 22:53:32 25 4
gpt4 key购买 nike

我有一个使用内置 Tomcat 连接池的应用程序,并且在大多数情况下它都能正常工作。当我尝试使用另一个池从同一数据库获取一组不同的连接,但使用不同的用户名/密码(这是一个 oracle 数据库,它使用 2 个用户名来访问表和函数的不同 namespace )时,就会出现问题。

第一个池被接受,但对于第二个池,我收到这个错误

15:09:47.157 [http-nio-8081-exec-5] ERROR com.applicationname.providers.ConnectionManager - NamingException in MyDataSource
javax.naming.NameNotFoundException: Name [appdb_two] is not bound in this Context. Unable to find [appdb_two].
at org.apache.naming.NamingContext.lookup(NamingContext.java:818) ~[catalina.jar:8.0.15]

这是我的配置:

server.xml

<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users-->

<Resource name="UserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

<Resource name="jdbc/appdb_two"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>

<Resource name="jdbc/appdb_one"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>

</GlobalNamingResources>

context.xml

<ResourceLink name="jdbc/appdb_two" 
auth="Container"
username="DBONE"
password="xxxx"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@xx.xxx.xxx.xxx:1521:XE"
initialSize="20"
maxActive="50"
maxIdle="20"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>

<ResourceLink name="jdbc/appdb_one"
auth="Container"
username="DBTWO"
password="xxxx"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@xx.xxx.xxx.xxx:1521:XE"
initialSize="20"
maxActive="50"
maxIdle="20"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>
...

最佳答案

我认为您正在通过名称 "appdb_two" 查找第二个数据源, 但应该使用 "jdbc/appdb_two" - 很难单独从堆栈跟踪中看出,查找代码会有所帮助。

同时检查您的 web.xml引用了两个数据源(<resource-ref> 元素)。

关于java - 在 Tomcat 8 应用程序中使用多个连接池时出现命名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com