JDBC 使用 JNDI 的连接:名称冲突?
JDBC Connection using JNDI : Name Clash?
试图在我的 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 is the JNDI name relative to the java:comp/env 上下文。全名被视为路径,元素由 /
.
分隔
在你的例子中,
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
的路径元素(上下文),但却找到了一个数据源。
在您的工作示例中,您在不同的路径下创建数据源 6
java:comp/env/jdbc/postgres/1/2/3/4/6
试图在我的 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 is the JNDI name relative to the java:comp/env 上下文。全名被视为路径,元素由 /
.
在你的例子中,
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
的路径元素(上下文),但却找到了一个数据源。
在您的工作示例中,您在不同的路径下创建数据源 6
java:comp/env/jdbc/postgres/1/2/3/4/6