我正在尝试通过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无法实际链接到资源?

最佳答案

对我来说,它只是将资源标签直接放置在context.xml中而无需ResourceLink

关于java - 尝试通过ResourceLink访问Tomcat数据源将返回ResourceRefLink,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54067845/

10-09 07:06