【问题标题】:How to create oracle connection in java application, deployed in JBoss Server? (WrappedConnectionJDK8 cannot be cast to oracle.jdbc.OracleConnection)如何在 Java 应用程序中创建 oracle 连接,部署在 JBoss 服务器中? (WrappedConnectionJDK8 不能强制转换为 oracle.jdbc.OracleConnection)
【发布时间】:2020-01-15 14:49:19
【问题描述】:

我想创建 oracle 连接。目前我正在通过 jdbc 连接来创建结构描述符,在这里我得到如下异常。因此为避免这种情况,需要创建 java.sql.connection 或 oracle 连接,而不是从数据源获取。

org.jboss.resource.adapter.jdbc.jdk8.WrappedConnectionJDK8 无法转换为 oracle.jdbc.OracleConnection

我为 JDK6 找到了一个解决方案,但它不适用于 JDK8 How to create oracle connection in Spring application deployed in JBoss Server? (WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection)

【问题讨论】:

  • 我建议创建一个 java.sql.Connection 实例。除非必须,否则不要使用 Oracle 或 JBOSS 类。没有充分的理由将自己与这些课程联系起来。接口够用了。
  • 我还建议使用带有 URL 连接字符串的类型 IV 驱动程序,而不是它们的结构。
  • 试过了还是不行,谢谢

标签: java oracle java-8 jboss connection


【解决方案1】:

你应该使用 unwrap 方法来获取你的实例datasource.getConnection().unwrap(OracleConnection.class)

【讨论】:

    【解决方案2】:

    如果您使用应用服务器,您可以配置数据源,然后使用简单的代码,例如:

    public class JDBCConnection {
    
        @Resource(name = "jdbc/betting-offer-db") private DataSource dataSource;
    
        public void executeQuery() {
            logger.info("Reloading {}", getCacheNames());
            try (Connection conn = dataSource.getConnection();
                 PreparedStatement stmt = conn.prepareStatement(getQuery())) {
    
                processStatement(stmt);
            } catch(Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    

    【讨论】:

    • 你得到了什么异常?在您的 JNDI 树中是否存在您的数据源 JDBC?
    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多