Hi,<br><br>When I started to using drools flow persistence, I was getting the same error "java.lang.IllegalStateException: EntityManager is closed". After a lot of time I figured out that I was using the command "ksession.dispose();" and when I removed this command everything worked fine.<br>
<br>Regards,<br>Anderson<br><br><div class="gmail_quote">2010/11/23 raic <span dir="ltr"><<a href="mailto:agomezcom@gmail.com">agomezcom@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Hi,<br>
<br>
I'm having problems using drools flow persistance with human tasks. I'm<br>
using drools server.<br>
<br>
On one hand, I have my test application, which starts a MinaTaskServer for<br>
registering human tasks, and then, the application generates JSON commands<br>
for executing a flow with human tasks on the execution server.<br>
<br>
Without using flow persistence, this is working ok, i'm able to retrieve the<br>
pending tasks and completing them without problems.<br>
<br>
When I try to configure flow persistence on the execution server, i can<br>
start the process, the tasks are registered ok and drools flow tables are<br>
generated in my database (processinstanceinfo,sessioninfo,workiteminfo...)<br>
with the correct flow information. The problem appears when i retrieve a<br>
pending task, and then, i want to complete it. It seems that the<br>
communication between MinaTaskServer and ExecutionServer is not ok.<br>
<br>
The error i'm getting is the following:<br>
<br>
<br>
[2010:11:327 18:11:661:debug] Message receieved on client :<br>
EventTriggerResponse<br>
<br>
[2010:11:327 18:11:661:debug] Arguments :<br>
[org.drools.task.event.EventPayload@1b2df13]<br>
Task completed 1<br>
[2010:11:327 18:11:661:debug] Message receieved on client :<br>
EventTriggerResponse<br>
[2010:11:327 18:11:661:debug] Arguments :<br>
[org.drools.task.event.EventPayload@1f7c6e1]<br>
Task completed 1<br>
[2010:11:327 18:11:770:debug] Message receieved on client : GetTaskResponse<br>
[2010:11:327 18:11:770:debug] Arguments : [org.drools.task.Task@d17fbb51]<br>
[2010:11:327 18:11:770:exception] Uncaught exception on client<br>
java.lang.IllegalStateException: EntityManager is closed<br>
at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java<br>
:66)<br>
at<br>
org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)<br>
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br>
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br>
at java.lang.reflect.Method.invoke(Unknown Source)<br>
at<br>
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)<br>
at $Proxy132.find(Unknown Source)<br>
at<br>
org.drools.persistence.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:88)<br>
at<br>
org.drools.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:250)<br>
at<br>
org.drools.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:80)<br>
at<br>
org.drools.task.service.mina.MinaTaskClientHandler.messageReceived(MinaTaskClientHandler.java:47)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)<br>
at<br>
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:375)<br>
at<br>
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:229)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)<br>
at<br>
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)<br>
at<br>
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)<br>
at<br>
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638)<br>
at<br>
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598)<br>
at<br>
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587)<br>
at<br>
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61)<br>
at<br>
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969)<br>
at<br>
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)<br>
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown<br>
Source<br>
)<br>
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown<br>
Source)<br>
at java.lang.Thread.run(Unknown Source)<br>
<br>
<br>
<br>
<br>
And here is my configuration:<br>
<br>
<br>
knowledge-services.xml (spring configuration)<br>
<br>
<br>
<br>
<?xml version="1.0" encoding="UTF-8"?><br>
<beans xmlns="<a href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a>"<br>
xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
xmlns:drools="<a href="http://drools.org/schema/drools-spring" target="_blank">http://drools.org/schema/drools-spring</a>"<br>
xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a><br>
<a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" target="_blank">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a><br>
<a href="http://drools.org/schema/drools-spring" target="_blank">http://drools.org/schema/drools-spring</a><br>
<a href="http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd" target="_blank">http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd</a>"><br>
<br>
<bean id="ds"<br>
class="org.springframework.jdbc.datasource.DriverManagerDataSource"><br>
<property name="driverClassName" value="com.mysql.jdbc.Driver" /><br>
<property name="url" value="jdbc:mysql://localhost:3306/drools_flow" /><br>
<property name="username" value="user" /><br>
<property name="password" value="pass" /><br>
<br>
<br>
</bean><br>
<br>
<drools:connection id="connection1" type="local" /><br>
<drools:execution-node id="node1" connection="connection1" /><br>
<br>
<drools:kbase id="kbProcessWorkItems" node="node1"><br>
<drools:resources><br>
<drools:resource type="CHANGE_SET"<br>
source="classpath:changeset.xml"/><br>
</drools:resources><br>
</drools:kbase><br>
<br>
<bean id="myEmf"<br>
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><br>
<property name="dataSource" ref="ds" /><br>
<property name="persistenceUnitName"<br>
value="org.drools.persistence.jpa.local" /><br>
</bean><br>
<br>
<bean id="txManager"<br>
class="org.springframework.orm.jpa.JpaTransactionManager"><br>
<property name="entityManagerFactory" ref="myEmf" /><br>
</bean><br>
<br>
<drools:kstore id="kstore1" /><br>
<br>
<drools:ksession id="ksession1" type="stateful" kbase="kbProcessWorkItems"<br>
node="node1"><br>
<drools:configuration><br>
<drools:jpa-persistence><br>
<drools:transaction-manager ref="txManager" /><br>
<drools:entity-manager-factory ref="myEmf" /><br>
<drools:variable-persisters><br>
<drools:persister for-class="javax.persistence.Entity"<br>
implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/><br>
</drools:variable-persisters><br>
</drools:jpa-persistence><br>
</drools:configuration><br>
</drools:ksession><br>
<br>
</beans><br>
<br>
<br>
<br>
And here my persistence.xml:<br>
<br>
<br>
<?xml version="1.0" encoding="UTF-8"?><br>
<persistence version="1.0" xmlns="<a href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a>"<br>
xmlns:orm="<a href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a>"<br>
xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
xsi:schemaLocation="<br>
<a href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a><br>
<a href="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd</a><br>
<a href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><br>
<a href="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/orm_1_0.xsd</a>"><br>
<br>
<persistence-unit name="org.drools.persistence.jpa.local"<br>
transaction-type="RESOURCE_LOCAL"><br>
<provider>org.hibernate.ejb.HibernatePersistence</provider><br>
<br>
<class>org.drools.persistence.session.SessionInfo</class><br>
<class>org.drools.persistence.processinstance.ProcessInstanceInfo</class><br>
<br>
<class>org.drools.persistence.processinstance.WorkItemInfo</class><br>
<br>
<class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class><br>
<br>
<class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class><br>
<br>
<!-- my persistent variables --><br>
<class>com.sample.bussiness.model.ClientModel</class><br>
<properties><br>
<property name="hibernate.dialect"<br>
value="org.hibernate.dialect.MySQL5Dialect"/><br>
<property name="hibernate.max_fetch_depth" value="3" /><br>
<property name="hibernate.hbm2ddl.auto" value="create" /><br>
<property name="hibernate.show_sql" value="false" /><br>
</properties><br>
</persistence-unit><br>
</persistence><br>
<br>
<br>
<br>
I've seen some examples that uses bitronix but i'm not using it, i don't<br>
know if that is the problem...<br>
<br>
<br>
Some ideas?<br>
<br>
Thanks<br>
<font color="#888888"><br>
<br>
<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://drools-java-rules-engine.46999.n3.nabble.com/Problem-persisting-human-tasks-tp1954934p1954934.html" target="_blank">http://drools-java-rules-engine.46999.n3.nabble.com/Problem-persisting-human-tasks-tp1954934p1954934.html</a><br>
Sent from the Drools - User mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</font></blockquote></div><br>