Hi list,<br><br>I have a very simple webapp demo based on drools-persistence-jpa.<br><br>I can obtain a StatefulKnowledgeSession from this statement:<br><br> ksession = JPAKnowledgeService.newStatefulKnowledgeSession(this.kbase, null, env);<br>
<br>and the SessionInfo will be stored into database correctly, except that the rulesByteArray field is always empty.<br><br>Then I use the following statement to retrieve this ksession, but NPE occurred.<br><br> ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(<br>
command.getSessionId(), this.kbase, null, env);<br><br>I've read the code (JPASessionMarshallingHelper.loadSnapshot()) and find that this should be caused by the empty rulesByteArray filed.<br>
<br>I'm wondering in which case this field is empty, and how to make it work correct.<br><br>Below is the stacktrace:<br><br>Caused by: java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException<br>
at org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.buildCommanService(KnowledgeStoreServiceImpl.java:110)<br>
at org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.loadStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:78)<br> at org.drools.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:118)<br>
at com.zyeeda.framework.knowledge.internal.DroolsKnowledgeServiceProvider.execute(DroolsKnowledgeServiceProvider.java:165)<br> at $KnowledgeService_12c173f2df7.execute($KnowledgeService_12c173f2df7.java)<br> at com.zyeeda.framework.resources.SampleFlowResource.start(SampleFlowResource.java:36)<br>
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
at java.lang.reflect.Method.invoke(Method.java:597)<br> at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)<br> at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)<br>
... 49 more<br>Caused by: java.lang.reflect.InvocationTargetException<br> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)<br>
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)<br> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)<br> at org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.buildCommanService(KnowledgeStoreServiceImpl.java:95)<br>
... 60 more<br>Caused by: java.lang.NullPointerException<br> at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:89)<br> at org.drools.persistence.session.JPASessionMarshallingHelper.loadSnapshot(JPASessionMarshallingHelper.java:85)<br>
at org.drools.persistence.session.SingleSessionCommandService.initKsession(SingleSessionCommandService.java:196)<br> at org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:159)<br>
<br>Thank you very much!<br clear="all"><br>-- <br>唐睿<br>