我得到的`DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcCon

2019-10-29 23:50发布

我使用Websphere 18自由版本。 当我试图解开java.sql.Connection中以oracle.jdbc.OracleConnection我得到的

`DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556不换型oracle.jdbc.OracleConnection的任何对象

在sever.xml文件正在使用ojdbc7.jar为数据源,也是在应用程序中添加我从同一位置同一罐子。 不过现在面临的问题。 我提到的所有链接WSJDBCConnection不换型oracle.jdbc.OracleConnection的对象是这样的。 不过现在面临同样的问题。

Answer 1:

为了Connection.unwrap正常工作,自由DataSource和应用程序都必须加载同一类加载器供应商的实现类(oracle.jdbc.OracleConnection)。

下面是如何既DataSource和配置应用程序使用相同的类加载器从包含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>


Answer 2:

你不需要解开来的OracleConnection。 您可以使用Connection对象建立与数据库的连接。

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


文章来源: I get the `DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556 does not wrap any objects of type oracle.jdbc.OracleConnection