- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Tomcat 9 上部署我的应用程序,并且我的应用程序使用 eclipselink 作为 JPA 提供程序。我的应用程序在 WebLogic 12 服务器上运行良好,但在 Tomcat 9 上部署我的应用程序后出现以下异常
javax.persistence.PersistenceException: java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to oracle.jdbc.OracleConnection at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:480) at com.temp.request.dao.hybrid.PartyRequestSearchDAOImpl.retrieveRequestsByFilter(PartyRequestSearchDAOImpl.java:543) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:338) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) at com.temp.request.util.aspect.TraceLogger.logMethodEntryAndExit(TraceLogger.java:36) at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:643) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:632) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) at com.temp.request.util.aspect.ExecutionTimeLogger.logMethodExecutionTime(ExecutionTimeLogger.java:37) at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:643) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:632) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy89.retrieveRequestsByFilter(Unknown Source) Caused by: java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to oracle.jdbc.OracleConnection
我已经在我的 server.xml 中包含了 accessToUnderlyingConnectionAllowed="true"
我的server.xml如下
<GlobalNamingResources>
<Resource name="jdbc/DS_RW" auth="Container" type="javax.sql.DataSource"
username="user1" password="pass123" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@temp.com:1545/service01"
accessToUnderlyingConnectionAllowed="true" />
</GlobalNamingResources>
Tomcat 9 是否支持将 Eclipsenik 作为 JPA 提供程序?如果没有,有什么办法可以解决这个问题吗?
最佳答案
问题是您使用的是 Oracle9Platform 目标数据库平台,它依赖于 native Oracle 连接,但您使用的连接池正在包装连接。 EclipseLink 使用 ServerPlatform 实现来允许特定于服务器的代码解开连接,但没有针对 Tomcat 的实现,因此它默认使用 NoServerPlatform,它只会交回连接。
要让它工作并在 Tomcat 上使用 Oracle 特定的数据库功能,您需要创建一个类似于 https://github.com/ftahmed/eclipselink-server-platform-tomcat/blob/master/src/main/java/org/eclipse/persistence/platform/server/tomcat/TomcatPlatform.java 的 ServerPlatform 实现。此代码然后使用基类在连接上调用 connection.getMetaData().getConnection();
。如果这不起作用,您将必须实现自己的解包方法以从您的代理访问底层 OracleConnection。
然后您通过“eclipselink.target-server”持久性属性指定您希望使用的目标服务器平台类:
<property name="eclipselink.target-server" value="yourPackage.yourClass"/>
关于java.lang.ClassCastException : org. apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper 无法转换为 oracle.jdbc.OracleConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57653516/
我已经实现了 commons dbcp PoolingDataSource 及其工作完美 - 直到我遇到使用 java.sql.PreparedStatement 接口(interface)的特定实现
这个生产问题现在占据了我的头。我已将 Bitronix 配置为使用 jBPM5 工具作为事务管理器。它在很长一段时间内工作正常,但突然开始出现以下异常情况。 异常堆栈跟踪 Caused by: jav
引用apache commons dbcp,PoolingDataSource和PoolingDriver有什么区别?源代码状态 “请注意,此示例与 PoolingDriver 示例非常相似。事实上,
org.apache.commons.dbcp BasicDatasource 和 PoolingDataSoure 有什么区别?两者都支持连接池吗?什么时候使用它们? 最佳答案 BasicDataS
是否可以使用 bitronix.tm.resource.jdbc.PoolingDataSource 不使用 bitronix 事务管理器和使用独立 JBossTS相反? 对于数据库访问,我使用 Hi
尝试遵循 apache dbcp 示例的模式,我了解一切,除了数据库属性的来源和来源以及它们必须放置在应用程序上下文中的哪个 bean 中。 我使用了 Spring Data Source,但我记得我
如果我将一个网络应用程序部署到 Tomcat,并且有这样的代码: Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx
conn= Ds.getConnection(); 连接oraconn = ((DelegatingConnection)conn).getInnermostDelegate(); 它给出以下异常ja
geeting org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 无法通过使用 tomcat 服务器和
我正在尝试在 Tomcat 9 上部署我的应用程序,并且我的应用程序使用 eclipselink 作为 JPA 提供程序。我的应用程序在 WebLogic 12 服务器上运行良好,但在 Tomcat
我正在使用 Apache Commons DBCP (commons-dbcp.jar) 连接池。 一旦我从池中获得连接,它就会被包装在类 org.apache.commons.dbcp.Poolin
我是一名优秀的程序员,十分优秀!