【问题标题】:I get the `DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556 does not wrap any objects of type oracle.jdbc.OracleConnection我得到了`DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556 不包装任何类型为 oracle.jdbc.OracleConnection 的对象
【发布时间】:2018-12-04 06:54:22
【问题描述】:

我正在使用 Websphere 18 Liberty 版本。当我试图将 java.sql.connection 解包到 oracle.jdbc.OracleConnection 时,我得到了

`DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556 确实 不包装 oracle.jdbc.OracleConnection 类型的任何对象

在 sever.xml 文件中,我使用 ojdbc7.jar 作为数据源,同样在应用程序中,我从同一位置添加了相同的 jar。仍然面临这个问题。我参考了所有链接 WSJDBCConnection does not wrap objects of type oracle.jdbc.OracleConnection 像这样。仍然面临同样的问题。

【问题讨论】:

    标签: java oracle jdbc websphere websphere-liberty


    【解决方案1】:

    为了使Connection.unwrap 正常工作,Liberty 数据源和应用程序必须都从同一个类加载器加载供应商实现类 (oracle.jdbc.OracleConnection)。

    这是一个简单的示例,说明如何配置数据源和应用程序以使用相同的类加载器从包含 Oracle JDBC 驱动程序的单个库中加载,

    <library id="OracleLib">
        <fileset dir="${server.config.dir}/oracle"/>
    </library>
    
    <application location="myApp.war" >
        <classloader commonLibraryRef="OracleLib"/>
    </application>
    
    <dataSource jndiName="jdbc/oracleDataSource">
        <jdbcDriver libraryRef="OracleLib"/>
        <properties.oracle .../>
    </dataSource>
    

    【讨论】:

      【解决方案2】:

      您无需打开 OracleConnection。您可以使用 Connection 对象来建立与 DB 的连接。

      // Get a context for the JNDI look up
      DataSource ds = getDataSource();
      try (Connection connection = ds.getConnection()) {
        {
         executeBusinessLogicOnDatabase(connection));
         ......
        }
        connection.close();
        }
      

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 2018-10-27
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多