尝试通过ResourceLink访问Tomcat数据源将返回ResourceRefLink

时间:2019-01-07 02:17:03

标签: java tomcat datasource jndi

我正在尝试通过ResourceLink访问数据源。

在server.xml中,我有

<GlobalNamingResources>
    <Resource name="jdbc/nameXGlobal" auth="Container" type="javax.sql.DataSource"
              username="usernameX" password="passwordX"
              driverClassName="oracle.jdbc.xa.client.OracleXADataSource"
              url="jdbc:oracle:thin:urlinfo"/>
</GlobalNamingResources>

在context.xml中,我具有以下内容:

<Context>
    <ResourceLink name="jdbc/nameX" global="jdbc/nameXGlobal" type="javax.sql.DataSource"/>
</Context>

但是,当我尝试执行查找时,出现错误“ java.lang.ClassCastException:org.apache.naming.ResourceLinkRef无法转换为javax.sql.DataSource”,这意味着它没有获取数据源,而只是获取ResourceRefLink 。 如果我只是直接将资源放在上下文中,而不是通过server.xml使其成为全局资源,则不会收到错误消息,因此问题似乎出在我如何在context.xml中引用资源。

在Tomcat自己在以下页面上的建议中,我没有发现与在上下文中创建ResourceLink的方式有所不同:https://tomcat.apache.org/tomcat-9.0-doc/config/context.html。我会丢失什么导致ResourceLink无法实际链接到资源?

1 个答案:

答案 0 :(得分:0)

对我来说,它只是将资源标签直接放在context.xml中而不使用ResourceLink