gpt4 book ai didi

java - 使用 JNDI : Name Clash? 的 JDBC 连接

转载 作者:行者123 更新时间:2023-11-28 23:32:24 26 4
gpt4 key购买 nike

尝试在我的 tomcat 实例的 context.xml 中设置几个 JDBC 连接,但很难理解为什么有些名称似乎冲突。

通过名称的一些组合,我得到以下结果:

java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to javax.naming.Context

如果我有 2 个名称如下的资源,有人可以解释为什么它不起作用吗:

name="jdbc/postgres/1/2/3/4/5"
name="jdbc/postgres/1/2/3/4/5/6"

但是将第二个名字改成这个确实有效:

name="jdbc/postgres/1/2/3/4/4/6"

谢谢。

最佳答案

根据Tomcat doc , name 是相对于 java:comp/env 的 JNDI 名称语境。全名被视为路径,元素由 / 分隔。

在你的例子中,

name="jdbc/postgres/1/2/3/4/5"

在路径下创建数据源节点5

java:comp/env/jdbc/postgres/1/2/3/4

以下

name="jdbc/postgres/1/2/3/4/5/6"

然后尝试在路径中创建数据源节点6

java:comp/env/jdbc/postgres/1/2/3/4/5

发生异常是因为 Tomcat 期望在 5 处有一个路径元素 (Context),但却找到了一个数据源。

在您的工作示例中,您在不同的路径下创建数据源 6

java:comp/env/jdbc/postgres/1/2/3/4/6

关于java - 使用 JNDI : Name Clash? 的 JDBC 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28675591/

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