oracle.jdbc.driver.T4CConnection не может быть приведен к oracle.jdbc.OracleConnection в JBOSS EAP 6.1

Я развернул свое ухо в JBOSS 7.1.1 AS. Для просмотра документа в приложении мы используем BFILE. Ниже код используется:

Connection con = this.jdbcTemplate.getDataSource().getConnection();
con = unwrapConnection(con);

if(null != con)
{
    System.out.println("Is conncetion Closed" + con.isClosed());
    PreparedStatement ps = con.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();
    while(rs.next()) {
    {
        OracleResultSet ors = rs.unwrap(OracleResultSet.class);
        bfile = ors.getBFILE(1);
        fileName = rs.getString(2);
        docFormat = rs.getString(3);
    }
    bfileMap.put("EventDocDetails", bfile);
    bfileMap.put("Format", docFormat);
    bfileMap.put("FileName", fileName);
}

private static Connection unwrapConnection(Connection connection) throws SQLException {

    System.out
        .println("Datasource is maintained by Jboss so Unwarping Jboss JDBC Connection to oracle.jdbc.OracleConnection. Driver name is "
            + connection.getMetaData().getDriverName());
    return (oracle.jdbc.OracleConnection) ((WrappedConnection) connection)
        .getUnderlyingConnection(); 
}

Мы используем Ojdc6.11.2.0.3 jar. В манифесте у меня есть зависимости org.jboss.ironjacamar.jdbcadapters,

Это прекрасно работает для JBOSS AS 7.1.1

Но то же ухо не работает в JBOSS EAP 6.1 Я получаю ниже исключения

oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection
19:54:51,395 ERROR [stderr] (http-/192.168.178.31:8080-5) java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection.

Я сбит с толку, так как почти все вещи одинаковы.

2 ответа

После большого количества царапин на голове я удалил диск JDBC из консоли JBOSS и добавил новый. Это сработало.

Похоже, проблема загрузки классов из-за двух одинаковых классов существуют в Jboss и в вашем приложении (WAR или EAR). В моем Jboss 6.3 я нашел jboss\modules\com\oracle\ojdbc6.jar с T4CConnection.class внутри, который может быть причиной проблемы. Если он существует в вашем jboss, вы можете попытаться исключить этот lib в jboss-deploy-structure.xml, например:

<deployment>
    <exclusions>
        <module name="com.oracle.ojdbc6"/>
    </exclusions>
</deployment>

Надеюсь, поможет.

Другие вопросы по тегам