BLOB insert -- DB adapter/OSB
ARPLOct 21 2009 — edited Mar 15 2013Hi,
We are invoking a stored proc to insert payload (XML String) in a database column of type BLOB. This is achieved using Oracle Db adapter - JCA and OSB 10.3.1.
Issue is BLOB data is throwing a cast exception:
The invocation resulted in an error: Invoke JCA outbound service failed with application error.
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<Fault>
<faultcode xmlns="" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Server</faultcode>
<faultstring xmlns="">Application Error</faultstring>
<detail xmlns="">
<JCA_TRANSPORT_RUNTIME_APPLICATION_FAULT xmlns="http://www.bea.com/transport/2007/05/jca">
oracle.tip.adapter.sa.api.JCABindingException: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/MessageTrackingService/Infrastructure%20Services/WSDL_InsertMessageTracking [ MessageTracking_ptt::MessageTracking(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'MessageTracking' failed due to: Error while converting to a Java object.
Unable to convert the XSD element P_MSG_PAYLOAD whose SQL type is BLOB and JDBC type is BLOB. Cause: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt".
; nested exception is:
JCA-11803
Error while converting to a Java object.
Unable to convert the XSD element P_MSG_PAYLOAD whose SQL type is BLOB and JDBC type is BLOB. Cause: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt".
Check to ensure that the XML data describing the object matches the definition of the element in the XSD. Contact oracle support if error is not fixable.
at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.request(JCABindingReferenceImpl.java:225)
at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundBindingServiceImpl.invoke(JCATransportOutboundBindingServiceImpl.java:136)
at com.bea.wli.sb.transports.jca.JCAOutboundMessageContext.sendRequestResponse(JCAOutboundMessageContext.java:152)
at com.bea.wli.sb.transports.jca.JCAOutboundMessageContext.send(JCAOutboundMessageContext.java:113)
at com.bea.wli.sb.transports.jca.JCATransportProvider.sendMessageAsync(JCATransportProvider.java:464)
at sun.reflect.GeneratedMethodAccessor1286.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.wli.sb.transports.Util$1.invoke(Util.java:82)
at $Proxy76.sendMessageAsync(Unknown Source)
at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageAsync(LoadBalanceFailoverListener.java:148)
at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToServiceAsync(LoadBalanceFailoverListener.java:543)
at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToService(LoadBalanceFailoverListener.java:478)
at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageToService(TransportManagerImpl.java:544)
at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageAsync(TransportManagerImpl.java:422)
at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:296)
at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:68)
at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:125)
at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:123)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:128)
at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:441)
at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:169)
at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:136)
at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(TestService_sqr59p_EOImpl.java:572)
at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:174)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:345)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_1030_WLStub.invoke(Unknown Source)
at com.bea.alsb.console.test.TestServiceClient.invoke(TestServiceClient.java:179)
at com.bea.alsb.console.test.actions.DefaultRequestAction.invoke(DefaultRequestAction.java:117)
at com.bea.alsb.console.test.actions.DefaultRequestAction.execute(DefaultRequestAction.java:70)
at com.bea.alsb.console.test.actions.ServiceRequestAction.execute(ServiceRequestAction.java:80)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:91)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2116)
at com.bea.alsb.console.common.base.SBConsoleRequestProcessor.processActionPerform(SBConsoleRequestProcessor.java:91)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853)
at com.bea.alsb.console.common.base.SBConsoleRequestProcessor.process(SBConsoleRequestProcessor.java:191)
at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158)
at com.bea.console.internal.ConsoleActionServlet.process(ConsoleActionServlet.java:256)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at com.bea.console.internal.ConsoleActionServlet.doGet(ConsoleActionServlet.java:133)
at com.bea.alsb.console.common.base.SBConsoleActionServlet.doGet(SBConsoleActionServlet.java:49)
at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1199)
at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1129)
at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:687)
at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:142)
at com.bea.portlet.adapter.scopedcontent.StrutsStubImpl.processAction(StrutsStubImpl.java:76)
at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:111)
at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:181)
at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:167)
at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:225)
at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:180)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:324)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:334)
at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:130)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352)
at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:184)
at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:159)
at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:388)
at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:258)
at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:199)
at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:251)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:130)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/MessageTrackingService/Infrastructure%20Services/WSDL_InsertMessageTracking [ MessageTracking_ptt::MessageTracking(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'MessageTracking' failed due to: Error while converting to a Java object.
Unable to convert the XSD element P_MSG_PAYLOAD whose SQL type is BLOB and JDBC type is BLOB. Cause: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt".
; nested exception is:
JCA-11803
Error while converting to a Java object.
Unable to convert the XSD element P_MSG_PAYLOAD whose SQL type is BLOB and JDBC type is BLOB. Cause: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt".
Check to ensure that the XML data describing the object matches the definition of the element in the XSD. Contact oracle support if error is not fixable.
at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:619)
at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.invokeWsifProvider(JCABindingReferenceImpl.java:331)
at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.request(JCABindingReferenceImpl.java:220)
... 113 more
Caused by: JCA-11803
Error while converting to a Java object.
Unable to convert the XSD element P_MSG_PAYLOAD whose SQL type is BLOB and JDBC type is BLOB. Cause: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt".
Check to ensure that the XML data describing the object matches the definition of the element in the XSD. Contact oracle support if error is not fixable.
at oracle.tip.adapter.db.sp.SPUtil.createResourceException(SPUtil.java:176)
at oracle.tip.adapter.db.sp.AbstractXSDParser.parse(AbstractXSDParser.java:166)
at oracle.tip.adapter.db.sp.AbstractXSDParser.parseArguments(AbstractXSDParser.java:234)
at oracle.tip.adapter.db.sp.SPInteraction.executeStoredProcedure(SPInteraction.java:129)
at oracle.tip.adapter.db.DBInteraction.executeStoredProcedure(DBInteraction.java:1014)
at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:232)
at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:463)
... 115 more
Caused by: java.io.IOException: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 5 most recent characters were: "eteyt"
at com.sun.mail.util.BASE64DecoderStream.decode(BASE64DecoderStream.java:237)
at com.sun.mail.util.BASE64DecoderStream.read(BASE64DecoderStream.java:135)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at oracle.tip.adapter.db.sp.Base64.decode(Base64.java:44)
at oracle.tip.adapter.db.sp.oracle.TypeConverter.toBLOB(TypeConverter.java:128)
at oracle.tip.adapter.db.sp.oracle.TypeConverter.toObject(TypeConverter.java:173)
at oracle.tip.adapter.db.sp.oracle.TypeConverter.toObject(TypeConverter.java:204)
at oracle.tip.adapter.db.sp.oracle.XSDParser.parseObject(XSDParser.java:116)
at oracle.tip.adapter.db.sp.AbstractXSDParser.parse(AbstractXSDParser.java:160)
... 120 more
</JCA_TRANSPORT_RUNTIME_APPLICATION_FAULT>
</detail>
</Fault>
</Body>
</Envelope>
Please let me know whether any conversion (using XQ/XSL) to be done at OSB level.
Regards,
AP
Edited by: ARPL on Oct 21, 2009 4:15 AM