我想从JBOSS AS7(数据源postgresql-9.0-801.jdbc4.jar)中的PosgreSQL连接获取PGConnection
我在使用(WrappedConnection)connection时出现了强制转换异常。
所以现在我使用反射(JDK1.7):

private static PGConnection getPGConnction(Connection connection) throws SQLException {
    if(connection instanceof PGConnection) {
        return (PGConnection)connection;
    }
    try {
        Class[] parms = null;
        Method method =(connection.getClass()).getMethod("getUnderlyingConnection", parms);
        return (PGConnection) jdbc4Conn;
    } catch ...

捕获异常
java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4Connection cannot be cast to org.postgresql.jdbc4.Jdbc4Connection

是同一个班!!! 怎么可能?

最佳答案

当一个类不能强制转换为自身时,如果这意味着您有两个副本由不同的类加载器加载。在webapp中,如果应用程序本身和app服务器的lib中都有JDBC驱动程序jar,则很容易发生这种情况。或者,对于耳部包装,在war/WEB-INF/libear/lib两种情况下。确保类路径上只有一个jar,这样就可以消除错误。启动Java时可以传递-verbose:class,以获取有关类从何处加载的更多信息。顺便问一下,代码中的反射点是什么?你就不能正常地给我打电话吗?

08-16 12:42