OraclePersistManager.updateBlobs() errors in using WebLogic DataSource
485832Apr 25 2006 — edited Jul 28 2006CONFIGURATION
Ap server: WebLogic 8.1
Oracle database: 10g
Oracle JDBC Driver: ojdbc14.jar, ojdbc14_g.jar, classes12.jar
DESCRIPTION
We have developed an application- V3- on top of ADF, and currently, we wanna deployed V3 from OC4J to WebLogic, and we used weblogic data source to access oracle database. The following Exception occurred in deployment to Weblogic.
java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB
at oracle.jbo.pcoll.OraclePersistManager.updateBlobs(JI[Loracle.jbo.pcoll.PCollKeyInfo;[BILoracle.jdbc.OracleCallableStatement;)V(OraclePersistManager.java:1682)
at oracle.jbo.pcoll.OraclePersistManager.insert(JJI[Loracle.jbo.pcoll.PCollKeyInfo;[B)V(OraclePersistManager.java:1832)
at oracle.jbo.pcoll.PCollNode.passivateElem(Loracle.jbo.pcoll.PCollPersistable;Loracle.jbo.pcoll.PCollNode;Loracle.jbo.pcoll.PCollection;J)Z(PCollNode.java:561)
at oracle.jbo.pcoll.PCollNode.passivate()Z(PCollNode.java:684)
at oracle.jbo.pcoll.PCollNode.passivateBranch()Z(PCollNode.java:643)
at oracle.jbo.pcoll.PCollection.passivate()J(PCollection.java:461)
at oracle.jbo.server.DBSerializer.passivateRootAM(I[BI)I(DBSerializer.java:294)
at oracle.jbo.server.DBSerializer.passivateRootAM([B)I(DBSerializer.java:267)
at oracle.jbo.server.ApplicationModuleImpl.passivateStateInternal(I[BI)I(ApplicationModuleImpl.java:5123)
at oracle.jbo.server.ApplicationModuleImpl.passivateState(I[BI)I(ApplicationModuleImpl.java:5011)
at oracle.jbo.server.ApplicationModuleImpl.doPoolMessage(Loracle.jbo.ApplicationPoolSvcMsgContext;)Loracle.jbo.ApplicationPoolSvcMsgContext;(ApplicationModuleImpl.java:7741)
at oracle.jbo.common.ampool.ApplicationPoolImpl.sendPoolMessage(Loracle.jbo.ApplicationPoolSvcMsgContext;Loracle.jbo.common.ampool.SessionCookie;Loracle.jbo.common.ampool.ApplicationPoolImpl$SessionCookieInfo;Loracle.jbo.ApplicationModule;Loracle.jbo.common.ampool.ApplicationPoolImpl$ApplicationModuleInfo;)V(ApplicationPoolImpl.java:3923)
at oracle.jbo.common.ampool.ApplicationPoolImpl.doManagedCheckin(Loracle.jbo.common.ampool.SessionCookie;Z)V(ApplicationPoolImpl.java:2161)
at oracle.jbo.common.ampool.ApplicationPoolImpl.releaseApplicationModule(Loracle.jbo.common.ampool.SessionCookie;I)V(ApplicationPoolImpl.java:1261)
at oracle.jbo.common.ampool.SessionCookieImpl.releaseApplicationModule(IJ)V(SessionCookieImpl.java:717)
at oracle.jbo.common.ampool.SessionCookieImpl.releaseApplicationModule(ZZJ)V(SessionCookieImpl.java:629)
at oracle.jbo.common.ampool.SessionCookieImpl.releaseApplicationModule(ZZ)V(SessionCookieImpl.java:611)
at oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl$ReleaseRootAppModule.unbindValue()V(Unknown Source)
at oracle.cabo.share.util.BindableNamespaceMap.unbindAll()V(Unknown Source)
at oracle.cabo.servlet.BaseBajaContext.dispose()V(Unknown Source)
at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Loracle.cabo.servlet.BajaContext;)Loracle.cabo.servlet.Page;(Unknown Source)
at oracle.cabo.servlet.UIXServlet.doGet(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(Unknown Source)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava.lang.Object;(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;Lweblogic.servlet.internal.FilterChainImpl;)V(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(ServletStubImpl.java:315)
at weblogc.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava.lang.Object;(WebAppServletContext.java:6452)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Obect;(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic.servlet.internal.ServletRequestImpl;Lweblogic.servlet.internal.ServletResponseImpl;)V(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic.kernel.ExecuteThread;)V(ServletRequestImpl.java:2630)
After decompiling class file of OraclePersistManager, it is because the following statement, which wanted to Cast returned object to Oracle.sql.BLOB.
BLOB blob = (BLOB)oraclecallablestatement.getObject(j++);
After searching the internet, the following url says it should be casted to weblogic.jdbc.vendor.oracle.OracleThinBlob.
http://e-docs.bea.com/wls/docs81/jdbc/thirdparty.html#1043777
oracle.jbo.pcoll.OraclePersistManager is the foundation class in ADF, of which code can NOT be revised. So, what should we do to resolve such error?? Please help to get it resolved ASAP, Thx for ur time...
cheers
Adam