7 Replies Latest reply on Apr 27, 2007 11:06 AM by Ronald van Kuijk

    EJB3 Stateless Session Bean and jbpm-enterprise.ear

    Chris Russell Newbie

      Can someone please explain the correct transaction configuration for creating a stateless session bean that accesses the jbpm-enterprise.ear
      Ive asked this everyway I know how and searched every forum I can. There are only ever hints, rumors, and guesses. Please help before I shoot my computer and go to work for microsoft.

      jbpm.3 built from source
      Jboss 4.0.5GA with jboss-messaging and EJB3.
      Postgres 8.2.3 database for all of the above.

      I have all the databases, undocumented messaging queues added to jboss configs, login-config working properly, etc. Can deploy websale.jpdl and walk through it using the jbpm-console. Alls good there. But that is all within the confines of jbpm-enterprise.ear.

      Now, next logical step, have an ejb start a simple work flow and signal it through to the end. I can post code but it is basically the HelloWorld example.
      ejb3.method1 initiates the process.
      ejb3.method2 signals process to some intermediate node
      ejb3.method3 signals process to end node.
      I am able to have my ejb3 initiate a process and signal to intermediate tokens but when I signal it to the end I get exceptions about JTA transaction not bound.
      So with my config everything works fine up until the deleteJobsForProcessInstance call.

      I know it is just a config issue but no one seems to have a real or complete explanation of how the jbpm-enterprise's jbpm.cfg.xml and hibernate.cfg.xml should be configured and how an ejb in a separate ear (that does not contain jbpm-jpdl.jar) should be configured.

      YES I have read section X of the user guide on persistence and YES I have STFF so please do not belittle someone trying hard to use this product in a real world way!

      My jbpm.cfg.xml (Only way I could even get where I am now)
      Was unable to get working the JtaDbPersistenceServiceFactory so I droped back toDbPersistenceServiceFactory. The user guide says to disable transactions but if I put in isTransactionEnabled=true that does not work either. If I try to enable CMT in the jbpm-enterprises hibernate.cfg.xml I cant even run the websale example because it complains about the CMT. I've tried every combination imaginable so it would be very helpful to have a working example rather than my partially working example.

      Why am I able to initiate a process and signal it but not signal it to the end. I assume it has something to do with the Schedular service some how. If the deleting of process instance is supposed to join the CMT transaction initiated in my ejb method then how do I get it to join my inprocess transaction? JoinableCMTTransactionFactory.??

      EJB3's jbpm.cfg.xml (matches jbpm-enterprise's as does the hibernate.cfg.xml)

       jbpmConfiguration = JbpmConfiguration.parseXmlString(
       "<jbpm-configuration>"+
       " <jbpm-context>"+
       " <service name='persistence' >"+
       " <factory>"+
       //" <bean class='org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory' />"+
       " <bean class='org.jbpm.persistence.db.DbPersistenceServiceFactory' />"+
       //" <field name='isTransactionEnabled'><false /></field>"+
       //" <field name='isCurrentSessionEnabled'><false /></field>"+
       " </factory>"+
       " </service>"+
       " <service name='message' factory='org.jbpm.msg.jms.JmsMessageServiceFactoryImpl' />"+
       " <service name='scheduler' factory='org.jbpm.scheduler.ejbtimer.EjbSchedulerServiceFactory' />"+
       " <service name='tx' factory='org.jbpm.tx.TxServiceFactory' />"+
       " <service name='logging' factory='org.jbpm.logging.db.DbLoggingServiceFactory' />"+
       " <service name='authentication' factory='org.jbpm.security.authentication.DefaultAuthenticationServiceFactory' />"+
       " </jbpm-context>" +
       " <string name='resource.hibernate.cfg.xml' " +
       " value='"+hibernateName+"' />" +
       " <string name='resource.business.calendar' " +
       " value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
       " <string name='resource.default.modules' " +
       " value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
       " <string name='resource.converter' " +
       " value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
       " <string name='resource.action.types' " +
       " value='org/jbpm/graph/action/action.types.xml' />" +
       " <string name='resource.node.types' " +
       " value='org/jbpm/graph/node/node.types.xml' />" +
       " <string name='resource.varmapping' " +
       " value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
       " <string name='resource.mail.templates' value='jbpm.mail.templates.xml' />"+
       //"<int name='jbpm.byte.block.size' value='1024' singleton='true' />"+
       //"<string name='jbpm.mail.smtp.host' value='localhost' />"+
       //"<bean name='jbpm.task.instance.factory' class='org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl' singleton='true' />"+
       //"<bean name='jbpm.variable.resolver' class='org.jbpm.jpdl.el.impl.JbpmVariableResolver' singleton='true' />"+
       //"<bean name='jbpm.mail.address.resolver' class='org.jbpm.identity.mail.IdentityAddressResolver' singleton='true' />"+
       //"<null name='jbpm.job.executor' />"+
       "</jbpm-configuration>"
       );
      

      hibernate.cfg.xml used for both jbpm-enterprise.ear and my ear
      <?xml version='1.0' encoding='utf-8'?>
      
      <!DOCTYPE hibernate-configuration PUBLIC
       "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
       "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
      
      <hibernate-configuration>
       <session-factory>
      
       <!-- hibernate dialect -->
       <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
      
       <!-- JDBC connection properties (begin) ==
       <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
       <property name="hibernate.connection.url">jdbc:postgresql://10.0.0.50:5432/jboss4.0.5</property>
       <property name="hibernate.connection.username">postgres</property>
       <property name="hibernate.connection.password">postgres</property>
       ==== JDBC connection properties (end) -->
      
       <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
      
       <!-- JBoss transaction manager lookup (begin) -->
       <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
       <!-- JBoss transaction manager lookup (end) -->
      
       <!-- DataSource properties (begin) -->
       <property name="hibernate.connection.datasource">java:/PostgresDS</property>
       <!-- DataSource properties (end) -->
      
       <!-- JTA transaction properties (begin) -->
       <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
       <property name="jta.UserTransaction">java:comp/UserTransaction</property>
       <!-- JTA transaction properties (end) -->
      
       <!-- CMT transaction properties (begin) -->
       <!-- <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
       <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property> -->
       <!-- CMT transaction properties (end) -->
      
       <!-- logging properties (begin) ===
       <property name="hibernate.show_sql">true</property>
       <property name="hibernate.format_sql">true</property>
       <property name="hibernate.use_sql_comments">true</property>
       ==== logging properties (end) -->
      
       <!-- ############################################ -->
       <!-- # mapping files with external dependencies # -->
       <!-- ############################################ -->
      
       <!-- following mapping file has a dependendy on -->
       <!-- 'bsh-{version}.jar'. -->
       <!-- uncomment this if you don't have bsh on your -->
       <!-- classpath. you won't be able to use the -->
       <!-- script element in process definition files -->
       <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
      
       <!-- following mapping files have a dependendy on -->
       <!-- 'jbpm-identity.jar', mapping files -->
       <!-- of the pluggable jbpm identity component. -->
       <!-- Uncomment the following 3 lines if you -->
       <!-- want to use the jBPM identity mgmgt -->
       <!-- component. -->
      
       <mapping resource="org/jbpm/identity/User.hbm.xml"/>
       <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
       <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
      
      
       <!-- following mapping files have a dependendy on -->
       <!-- the JCR API -->
       <!-- jcr mappings (begin) ===
       <mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
       ==== jcr mappings (end) -->
      
      
       <!-- ###################### -->
       <!-- # jbpm mapping files # -->
       <!-- ###################### -->
      
       <!-- hql queries and type defs -->
       <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
      
       <!-- graph.def mapping files -->
       <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
       <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
       <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
      
       <!-- graph.node mapping files -->
       <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
       <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
      
       <!-- context.def mapping files -->
       <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
       <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
      
       <!-- taskmgmt.def mapping files -->
       <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
      
       <!-- module.def mapping files -->
       <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
      
       <!-- bytes mapping files -->
       <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
      
       <!-- file.def mapping files -->
       <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
      
       <!-- scheduler.def mapping files -->
       <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
       <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
      
       <!-- graph.exe mapping files -->
       <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
       <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
       <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
       <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
      
       <!-- module.exe mapping files -->
       <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
      
       <!-- context.exe mapping files -->
       <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
       <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
      
       <!-- job mapping files -->
       <mapping resource="org/jbpm/job/Job.hbm.xml"/>
       <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
       <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
       <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
      
       <!-- taskmgmt.exe mapping files -->
       <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
      
       <!-- logging mapping files -->
       <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
       <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
       <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
       <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
       <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
      
       </session-factory>
      </hibernate-configuration>
      
      


      Exception seen when transitioning to end state.

      10:06:27,276 WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.graph.node.TaskNode - this operation breaks ==
      10:06:27,347 ERROR [JTATransaction] Could not find UserTransaction in JNDI
      javax.naming.NameNotFoundException: UserTransaction not bound
       at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
       at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
       at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
       at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:716)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
       at javax.naming.InitialContext.lookup(InitialContext.java:351)
       at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
       at org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.java:57)
       at org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
       at org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
       at org.jbpm.db.JobSession.deleteJobsForProcessInstance(JobSession.java:213)
       at org.jbpm.scheduler.ejbtimer.EjbSchedulerService.deleteTimersByProcessInstance(EjbSchedulerService.java:59)
       at org.jbpm.graph.exe.ProcessInstance.end(ProcessInstance.java:310)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.exe.ProcessInstance_$$_javassist_105.end(ProcessInstance_$$_javassist_105.java)
       at org.jbpm.graph.exe.Token.notifyParentOfTokenEnd(Token.java:320)
       at org.jbpm.graph.exe.Token.end(Token.java:292)
       at org.jbpm.graph.exe.Token.end(Token.java:242)
       at org.jbpm.graph.node.EndState.execute(EndState.java:59)
       at org.jbpm.graph.def.Node.enter(Node.java:318)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.def.Node_$$_javassist_44.enter(Node_$$_javassist_44.java)
       at org.jbpm.graph.def.Transition.take(Transition.java:151)
       at org.jbpm.graph.def.Node.leave(Node.java:393)
       at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:209)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.def.Node_$$_javassist_44.leave(Node_$$_javassist_44.java)
       at org.jbpm.graph.exe.Token.signal(Token.java:194)
       at org.jbpm.graph.exe.Token.signal(Token.java:139)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.exe.Token_$$_javassist_52.signal(Token_$$_javassist_52.java)
       at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:475)
       at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:389)
       at server.ejb.TestWorkFlowBean.finishTestWorkFlow(TestWorkFlowBean.java:316)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
       at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
       at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:46)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
       at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
       at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:263)
       at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
       at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
       at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
       at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:412)
       at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
      10:06:27,425 ERROR [STDERR] org.hibernate.TransactionException: Could not find UserTransaction in JNDI:
       at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:64)
       at org.hibernate.transaction.JTATransactionFactory.createTransaction(JTATransactionFactory.java:57)
       at org.hibernate.jdbc.JDBCContext.getTransaction(JDBCContext.java:193)
       at org.hibernate.impl.SessionImpl.getTransaction(SessionImpl.java:1315)
       at org.jbpm.db.JobSession.deleteJobsForProcessInstance(JobSession.java:213)
       at org.jbpm.scheduler.ejbtimer.EjbSchedulerService.deleteTimersByProcessInstance(EjbSchedulerService.java:59)
       at org.jbpm.graph.exe.ProcessInstance.end(ProcessInstance.java:310)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.exe.ProcessInstance_$$_javassist_105.end(ProcessInstance_$$_javassist_105.java)
       at org.jbpm.graph.exe.Token.notifyParentOfTokenEnd(Token.java:320)
       at org.jbpm.graph.exe.Token.end(Token.java:292)
       at org.jbpm.graph.exe.Token.end(Token.java:242)
       at org.jbpm.graph.node.EndState.execute(EndState.java:59)
       at org.jbpm.graph.def.Node.enter(Node.java:318)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.def.Node_$$_javassist_44.enter(Node_$$_javassist_44.java)
       at org.jbpm.graph.def.Transition.take(Transition.java:151)
       at org.jbpm.graph.def.Node.leave(Node.java:393)
       at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:209)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.def.Node_$$_javassist_44.leave(Node_$$_javassist_44.java)
       at org.jbpm.graph.exe.Token.signal(Token.java:194)
       at org.jbpm.graph.exe.Token.signal(Token.java:139)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:205)
       at org.jbpm.graph.exe.Token_$$_javassist_52.signal(Token_$$_javassist_52.java)
       at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:475)
       at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:389)
       at server.ejb.TestWorkFlowBean.finishTestWorkFlow(TestWorkFlowBean.java:316)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
       at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
       at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:46)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
       at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
       at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:263)
       at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:106)
       at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:828)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:681)
       at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:358)
       at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:412)
       at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239)
      Caused by: javax.naming.NameNotFoundException: UserTransaction not bound
       at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
       at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
       at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
       at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:716)
       at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
       at javax.naming.InitialContext.lookup(InitialContext.java:351)
       at org.hibernate.transaction.JTATransaction.<init>(JTATransaction.java:60)
       ... 77 more
      
      


        • 1. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
          Martin Weiler Apprentice

          If you use jBPM in a managed environment, in your case from within an EJB3 bean, you have to set the proper configuration parameters. Otherwise jBPM will delegate transaction handling to Hibernate instead of enrolling in CMT.
          See: http://docs.jboss.org/jbpm/v3/userguide/persistence.html#thedbpersistenceservicefactory

          For jBPM to use managed transactions, it must be configured correctly in jbpm.cfg.xml and hibernate.cfg.xml. In particular in jbpm.cfg.xml set the isTransactionEnabled attribute to 'false'. By setting isTransactionEnabled to false we are telling jBPM to NOT close the hibernate session when the client calls jbpmContext.close(). This is important in a managed environment, since we want hibernate to close the session only after the transaction manager tells Hibernate that it has committed the transaction.

          <jbpm-context>
          <service name="persistence">
          <factory>
          <bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
          <field name="isTransactionEnabled"><false /></field>
          </bean>
          </factory>
          </service>
          </jbpm-context>
          


          In hibernate.cfg.xml, you should set:

          <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
          
          <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
          


          This will make jBPM work with container managed transactions.

          In your hibernate.cfg.xml remove the property "jta.UserTransaction", as you are enrolling in CMT.

          Regards,
          Martin

          • 2. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
            Ronald van Kuijk Master

            ahhhhh???? please???? know what I mean??? ;-)

            • 3. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
              Chris Russell Newbie

              Martin, thank you so very much.
              Ronald man I don't have any idea what you were trying to convey.

              The ONLY difference from what I had already tried was the silly removal of the

               <property name="jta.UserTransaction">java:comp/UserTransaction</property>
              

              If it is there, the deleteJobsForProcessInstance throws the exception.
              Silly me I figured that the flag isTransactionEnabled would override ever even reading this property?

              So just to ease others pain and suffering here is the jbpm.cfg.xml and hibernate.cfg.xml that work for me for postgres.
              Also this little snippet is important as well when creating a JbpmContext from your own config xml string. The combination of these 3 things finally does seem to work.
               /**
               * Get jbpm context. Note that we must set the session from the DbPersistenceService
               * or hibernate will fail.
               */
               private JbpmContext getJbpmContext() {
               //JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
               JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
               DbPersistenceService persServ=(DbPersistenceService)jbpmContext.getServices().getPersistenceService();
               jbpmContext.setSession(persServ.getSessionFactory().getCurrentSession());
               return jbpmContext;
               }
              

              jbpm.cfg.xml (actually just an xml string in my program)
               "<jbpm-configuration>"+
               " <jbpm-context>"+
               " <service name='persistence' >"+
               " <factory>"+
               " <bean class='org.jbpm.persistence.db.DbPersistenceServiceFactory'
              />"+
               " <field name='isTransactionEnabled'><false /></field>"+
               " </factory>"+
               " </service>"+
               " <service name='message' factory='org.jbpm.msg.jms.JmsMessageServiceFactoryImpl' />"+
               " <service name='scheduler' factory='org.jbpm.scheduler.ejbtimer.EjbSchedulerServiceFactory' />"+
               " <service name='tx' factory='org.jbpm.tx.TxServiceFactory' />"+
               " <service name='logging' factory='org.jbpm.logging.db.DbLoggingServiceFactory' />"+
               " <service name='authentication' factory='org.jbpm.security.authentication.DefaultAuthenticationServiceFactory' />"+
               " </jbpm-context>" +
               " <string name='resource.hibernate.cfg.xml' " +
               " value='"+hibernateName+"' />" +
               " <string name='resource.business.calendar' " +
               " value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
               " <string name='resource.default.modules' " +
               " value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
               " <string name='resource.converter' " +
               " value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
               " <string name='resource.action.types' " +
               " value='org/jbpm/graph/action/action.types.xml' />" +
               " <string name='resource.node.types' " +
               " value='org/jbpm/graph/node/node.types.xml' />" +
               " <string name='resource.varmapping' " +
               " value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
               " <string name='resource.mail.templates' value='jbpm.mail.templates.xml' />"+
               //"<int name='jbpm.byte.block.size' value='1024' singleton='true' />"+
               //"<string name='jbpm.mail.smtp.host' value='localhost' />"+
               //"<bean name='jbpm.task.instance.factory' class='org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl' singleton='true' />"+
               //"<bean name='jbpm.variable.resolver' class='org.jbpm.jpdl.el.impl.JbpmVariableResolver' singleton='true' />"+
               //"<bean name='jbpm.mail.address.resolver' class='org.jbpm.identity.mail.IdentityAddressResolver' singleton='true' />"+
               //"<null name='jbpm.job.executor' />"+
               "</jbpm-configuration>"
              
              

              hibernate.cfg.xml
              <?xml version='1.0' encoding='utf-8'?>
              
              <!DOCTYPE hibernate-configuration PUBLIC
               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
               "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
              
              <hibernate-configuration>
               <session-factory>
              
               <!-- hibernate dialect -->
               <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
              
               <!-- JDBC connection properties (begin) ===
               <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
               <property name="hibernate.connection.url">jdbc:postgresql://10.0.0.50:5432/jboss4.0.5</property>
               <property name="hibernate.connection.username">postgres</property>
               <property name="hibernate.connection.password">postgres</property>
               ==== JDBC connection properties (end) -->
              
               <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
              
               <!-- JBoss transaction manager lookup (begin) -->
               <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
               <!-- JBoss transaction manager lookup (end) -->
              
               <!-- DataSource properties (begin) -->
               <property name="hibernate.connection.datasource">java:/PostgresDS</property>
               <!-- DataSource properties (end) -->
              
               <!-- JTA transaction properties (begin) -->
               <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
              
               <!-- DONT FORGET TO COMMENT THIS OUT IF USING CONTAINER -->
               <!-- <property name="jta.UserTransaction">java:comp/UserTransaction</property> -->
               <!-- JTA transaction properties (end) -->
              
               <!-- CMT transaction properties (begin) -->
               <!--<property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
               <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>-->
               <!-- CMT transaction properties (end) -->
              
               <!-- logging properties (begin) ===
               <property name="hibernate.show_sql">true</property>
               <property name="hibernate.format_sql">true</property>
               <property name="hibernate.use_sql_comments">true</property>
               ==== logging properties (end) -->
              
              
               <!-- ############################################ -->
               <!-- # mapping files with external dependencies # -->
               <!-- ############################################ -->
              
               <!-- following mapping file has a dependendy on -->
               <!-- 'bsh-{version}.jar'. -->
               <!-- uncomment this if you don't have bsh on your -->
               <!-- classpath. you won't be able to use the -->
               <!-- script element in process definition files -->
               <mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
              
               <!-- following mapping files have a dependendy on -->
               <!-- 'jbpm-identity.jar', mapping files -->
               <!-- of the pluggable jbpm identity component. -->
               <!-- Uncomment the following 3 lines if you -->
               <!-- want to use the jBPM identity mgmgt -->
               <!-- component. -->
               <mapping resource="org/jbpm/identity/User.hbm.xml"/>
               <mapping resource="org/jbpm/identity/Group.hbm.xml"/>
               <mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
              
               <!-- following mapping files have a dependendy on -->
               <!-- the JCR API -->
               <!-- jcr mappings (begin) ===
               <mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
               ==== jcr mappings (end) -->
              
              
               <!-- ###################### -->
               <!-- # jbpm mapping files # -->
               <!-- ###################### -->
              
               <!-- hql queries and type defs -->
               <mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
              
               <!-- graph.def mapping files -->
               <mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
               <mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
               <mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>
              
               <!-- graph.node mapping files -->
               <mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
               <mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>
              
               <!-- context.def mapping files -->
               <mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
               <mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>
              
               <!-- taskmgmt.def mapping files -->
               <mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>
              
               <!-- module.def mapping files -->
               <mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>
              
               <!-- bytes mapping files -->
               <mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>
              
               <!-- file.def mapping files -->
               <mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>
              
               <!-- scheduler.def mapping files -->
               <mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
               <mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>
              
               <!-- graph.exe mapping files -->
               <mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
               <mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
               <mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
               <mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>
              
               <!-- module.exe mapping files -->
               <mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>
              
               <!-- context.exe mapping files -->
               <mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
               <mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
              
               <!-- job mapping files -->
               <mapping resource="org/jbpm/job/Job.hbm.xml"/>
               <mapping resource="org/jbpm/job/Timer.hbm.xml"/>
               <mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
               <mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
              
               <!-- taskmgmt.exe mapping files -->
               <mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
              
               <!-- logging mapping files -->
               <mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
               <mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
               <mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
               <mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
               <mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>
              
               </session-factory>
              </hibernate-configuration>
              



              • 4. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
                Ronald van Kuijk Master

                I was just hoping someone would make a wiki page out of this.... sorry for not being clear, to busy with other things (real work) :-)

                • 5. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
                  Martin Weiler Apprentice

                  I thought of making a wiki page, but on the other hand it is in the docu as well. The only problem right now that I see with the docu is that it's a mix of 3.1 and 3.2 - which led to the confusion with the jta.UserTransaction property in this case. But Koen is working on getting separate docus for 3.1 and 3.2 up, and Tom will add some more info about this property in the docu as well.

                  I guess that should do - if not it's still not a big deal making a wiki out of it.

                  Martin

                  • 6. Re: EJB3 Stateless Session Bean and jbpm-enterprise.ear
                    Martin Weiler Apprentice

                    just FYI, there is finally a wiki about how to configure jBPM in an app server to enlist in CMT: http://wiki.jboss.org/wiki/Wiki.jsp?page=Jbpm32UsingCMT

                    Regards, Martin