[ https://issues.apache.org/jira/browse/ODE-926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jon Coogan closed ODE-926. -------------------------- Resolution: Not A Problem Fix Version/s: 1.3.5 My mistake. The exception appears originating from the 2nd Reply. The behavior has changed since I last tried this in a previous version of ODE, and this confused me. > NPE with a reply activity inside a fault handler > ------------------------------------------------ > > Key: ODE-926 > URL: https://issues.apache.org/jira/browse/ODE-926 > Project: ODE > Issue Type: Bug > Components: BPEL Runtime > Affects Versions: 1.3.5 > Environment: Windows 7, Tomcat 7.0.14, Apache ODE 1.3.5 WAR > distribution > Reporter: Jon Coogan > Fix For: 1.3.5 > > Attachments: FaultHandlerReplyNPE.zip > > > In ODE 1.3.5 I am seeing a NullPointerException when I try to Reply from > within a fault handler. This used to work in previous versions of ODE. > > Duplication Instructions > 1. Refer to the attached BPEL process. > 2. Deploy the process to ODE. > 3. Run the process using a tool like SoapUI. The input doesn't matter. > Observe the following stacktrace in the ODE output: > Jun 14, 2011 3:46:35 PM org.apache.catalina.core.AprLifecycleListener init > INFO: The APR based Apache Tomcat Native library which allows optimal > performanc > e in production environments was not found on the java.library.path: > C:\Program > Files > (x86)\Java\jdk1.6.0_22\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C > :\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\Sys > tem32\WindowsPowerShell\v1.0\;C:\Program Files\Perforce > Jun 14, 2011 3:46:36 PM org.apache.coyote.AbstractProtocolHandler init > INFO: Initializing ProtocolHandler ["http-bio-8080"] > Jun 14, 2011 3:46:36 PM org.apache.coyote.AbstractProtocolHandler init > INFO: Initializing ProtocolHandler ["ajp-bio-8009"] > Jun 14, 2011 3:46:36 PM org.apache.catalina.startup.Catalina load > INFO: Initialization processed in 1137 ms > Jun 14, 2011 3:46:36 PM org.apache.catalina.core.StandardService startInternal > INFO: Starting service Catalina > Jun 14, 2011 3:46:36 PM org.apache.catalina.core.StandardEngine startInternal > INFO: Starting Servlet Engine: Apache Tomcat/7.0.14 > Jun 14, 2011 3:46:36 PM org.apache.catalina.startup.HostConfig deployWAR > INFO: Deploying web application archive ode.war > 15:47:02,123 WARN [ODEServer] Config file > C:\Users\lab\Desktop\apache-tomcat-7. > 0.14\webapps\ode\WEB-INF\conf\ode-axis2.properties not found, default values > wil > l be used. > 15:47:02,644 INFO [ODEServer] Using DAO Connection Factory class > org.apache.ode > .dao.jpa.BPELDAOConnectionFactoryImpl. > 15:47:08,000 INFO [BpelServerImpl] BPEL Server Started. > 15:47:08,006 INFO [SystemSchedulesConfig] SYSTEM CRON configuration: > C:\Users\l > ab\Desktop\apache-tomcat-7.0.14\webapps\ode\WEB-INF\conf\schedules.xml > 15:47:09,106 INFO [DeploymentPoller] Poller started. > 15:47:09,107 INFO [ODEServer] Process deployment polling started on path > C:\Use > rs\lab\Desktop\apache-tomcat-7.0.14\webapps\ode\WEB-INF\processes. > 15:47:09,110 INFO [ODEServer] ODE Service Engine has been started. > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory > INFO: Deploying web application directory docs > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory > INFO: Deploying web application directory examples > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory > INFO: Deploying web application directory host-manager > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory > INFO: Deploying web application directory manager > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.HostConfig deployDirectory > INFO: Deploying web application directory ROOT > Jun 14, 2011 3:47:09 PM org.apache.coyote.AbstractProtocolHandler start > INFO: Starting ProtocolHandler ["http-bio-8080"] > Jun 14, 2011 3:47:09 PM org.apache.coyote.AbstractProtocolHandler start > INFO: Starting ProtocolHandler ["ajp-bio-8009"] > Jun 14, 2011 3:47:09 PM org.apache.catalina.startup.Catalina start > INFO: Server startup in 33324 ms > 15:52:11,324 INFO [BpelServerImpl] Registered process > {test}FaultHandlerReplyNPE-1. > 15:52:11,327 INFO [DeploymentPoller] Deployment of artifact > FaultHandlerReplyNPE successful: [{test}FaultHandlerReplyNPE-1] > 15:52:26,906 WARN [ODEAxisOperationDispatcher] No operation has been found! > 15:53:57,357 ERROR [JacobVPU] Method "run" in class > "org.apache.ode.bpel.runtime.REPLY" threw an unexpected exception. > java.lang.NullPointerException > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:603) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) > at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) > at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > 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:968) > at > org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) > at > org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) > at > org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > 15:53:57,468 ERROR [BpelEngineImpl] Scheduled job failed; > jobDetail=JobDetails( instanceId: null mexId: 4611686018427387903 processId: > {test}FaultHandlerReplyNPE-1 type: INVOKE_INTERNAL channel: null > correlatorId: null correlationKeySet: null retryCount: null inMem: true > detailsExt: {}) > java.lang.RuntimeException: java.lang.NullPointerException > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464) > at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) > at > org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) > at > org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) > at > org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > Caused by: java.lang.NullPointerException > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:603) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) > at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) > at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) > ... 20 more > 15:53:57,567 WARN [MyRoleMessageExchangeImpl] Transaction is rolled back on > sending back the response. > 15:53:58,576 FATAL [BpelRuntimeContextImpl] Engine requested response while > the message exchange 4611686018427387903 was in the state RESPONSE > 15:53:58,580 ERROR [PICK] The message exchange seems to be in an unconsistent > state, you're probably missing a reply on a request/response interaction. > 15:53:58,590 ERROR [JacobVPU] Method "run" in class > "org.apache.ode.bpel.runtime.REPLY" threw an unexpected exception. > java.lang.IllegalStateException: Not in REQUEST state! > at > org.apache.ode.bpel.engine.MessageExchangeImpl.setResponse(MessageExchangeImpl.java:171) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:609) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) > at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) > at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > 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:968) > at > org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) > at > org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) > at > org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > 15:53:58,642 ERROR [BpelEngineImpl] Scheduled job failed; > jobDetail=JobDetails( instanceId: null mexId: 4611686018427387903 processId: > {test}FaultHandlerReplyNPE-1 type: INVOKE_INTERNAL channel: null > correlatorId: null correlationKeySet: null retryCount: null inMem: true > detailsExt: {}) > java.lang.RuntimeException: java.lang.IllegalStateException: Not in REQUEST > state! > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:464) > at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:968) > at > org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(PartnerLinkMyRoleImpl.java:208) > at > org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:283) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:238) > at > org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) > at > org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java:426) > at > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:460) > at > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:450) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:518) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:284) > at > org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:239) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:512) > at > org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:496) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:662) > Caused by: java.lang.IllegalStateException: Not in REQUEST state! > at > org.apache.ode.bpel.engine.MessageExchangeImpl.setResponse(MessageExchangeImpl.java:171) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply2(BpelRuntimeContextImpl.java:609) > at > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.reply(BpelRuntimeContextImpl.java:589) > at org.apache.ode.bpel.runtime.REPLY.run(REPLY.java:68) > at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) > ... 20 more > 15:53:59,697 FATAL [BpelRuntimeContextImpl] Engine requested response while > the message exchange 4611686018427387903 was in the state RESPONSE > 15:53:59,701 ERROR [PICK] The message exchange seems to be in an unconsistent > state, you're probably missing a reply on a request/response interaction. > 15:53:59,711 INFO [BpelRuntimeContextImpl] ActivityRecovery: Registering > activity 4, failure reason: org.apache.ode.bpel.iapi.BpelEngineException: > Engine requested response while the message exchange > 4611686018427387903 was in the state RESPONSE on channel 10 > -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira