<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Re: Null cmdScopedEntityManager during stateful session load
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/biraneto">Bira Neto</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/745095#745095">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>I'm using jbpm 5.3 on tomcat with spring and Bitronix. Postgres DB.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>My environment is being created like this:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>  EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.framework.jpa");</p><p>                    Environment env = KnowledgeBaseFactory.newEnvironment();</p><p>  </p><p>                    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);</p><p>                    env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());</p><p>                    env.set(EnvironmentName.TRANSACTION, ut);</p><p>  </p><p>                    return env;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The process definition is not big... there is a lot of calls from my framework which I must say call no Jbpm methods. The important part is the two conditionalEvents that lead to one line of execution reach the end event and the other being blocked. When restarting the server the deserialization fails.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><?xml version="1.0" encoding="UTF-8"?> </p><p><definitions id="Definition" </p><p><span>targetNamespace="</span><a class="jive-link-external-small" href="http://jbpm.org/example/bpmn2" target="_blank">http://jbpm.org/example/bpmn2</a><span>" </span></p><p><span>typeLanguage="</span><a class="jive-link-external-small" href="http://www.java.com/javaTypes" target="_blank">http://www.java.com/javaTypes</a><span>" </span></p><p><span>xmlns:java="</span><a class="jive-link-external-small" href="http://drools.org/semantics/java" target="_blank">http://drools.org/semantics/java</a><span>" </span></p><p><span>expressionLanguage="</span><a class="jive-link-external-small" href="http://www.mvel.org/2.0" target="_blank">http://www.mvel.org/2.0</a><span>" </span></p><p><span>xmlns:xsi="</span><a class="jive-link-external-small" href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>" </span></p><p><span>xsi:schemaLocation="</span><a class="jive-link-external-small" href="http://www.omg.org/spec/BPMN/20100524/MODEL" target="_blank">http://www.omg.org/spec/BPMN/20100524/MODEL</a><span> BPMN20.xsd" </span></p><p><span>xmlns="</span><a class="jive-link-external-small" href="http://www.omg.org/spec/BPMN/20100524/MODEL" target="_blank">http://www.omg.org/spec/BPMN/20100524/MODEL</a><span>" </span></p><p><span>xmlns:bpmndi="</span><a class="jive-link-external-small" href="http://www.omg.org/spec/BPMN/20100524/DI" target="_blank">http://www.omg.org/spec/BPMN/20100524/DI</a><span>" </span></p><p><span>xmlns:dc="</span><a class="jive-link-external-small" href="http://www.omg.org/spec/DD/20100524/DC" target="_blank">http://www.omg.org/spec/DD/20100524/DC</a><span>" </span></p><p><span>xmlns:di="</span><a class="jive-link-external-small" href="http://www.omg.org/spec/DD/20100524/DI" target="_blank">http://www.omg.org/spec/DD/20100524/DI</a><span>" </span></p><p><span>xmlns:tns="</span><a class="jive-link-external-small" href="http://www.jboss.org/drools" target="_blank">http://www.jboss.org/drools</a><span>"> </span></p><p> <itemDefinition id="CTX_PROCESS_IDItem" structureRef="java.lang.Long" /></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p> <process processType="Private" isExecutable="true" </p><p> id="conditionalTest_2_0"  tns:packageName="defaultPackage" name="conditionalTest_2.0" ></p><p><extensionElements></p><p><tns:import name="com.entities.*" /></p><p><tns:import name="com.core.services.ServicePkAspect" /></p><p></extensionElements></p><p><property id="CTX_PROCESS_ID" itemSubjectRef="tns:CTX_PROCESS_IDItem"/></p><p><endEvent id="id_3" name="id_3" ><incoming>id_17</incoming></p><p> </endEvent></p><p><scriptTask id="id_7" name="id_7" ><incoming>id_10</incoming></p><p><outgoing>id_16</outgoing></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><script>ServicePkAspect.processAroundExecute("workflowServicePk", "executeRule", null, new String[]{"testRuleParam","testRuleParam","132710"}, CTX_PROCESS_ID);</script></p><p></scriptTask></p><p><exclusiveGateway id="id_6" name="id_6"  gatewayDirection="Converging"><incoming>id_12</incoming></p><p><incoming>id_11</incoming></p><p><outgoing>id_17</outgoing></p><p></exclusiveGateway></p><p><scriptTask id="id_2" name="id_2" ><incoming>id_13</incoming></p><p><outgoing>id_10</outgoing></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><script> ServicePkAspect.processAroundExecute("workflowServicePk", "executePrepareTestRule", null, null, CTX_PROCESS_ID); return true; </script></p><p></scriptTask></p><p><startEvent id="id_4" name="id_4"><outgoing>id_13</outgoing></p><p> </startEvent></p><p><parallelGateway id="id_8" name="id_8" gatewayDirection="Diverging"><incoming>id_16</incoming></p><p><outgoing>id_14</outgoing></p><p><outgoing>id_15</outgoing></p><p></parallelGateway></p><p><intermediateCatchEvent id="id_5" name="id_5"></p><p>  </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p> <incoming>id_15</incoming></p><p><outgoing>id_12</outgoing></p><p> <conditionalEventDefinition> </p><p><condition xsi:type="tFormalExpression" > UserPk(idUser &gt; 150)</p><p> </condition> </p><p></conditionalEventDefinition></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p> </intermediateCatchEvent></p><p><intermediateCatchEvent id="id_9" name="id_9"></p><p>  </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p> <incoming>id_14</incoming></p><p><outgoing>id_11</outgoing></p><p> <conditionalEventDefinition> </p><p><condition xsi:type="tFormalExpression" > UserPk(idUser &lt;= 150)</p><p> </condition> </p><p></conditionalEventDefinition></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p> </intermediateCatchEvent></p><p><sequenceFlow id="id_14" name="id_14" sourceRef="id_8" targetRef="id_9" > </sequenceFlow></p><p><sequenceFlow id="id_11" name="id_11" sourceRef="id_9" targetRef="id_6" > </sequenceFlow></p><p><sequenceFlow id="id_13" name="id_13" sourceRef="id_4" targetRef="id_2" > </sequenceFlow></p><p><sequenceFlow id="id_16" name="id_16" sourceRef="id_7" targetRef="id_8" > </sequenceFlow></p><p><sequenceFlow id="id_17" name="id_17" sourceRef="id_6" targetRef="id_3" ></p><p><conditionExpression xsi:type="tFormalExpression"></p><p> return true; </p><p></conditionExpression> </sequenceFlow></p><p><sequenceFlow id="id_12" name="id_12" sourceRef="id_5" targetRef="id_6" > </sequenceFlow></p><p><sequenceFlow id="id_15" name="id_15" sourceRef="id_8" targetRef="id_5" > </sequenceFlow></p><p><sequenceFlow id="id_10" name="id_10" sourceRef="id_2" targetRef="id_7" > </sequenceFlow></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p></process> </p><p></definitions></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>When restarting the server with </p><p>    ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env );</p><p>I get the exception below caused by a null pointer exception as already mentioned on the first post. Maybe it is worth to mention that the var appScopedEntityManager is initialized.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>java.lang.RuntimeException: Unable to load session snapshot</p><p>          at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:96)</p><p>          at org.drools.persistence.SingleSessionCommandService.initKsession(SingleSessionCommandService.java:253)</p><p>          at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:195)</p><p>          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)</p><p>          at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)</p><p>          at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)</p><p>          at java.lang.reflect.Constructor.newInstance(Constructor.java:513)</p><p>          at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:101)</p><p>          at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:84)</p><p>          at org.drools.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:131)</p><p>          at com.perkons.frameworkpk.fpk.core.workflows.WorkflowManagerPk.loadStatefulSession(WorkflowManagerPk.java:403)</p><p>          at com.perkons.frameworkpk.fpk.core.workflows.WorkflowManagerPk.initialize(WorkflowManagerPk.java:120)</p><p>          at com.perkons.frameworkpk.fpk.core.ContextLoaderListenerPk.contextInitialized(ContextLoaderListenerPk.java:92)</p><p>          at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)</p><p>          at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)</p><p>          at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)</p><p>          at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)</p><p>          at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)</p><p>          at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)</p><p>          at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)</p><p>          at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)</p><p>          at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)</p><p>          at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)</p><p>          at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)</p><p>          at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)</p><p>          at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)</p><p>          at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)</p><p>          at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)</p><p>          at org.apache.catalina.core.StandardService.start(StandardService.java:525)</p><p>          at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)</p><p>          at org.apache.catalina.startup.Catalina.start(Catalina.java:595)</p><p>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p><p>          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</p><p>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p><p>          at java.lang.reflect.Method.invoke(Method.java:597)</p><p>          at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)</p><p>          at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)</p><p>Caused by: java.lang.NullPointerException</p><p>          at org.jbpm.persistence.JpaProcessPersistenceContext.getProcessInstancesWaitingForEvent(JpaProcessPersistenceContext.java:35)</p><p>          at org.jbpm.persistence.processinstance.JPASignalManager.getProcessInstancesForEvent(JPASignalManager.java:40)</p><p>          at org.jbpm.persistence.processinstance.JPASignalManager.signalEvent(JPASignalManager.java:23)</p><p>          at org.jbpm.process.instance.ProcessRuntimeImpl$2.activationCreated(ProcessRuntimeImpl.java:340)</p><p>          at org.drools.impl.StatefulKnowledgeSessionImpl$AgendaEventListenerWrapper.activationCreated(StatefulKnowledgeSessionImpl.java:643)</p><p>          at org.drools.event.AgendaEventSupport.fireActivationCreated(AgendaEventSupport.java:41)</p><p>          at org.drools.common.DefaultAgenda.createActivation(DefaultAgenda.java:601)</p><p>          at org.drools.reteoo.RuleTerminalNode.assertLeftTuple(RuleTerminalNode.java:257)</p><p>          at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:196)</p><p>          at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:145)</p><p>          at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:154)</p><p>          at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)</p><p>          at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:141)</p><p>          at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</p><p>          at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</p><p>          at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</p><p>          at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</p><p>          at org.drools.marshalling.impl.ProtobufInputMarshaller.assertHandleIntoOTN(ProtobufInputMarshaller.java:483)</p><p>          at org.drools.marshalling.impl.ProtobufInputMarshaller.readFactHandles(ProtobufInputMarshaller.java:459)</p><p>          at org.drools.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:259)</p><p>          at org.drools.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:161)</p><p>          at org.drools.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:117)</p><p>          at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:91)</p><p>          ... 36 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>And finally... here is a screen of the moment the JpaProcessPersistenceContextManager is initialized using the cmdScopedEntityManager which is null</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><a href="https://community.jboss.org/servlet/JiveServlet/showImage/2-745095-18921/jpaprocesspersistenceCM.png"><span> https://community.jboss.org/servlet/JiveServlet/downloadImage/2-745095-18921/450-248/jpaprocesspersistenceCM.png </span></a></p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/745095#745095">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>