【问题标题】:Unable to get an Oracle connection无法获得 Oracle 连接
【发布时间】:2016-09-19 10:36:46
【问题描述】:

无法获得 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 无法强制转换 到 oracle.jdbc.OracleConnection"。

我已分别将其与 ojdbc5.jarojdbc6.jarojdbc7.jarojdbc14.jar 文件一起使用。

这个问题有什么线索吗?

【问题讨论】:

标签: java oracle jdbc jdbc-odbc ojdbc


【解决方案1】:

oracle.jdbc.driver.T4CConnection 类扩展了oracle.jdbc.driver.PhysicalConnection 类,后者又实现了接口oracle.jdbc.OracleConnection。所以看起来演员应该成功了。

它的原因只能是类加载器问题,即有两个 jar 文件涉及相同的类或更具体地说:ojdbcN.jar 在类路径上两次,很可能在 JBoss 安装中的某个地方你的 .ear/.war 文件。并且转换失败,因为源和目标类和接口位于两个不同的 jar 文件中。

修复您的课程路径。对于 JBoss,ojdbc7.jar 需要进入共享的 JBoss 目录,并且不能包含在您的 .war 或 .ear 文件中。

【讨论】:

    【解决方案2】:

    根据对此Error casting T4CConnection to OracleConnection 的“显示名称缺失”的回答,ojdbcN.jar 会导致您必须通过正确重新引用来解决冲突。

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      相关资源
      最近更新 更多