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>
Надеюсь, поможет.