无法获得 Oracle 连接。
我使用以下代码片段在自定义智能服务插件中获取 Oracle 连接:-
public static Connection openNewConnection(String url, String username, String password) throws ClassNotFoundException, SQLException {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
Connection connection = DriverManager.getConnection(url, username, password);
return connection;
}
它作为独立程序运行得非常好,但是当在 JBoss 中使用时,它会给出 "ClassCastExcepton"
并显示以下消息:-
ClassCastException : "oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection".
我已分别将其与 ojdbc5.jar
、ojdbc6.jar
、ojdbc7.jar
和 ojdbc14.jar
文件一起使用。
这个问题有什么线索吗?
最佳答案
oracle.jdbc.driver.T4CConnection
类扩展了oracle.jdbc.driver.PhysicalConnection
类,后者又实现了oracle.jdbc.OracleConnection
接口(interface)。所以看来 Actor 阵容应该会成功。
它的原因只能是类加载器问题,即有两个包含相同类的 jar 文件,或更具体地说:ojdbcN.jar 在类路径上两次,很可能在 JBoss 安装中的 .ear/.war 文件中的某个位置。并且转换失败,因为源类和目标类以及接口(interface)位于两个不同的 jar 文件中。
修复你的类路径。对于 JBoss,ojdbc7.jar
需要进入共享 JBoss 目录,并且不得包含在您的 .war 或 .ear 文件中。
关于java - 无法获得 Oracle 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571100/