不使用tomcat连接池的情况下,
 oracle.jdbc.OracleResultSet  rs1 = (oracle.jdbc.OracleResultSet )psQueryBlob.executeQuery();这个句子能成功转换类型。在使用tomcat的情况下,该处报错:java.lang.ClassCastException  网上搜索了一些相关帖子,但都是说的在使用weblogic的情况下如何解决,是因为weblogic使用了一些特定的jdbc类。这个问题肯定和tomcat的连接池实现细节有关,我实在想不出什么办法来解决这个问题!
哪位大侠解决过,请给我回答。非常感谢

解决方案 »

  1.   

    楼主为什么一定要用oracleresult呢,有没有变通的方法呢
      

  2.   

    >(oracle.jdbc.OracleResultSet)我试了试,这个是不成。但是 (oracle.jdbc.driver.OracleResultSet) 却很好。
      

  3.   

    在调试器中查看一个 rs 对象,该对象的具体类型是 oracle.jdbc.driver.OracleResultSetImpl,该类型实现了 oracle.jdbc.driver.OracleResultSet 接口。而 oracle.jdbc.OrcaleResultSet 接口则是一个从 java.sql.ResultSet 继承而来的接口,与前边所说的那个接口完全不是一回事儿。
      

  4.   

    楼上的大侠,你说:“但是 (oracle.jdbc.driver.OracleResultSet) 却很好”log.info("before  create resultset");
                                    oracle.jdbc.driver.OracleResultSet  rs1 = (oracle.jdbc.driver.OracleResultSet)psQueryBlob.executeQuery();
                                     log.info("after  create resultset  ,casting succeed");还是报错:
    java.lang.Exception: java.lang.ClassCastException 请把你写的代码贴出来可以吗?还请问你是把编译后的class放在tomcat下的某web里运行的吗?
      

  5.   

    最关键的问题是 psQueryBlob.executeQuery() 得到的对象的具体类型。System.out.println(rs.getClass().getName()); 看一下那个类型到底是什么先。
      

  6.   

    使用直接连接数据库的方式,我原来的代码是没问题的。但是在tomcat下使用它的连接池就不行了.
    org.apache.commons.dbcp.DelegatingResultSet
    这是类名称,我得好好看看这个类了。
      

  7.   

    这可就不成了,楼主你可能需要重新配置一下 Tomcat 的数据源了,要让它返回 oracle 的类型。GOOGLE:Tomcat 配置 oracle
      

  8.   

    这个比较难找啊,大侠,关键是需要要非org.apache.commons.dbcp这个包实现的连接池才行。
    碰碰运气吧,真没办法就只有不使用连接池了。
      

  9.   

    大侠,如果替换数据源工厂类,不知是否可以解决这个问题。
    比如: <name>factory</name>
                  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    把这里指定的类替换为oracle提供的。不知大侠是否可以回答这个问题
      

  10.   

    试了几个class12.zip中的类,就是不行。