[jboss-user] [JBoss jBPM] - JTA transaction error inside jboss portal

lpiccoli do-not-reply at jboss.com
Mon Jul 27 02:39:35 EDT 2009


portal 2.7.2
jbpm 3.2.2


hi all

when accessing the JBPM context inside a portlet of jboss portal the following JTA error occurs depending whether the the context is created or get Current is called. 

i read the details of jbpm transation here
http://docs.jboss.org/jbpm/v3/userguide/deployment.html

I thought i understood the JBPM JTA settings but i have totally lost now.


my JTA settings are below.

  | <jbpm-context>
  |                <service name="persistence" factory="org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory" />
  |                <service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
  |                <service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
  |                <service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
  |             </jbpm-context>
  | 

When calling getCurrentJbpmContext() as in below, a 'Session closed' error occurs.


  | WorkflowService  workflowService = (WorkflowService) ctx.lookup("java:/portal/WorkflowService")
  | writer.println( "workflowService:" + workflowService );
  | 		  
  | JbpmContext context = workflowService.getJbpmConfiguration().getCurrentJbpmContext();
  | 
  | List<ProcessDefinition> taskList = context.getGraphSession().findAllProcessDefinitions();
  | 

So an existing context is found but the hibernate session is closed.


  | 2009-07-27 16:21:52,222 ERROR [STDERR] org.hibernate.SessionException: Session is closed!
  | 	at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:49)
  | 	at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1258)
  | 	at org.jbpm.db.GraphSession.findAllProcessDefinitions(GraphSession.java:209)
  | 	at org.jboss.portal.portlet.samples.SimplestHelloWorldPortlet.doView(SimplestHelloWorldPortlet.java:76)
  | 

So when i call createJbpmContext(), the JTA complains that an existing transaction is already on the current thread.


  | WorkflowService  workflowService = (WorkflowService) ctx.lookup("java:/portal/WorkflowService")
  | writer.println( "workflowService:" + workflowService );
  | 		  
  | JbpmContext context =  workflowService.getJbpmConfiguration().createJbpmContext();
  | 		  
  | List<ProcessDefinition> taskList = context.getGraphSession().findAllProcessDefinitions();
  | 




  | Cause: org.jboss.portal.portlet.PortletInvokerException: java.lang.IllegalStateException: BaseTransaction.checkTransactionState - [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] thread is already associated with a transaction!
  | Message: java.lang.IllegalStateException: BaseTransaction.checkTransactionState - [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] thread is already associated with a transaction!
  | StackTrace:
  | 
  | org.jboss.portal.portlet.PortletInvokerException: java.lang.IllegalStateException: BaseTransaction.checkTransactionState - [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] [com.arjuna.ats.internal.jta.transaction.arjunacore.alreadyassociated] thread is already associated with a transaction!
  | 	at org.jboss.portal.portlet.aspects.portlet.ContextDispatcherInterceptor.invoke(ContextDispatcherInterceptor.java:101)
  | 	at org.jboss.portal.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:82)
  | 	at org.jboss.portal.portlet.aspects.portlet.SecureTransportInterceptor.invoke(SecureTransportInterceptor.java:69)
  | 	at org.jboss.portal.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:82)
  | 	at org.jboss.portal.portlet.aspects.portlet.ValveInterceptor.invoke(ValveInterceptor.java:75)
  | 	at org.jboss.portal.portlet.PortletInvokerInterceptor.invoke(PortletInvokerInterceptor.java:82)
  | 	at org.jboss.portal.portlet.container.ContainerPortletInvoker.invoke(ContainerPortletInvoker.java:116)
  | 
  | 


how is jbpm configured to use the existing JTA inside portal?

any help is most appreciated.

-lp

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4246093#4246093

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4246093



More information about the jboss-user mailing list