- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
conn= Ds.getConnection();
连接oraconn = ((DelegatingConnection)conn).getInnermostDelegate();
它给出以下异常java.lang.ClassCastException: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 无法转换为 org.apache.commons.dbcp.DelegatingConnection
我还设置了资源参数accessToUnderlyingConnectionAllowed=true
需要解包此对象以传递给 ArrayDescriptor在tomcat的server.xml中请提前帮助thanx
最佳答案
可能是您的 org.apache.commons.dbcp.DelegatingConnection 与连接中的 org.apache.commons.dbcp.DelegatingConnection 是不同的类(不同的类加载器)。
如果您通过容器绑定(bind)的 warfile 提供此类,并且连接是通过 tomcat(或其他应用程序服务器)实例化的,则可以这样。
要对此进行测试,您可以使用类似的东西:
Class.forName("org.apache.commons.dbcp.DelegatingConnection").getClassLoader().toString()
conn.getClassLoader().toString();
您可能无法使用反射。这来自类似的 question :
// 'source' is from another classloader
Method method = conn.getClass().getMethod("getInnermostDelegate", new Class[] {});
Object o = method.invoke(conn, new Object[] {});
但是,我不确定返回参数是否可以轻松转换为当前类加载器中的类。如果您遵循反射方法,请绝对确保将所有这些封装在一个类中,不要让 Method 和 Object 之类的东西从中流失。我不推荐这样做,但它应该有效。
另一种方法是将您的代码放在与连接相同的位置。 (tomcat 库)
当然,首先要检查您的代码是否确实使用了 2 个不同的类加载器。 :D
编辑:
从评论来看,这里似乎有 2 个类加载器在工作。我忘了提到第三种方法。
关于java - 使用 org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 的最内层类时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843524/
我是一名优秀的程序员,十分优秀!