我已经在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.
我很困惑,因为几乎所有事情都是一样的。
答案 0 :(得分:0)
由于Jboss和您的应用程序(WAR或EAR)中存在两个相同的类,因此看起来像一个类加载问题。 在我的Jboss 6.3中,我发现jboss \ modules \ com \ oracle \ ojdbc6.jar里面有T4CConnection.class,这可能是问题的原因。如果它存在于您的jboss中,您可以尝试在jboss-deployment-structure.xml中排除该lib,如:
<deployment>
<exclusions>
<module name="com.oracle.ojdbc6"/>
</exclusions>
</deployment>
希望它有所帮助。
答案 1 :(得分:0)
经过大量的讨论后,我从JBOSS的控制台中删除了JDBC驱动器并添加了一个新驱动器。它工作正常。