java - 无法获得 Oracle 连接

标签 java oracle jdbc jdbc-odbc ojdbc

无法获得 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.jarojdbc6.jarojdbc7.jarojdbc14.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/

相关文章:

java - 我可以使用 Microsoft Expression Web 创建/编辑 .jsp 文件吗?

java - 如何在 firebase android 中查询类似云函数中的数据库触发器

java - 是否可以禁用每个特定查询的 jpa 提示?

java - 为什么我收到 SQLSyntaxErrorException -遇到 ""?

java - UpdateString 未由 SQLite JDBC 驱动程序实现

java - MaterialDialog 表单不起作用

java - 如何使用 Maven 安装 Processing?

java - java.nio.Path 的方法如何工作

java - JBoss/WildFly 连接池和关闭连接

mysql - java jdbc插入外键时主键的重复条目