[ https://issues.apache.org/jira/browse/ODE-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13198675#comment-13198675 ]
lorenzo commented on ODE-260: ----------------------------- Hi, this is still broken in version 1.3.5 using oracle and CLOB type for ODE_MESSAGE.HEADER column. If the column is empty oracle always returns an empty string (default behavior for CLOB columns) and the check on line 105 of MessageDAOImpl fails. Probably this should be changed to something like this return (_header == null || _header.length() == 0) ? null : DOMUtils.stringToDOM(_header); Here is a fragment of the stack trace Caused by: org.xml.sax.SAXParseException: Premature end of file. at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) at org.apache.ode.utils.DOMUtils.parse(DOMUtils.java:623) at org.apache.ode.utils.DOMUtils.stringToDOM(DOMUtils.java:549) at org.apache.ode.dao.jpa.MessageDAOImpl.getHeader(MessageDAOImpl.java:105) We will try to fix this using a VARCHAR2 instead of a CLOB for the header column, expecting 4000 chars to be enough... Bye Lorenzo > Executing SOAP services, which doesn't return value > --------------------------------------------------- > > Key: ODE-260 > URL: https://issues.apache.org/jira/browse/ODE-260 > Project: ODE > Issue Type: Bug > Components: BPEL Runtime > Affects Versions: 1.1, 1.1.1 > Environment: Windows XP Pro, JDK 1.5.0.07, Oracle 10g XE, Apache > Tomcat 5.5.25, OpenJPA > Reporter: Alexey Ousov > Assignee: Matthieu Riou > Fix For: 1.2 > > Attachments: ODE-260.patch, ODE-260v01.patch, ODE-260v02.patch > > > Very strange things happen, when executing exetrnal services in two-way > style, and this service doesn't return values. Something like this: > <?xml version='1.0' encoding='utf-8'?> > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:wsa="http://www.w3.org/2005/08/addressing"> > <soapenv:Header> > > <wsa:Action>http://www.comped.it/te/dbService/dbService/commitTransactionResponse</wsa:Action> > <wsa:RelatesTo>uuid:hqejbhcnphr35voswr4cg3</wsa:RelatesTo> > </soapenv:Header> > <soapenv:Body /> > </soapenv:Envelope> > First of all I got the following exception (happens only if INFO logging is > enabled): > 16:30:19,859 ERROR ExternalService$4.call(333) : Unable to process response: > Cannot stringify null Node! > java.lang.IllegalArgumentException: Cannot stringify null Node! > at org.apache.ode.utils.DOMUtils.domToString(DOMUtils.java:419) > at org.apache.ode.axis2.ExternalService$4.call(ExternalService.java:328) > at org.apache.ode.axis2.ExternalService$4.call(ExternalService.java:295) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:179) > at > org.apache.ode.scheduler.simple.SimpleScheduler$1.call(SimpleScheduler.java:160) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > I fixed it, but then I've got the following (because element was empty > string): > 18:03:17,843 DEBUG LoggingErrorHandler.fatalError(89) : > :-1:-1:FATAL:Premature end of file. > 18:03:17,859 ERROR INVOKE$1.onResponse(116) : Exception while processing > invoke response > java.lang.RuntimeException: org.xml.sax.SAXParseException: Premature end of > file. > at org.apache.ode.dao.jpa.MessageDAOImpl.getData(MessageDAOImpl.java:76) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.mergeHeaders(BpelRuntimeContextImpl.java:1153) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.getPartnerResponse(BpelRuntimeContextImpl.java:1111) > at org.apache.ode.bpel.runtime.INVOKE$1.onResponse(INVOKE.java:114) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) > at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:832) > at > org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:392) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:328) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:373) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:341) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:340) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:179) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:339) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:336) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: org.xml.sax.SAXParseException: Premature end of file. > at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) > at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) > at org.apache.ode.utils.DOMUtils.parse(DOMUtils.java:622) > at org.apache.ode.utils.DOMUtils.stringToDOM(DOMUtils.java:548) > at org.apache.ode.dao.jpa.MessageDAOImpl.getData(MessageDAOImpl.java:74) > ... 23 more > And finally I got the following exception: > 18:35:48,515 ERROR INVOKE$1.onResponse(116) : Exception while processing > invoke response > java.lang.NullPointerException > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.mergeHeaders(BpelRuntimeContextImpl.java:1160) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.getPartnerResponse(BpelRuntimeContextImpl.java:1111) > at org.apache.ode.bpel.runtime.INVOKE$1.onResponse(INVOKE.java:114) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) > at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:832) > at > org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:392) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:328) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:373) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:341) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:340) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:179) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:339) > at > org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:336) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) > at java.util.concurrent.FutureTask.run(FutureTask.java:123) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira