使用ojdbc6连10g时,报不能序列化问题。这个怎么解决呢。直接用ojdbc14.jar替换server下的ojdbc6.创建wls数据源时失败。有什么办法解决?weblogic12c(12.1)
java.rmi.UnmarshalException: oracle.jdbc.driver.T4CConnection; nested exception is:
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:476)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:272)
at com.lenovo.stat.collection.SubmitInfoBean_5ry88c_EOImpl_1211_WLStub.setSubmitObj(Unknown Source)
at com.lenovo.stat.collection.SubmitInfoBeanClient.setSubmitObj(SubmitInfoBeanClient.java:125)
at com.lenovo.stat.collection.DataSubmit.addItem(DataSubmit.java:83)
at com.lenovo.stat.pub.AbstractServletAction.runAction(AbstractServletAction.java:279)
at com.lenovo.stat.pub.ServletNavigation.doServlet(ServletNavigation.java:601)
at jsp_servlet._pub.__run_action._jspService(__run_action.java:102)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:221)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3284
)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.ja
va:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.io.NotSerializableException: oracle.jdbc.driver.T4CConnection
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:80)
at weblogic.rmi.internal.ServerRequest.copy(ServerRequest.java:280)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:193)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:461)
... 25 more
你自定义的可序列化类中,是否包含了Connection 作为属性?导致序列化失败,因为Connection不能被序列化,建议将Connection改为transient
或者重构代码,将JDBC相关代码从你的类里移除
如果不是上述原因,请再仔细检查一下是否有其他不能序列化的类型,比如CLOB类型的数据就不能被序列化。
不能序列化的类里有Connection作为属性了。原来这个是用oracle10和weblogic8.1是没有问题的。现在项目迁移,是用weblogic12.1.1+oracle11.2.0.1.1项目的数据源是用的wls内建立的jdbc数据源。weblogic12.1.1的自带数据库驱动是ojdbc6(oracle11.2.0.3的驱动包)。我把oracle11.2.0.1的驱动包放到classpath下让他启动时使用。结果weblogic建立的数据源不能使用 <Failed to initialize the applicati
on "JDBC Data Source-0" due to error java.lang.ClassNotFoundException: oracle.jdbc.replay.internal.C
onnectionInitializationCallback
java.lang.ClassNotFoundException: oracle.jdbc.replay.internal.ConnectionInitializationCallback
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
Truncated. see log file for complete stacktrace
这个跟数据库的驱动版本有什么关系吗
?