[jboss-user] [JBoss jBPM] - Issue with jBPM and EJB3 RC9 FD?

scotto do-not-reply at jboss.com
Wed Sep 20 00:06:17 EDT 2006


Hello.

Since upgrading from EJB3 RC8 to RC9 on JBossAS4.0.4.GA, I am getting a new exception with jBPM in code that was previously working fine (using both jBPM 3.1.1 and jBPM 3.1.2).

The exception I am getting is unusual (full exception trace shown at the end of this post):

anonymous wrote : 
  | Exception: javax.ejb.EJBTransactionRolledbackException: javax.persistence.PersistenceException: org.hibernate.HibernateException: instance not of expected entity type: org.jbpm.graph.def.Node_$$_javassist_118 is not a: org.jbpm.graph.def.Node
  | 

This makes me think there could be an issue with jBPM and the new version of Hibernate used in EJB3 RC9?

The code in question is a @Stateless session bean method (with an injected @PersistenceContext EntityManager) that uses a JbpmContext to create and start a jBPM workflow process.

This code is slightly unconventional, in that I am explicitly sharing the injected EntityManager's hibernate session with the JbpmContext, so as to avoid creating a nested transaction. The code excerpt for this from the SLSB is as follows:

// Injected EntityManager
  | @PersistenceContext protected EntityManager em;
  | ....
  | public long createProcess(...) {
  |     // Share the EntityManager's hibernate session with jBPM
  |     JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
  |     HibernateEntityManager hem = (HibernateEntityManager)em.getDelegate();
  |     jbpmContext.setSession( hem.getSession() );
  |     try {
  |         ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefinitionName);
  |         ProcessInstance processInstance = new ProcessInstance(processDefinition);
  |         ...
  |         // Initialise process context variables
  |         ...
  |         jbpmContext.save(processInstance);
  |         return processInstance.getId();
  |     } catch( ... ) { ... }
  |     finally {
  |         jbpmContext.close();
  |     }
  | }

I have put all the jBPM Hibernate mapping file definitions in my EJB3 persistence.xml file, and jBPM is deployed as part of my application .ear file. This configuration has been working well for months with EJB3 RC8 and earlier.

The other part of the error which is confusing me is the nested "EntityManager must be access within a transaction" exception, which I think must be a red-herring side-effect of the initial "instance not of expected entity type" exception, as there is definitely a transaction in progress when I pass the hibernate session to the JbpmContext (as it is SLSB method code which creates the JbpmContext).

Does anyone have any idea why I'm now getting this failure when the only change is an upgrade from EJB3 RC8 to RC9?

Here is a full trace of the exception:

anonymous wrote : 
  | 2006-09-20 11:03:40,171 203125 ERROR [com.vieo.ccs.model.process.impl.WorkflowProcessFactoryBean] (pool-3-thread-2:) Exception: javax.ejb.EJBTransactionRolledbackException: javax.persistence.PersistenceException: org.hibernate.HibernateException: instance not of expected entity type: org.jbpm.graph.def.Node_$$_javassist_118 is not a: org.jbpm.graph.def.Node
  | 2006-09-20 11:03:40,171 203125 ERROR [com.vieo.ccs.model.topology.commands.StartProcessCommand] (pool-3-thread-2:) Error initialising process: ILU Assistance Call : com.vieo.ccs.model.topology.WorkflowException: javax.ejb.EJBTransactionRolledbackException: javax.persistence.PersistenceException: org.hibernate.HibernateException: instance not of expected entity type: org.jbpm.graph.def.Node_$$_javassist_118 is not a: org.jbpm.graph.def.Node
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) Exception in thread "pool-3-thread-2" 
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) javax.ejb.EJBException: javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.java:275)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:131)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:211)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at $Proxy220.processDeviceEvent(Unknown Source)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at com.vieo.ccs.server.handlers.GatewayMessageHandler.process(GatewayMessageHandler.java:48)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at com.vieo.ccs.server.handlers.MessageHandlerFactory.processMessage(MessageHandlerFactory.java:54)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at com.vieo.ccs.server.AMQGatewayServerThread.run(AMQGatewayServerThread.java:61)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 2006-09-20 11:03:40,187 203141 ERROR [STDERR] (pool-3-thread-2:) 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at java.lang.Thread.run(Thread.java:595)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) Caused by: javax.persistence.TransactionRequiredException: EntityManager must be access within a transaction
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.entity.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.java:149)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.entity.TransactionScopedEntityManager.merge(TransactionScopedEntityManager.java:180)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at com.vieo.ccs.model.topology.impl.GatewayConnectorBean.processDeviceEvent(GatewayConnectorBean.java:121)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.seam.ejb.SeamInterceptor.aroundInvoke(SeamInterceptor.java:40)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at sun.reflect.GeneratedMethodAccessor151.invoke(Unknown Source)
  | 2006-09-20 11:03:40,218 203172 ERROR [STDERR] (pool-3-thread-2:) 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
  | 2006-09-20 11:03:40,250 203204 ERROR [STDERR] (pool-3-thread-2:) 	... 22 more
  | 

Thanks!

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

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



More information about the jboss-user mailing list