Gareth Edwards [
https://community.jboss.org/people/garethed] created the discussion
"Re: JTA Problem with multiple sessions"
To view the discussion, visit:
https://community.jboss.org/message/795772#795772
--------------------------------------------------------------
I am now
ksession.addEventListener(new DefaultProcessEventListener(){
@Override
public void afterProcessCompleted(ProcessCompletedEvent event){
System.out.println("Disposing of
" + event.getProcessInstance().getProcessName() + "!");
ksession.execute(new CMTDisposeCommand());
}
});
I am creating a session and running an instance of a work-flow in it and then completing
the workflow and disposing the session.
I then create another session and another work-flow instance in the new session.
This does not throw an error after completing the first work-flow on first session but now
throws the exception when completing the next session of the next work-flow.
17:04:28,939 INFO [stdout] (http--0.0.0.0-8080-2) WorkflowProcessInstance1
[processId=TrakCel.DataTest,state=1]
17:04:28,939 INFO [stdout] (http--0.0.0.0-8080-2) Workflow Instance Variables
17:04:28,939 INFO [stdout] (http--0.0.0.0-8080-2) agent:krisv
17:04:28,939 INFO [stdout] (http--0.0.0.0-8080-2) test_id:TZ001A0001
17:04:56,464 INFO [stdout] (Thread-75) Test is incorrect
17:04:56,465 INFO [stdout] (Thread-75) trakzone_id:TZ001A0001
17:04:56,465 INFO [stdout] (Thread-75) scanned_test_idTZ001A0001A
17:04:56,475 INFO [stdout] (Thread-75) Disposing of DataTest!
*At this point the fiest session has been disposed with no errors.*
*A new session and work-flow instance is started*
17:09:53,795 INFO [stdout] (http--0.0.0.0-8080-3) WorkflowProcessInstance3
[processId=Package1.DataTest,state=1]
17:09:53,796 INFO [stdout] (http--0.0.0.0-8080-3) Workflow Instance Variables
17:09:53,796 INFO [stdout] (http--0.0.0.0-8080-3) agent:krisv
17:09:53,796 INFO [stdout] (http--0.0.0.0-8080-3) test_id:TZ001A0001
17:10:15,571 ERROR [org.drools.persistence.SingleSessionCommandService] (Thread-75) Could
not commit session: java.lang.IllegalStateException: Illegal method call. This session was
previously disposed.
at
org.drools.reteoo.DisposedReteooWorkingMemory.getId(DisposedReteooWorkingMemory.java:98)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:137)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at org.drools.command.runtime.GetIdCommand.execute(GetIdCommand.java:41)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at org.drools.command.runtime.GetIdCommand.execute(GetIdCommand.java:28)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:119)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.jbpm.process.workitem.wsht.AsyncGenericHTWorkItemHandler$TaskCompletedHandler.execute(AsyncGenericHTWorkItemHandler.java:232)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:204)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientHandler.messageReceived(HornetQTaskClientHandler.java:56)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1.run(HornetQTaskClientConnector.java:122)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at java.lang.Thread.run(Thread.java:636) [rt.jar:1.6.0_18]
17:10:15,574 WARN [com.arjuna.ats.jta] (Thread-75) ARJUNA016029:
SynchronizationImple.afterCompletion - failed for
org.drools.persistence.jta.JtaTransactionSynchronizationAdapter@7a947037 with exception:
java.lang.IllegalStateException: Illegal method call. This session was previously
disposed.
at
org.drools.reteoo.DisposedReteooWorkingMemory.getProcessRuntime(DisposedReteooWorkingMemory.java:270)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.impl.StatefulKnowledgeSessionImpl.getProcessRuntime(StatefulKnowledgeSessionImpl.java:874)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.SingleSessionCommandService$SynchronizationImpl.afterCompletion(SingleSessionCommandService.java:455)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.jta.JtaTransactionSynchronizationAdapter.afterCompletion(JtaTransactionSynchronizationAdapter.java:25)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(SynchronizationImple.java:96)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:402)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:334)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:120)
at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:188)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.rollbackAndDisassociate(TransactionImple.java:1247)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:134)
at
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114)
at
org.jboss.tm.usertx.client.ServerVMClientUserTransaction.rollback(ServerVMClientUserTransaction.java:175)
at
org.drools.persistence.jta.JtaTransactionManager.rollback(JtaTransactionManager.java:191)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.SingleSessionCommandService.rollbackTransaction(SingleSessionCommandService.java:402)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:381)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:119)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.jbpm.process.workitem.wsht.AsyncGenericHTWorkItemHandler$TaskCompletedHandler.execute(AsyncGenericHTWorkItemHandler.java:232)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:204)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientHandler.messageReceived(HornetQTaskClientHandler.java:56)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1.run(HornetQTaskClientConnector.java:122)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at java.lang.Thread.run(Thread.java:636) [rt.jar:1.6.0_18]
17:10:15,600 WARN [com.arjuna.ats.arjuna] (Thread-75) ARJUNA012127:
TwoPhaseCoordinator.afterCompletion - returned failure for SynchronizationImple<
0:ffff7f000101:-1da4df24:510d461b:6f,
org.drools.persistence.jta.JtaTransactionSynchronizationAdapter@7a947037 >
17:10:15,605 ERROR [org.jbpm.task.service.hornetq.HornetQTaskClientConnector] (Thread-75)
Client Exception with class class
org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1 using port 5153:
java.lang.IllegalStateException: Illegal method call. This session was previously
disposed.
at
org.drools.reteoo.DisposedReteooWorkingMemory.getId(DisposedReteooWorkingMemory.java:98)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.impl.StatefulKnowledgeSessionImpl.getId(StatefulKnowledgeSessionImpl.java:137)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at org.drools.command.runtime.GetIdCommand.execute(GetIdCommand.java:41)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at org.drools.command.runtime.GetIdCommand.execute(GetIdCommand.java:28)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
[drools-persistence-jpa-5.5.0.Final.jar:5.5.0.Final]
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:119)
[drools-core-5.5.0.Final.jar:5.5.0.Final]
at
org.jbpm.process.workitem.wsht.AsyncGenericHTWorkItemHandler$TaskCompletedHandler.execute(AsyncGenericHTWorkItemHandler.java:232)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:204)
[jbpm-human-task-core-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientHandler.messageReceived(HornetQTaskClientHandler.java:56)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at
org.jbpm.task.service.hornetq.HornetQTaskClientConnector$1.run(HornetQTaskClientConnector.java:122)
[jbpm-human-task-hornetq-5.4.0.Final.jar:5.4.0.Final]
at java.lang.Thread.run(Thread.java:636) [rt.jar:1.6.0_18]
17:10:15,651 INFO [stdout] (Thread-76) Test is incorrect
17:10:15,652 INFO [stdout] (Thread-76) test_id:TZ001A0001
17:10:15,652 INFO [stdout] (Thread-76) scanned_test_idTZ001A0001A
17:10:15,661 INFO [stdout] (Thread-76) Disposing of DataTest!
*So now the error is not after the dispose but when completing the sencond instance of the
second session.*
*The work-flow is very simple start -> human task to get test_id -> XOR -> script
task to print success or script task to print fail -> end*
*Gareth.
*
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/795772#795772]
Start a new discussion in jBPM at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]