我正在使用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像这样。仍然面临着同样的问题。
最佳答案
为了使Connection.unwrap
正常工作,Liberty 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>