[jboss-user] [jBPM Users] - JBPM4.1, JBoss 4.23 and Seam 2.2.0

jjp do-not-reply at jboss.com
Wed Sep 30 09:58:44 EDT 2009


=== Environment ==============================
- jBPM Version : 4.1
- Database : Oracle 10.2
- JDK : 1.6
- Container : JBoss 4.2.3
- Configuration : custom jbpm.cfg.xml only, see below
- Libraries : the exact versions of the libs from inside the jbpm
distribution 

=== Process ==================================
Just a Test Jpdl: Start -> Task -> End 

=== Stacktrace ==============================
No stack trace, only a warning:

15:32:14,624 WARN  [AbstractEntityManagerImpl] Cannot join transaction: do not override hibernate.transaction.factory_class

=== Problem description =========================
I try to integrate JBPM4.1 with my application based on Seam 2.2.0 and Richfaces 3.3.1.
We are using a persistence.xml instead of jbpm.hibernate.cfg.xml so I modified the persistence.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  | <!-- Persistence deployment descriptor for dev profile -->
  | <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  | 
  |   <persistence-unit name="pmscada">
  |     <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |     <jta-data-source>java:/pmscadaDatasource</jta-data-source>
  | 
  |     <!-- JBPM4 mappings -->
  |     <mapping-file>jbpm.repository.hbm.xml</mapping-file>
  |     <mapping-file>jbpm.execution.hbm.xml</mapping-file>
  |     <mapping-file>jbpm.history.hbm.xml</mapping-file>
  |     <mapping-file>jbpm.task.hbm.xml</mapping-file>
  |     <mapping-file>jbpm.identity.hbm.xml</mapping-file>
  | 
  |     <properties>
  |       <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
  |       <property name="hibernate.default_schema" value="schema"/>
  |       <property name="hibernate.hbm2ddl.auto" value="create"/>
  |       <property name="jboss.entity.manager.factory.jndi.name" value="java:/pmscadaEntityManagerFactory"/>
  |       <property name="hibernate.show_sql" value="false"/>
  | 
  |       <property name="hibernate.format_sql" value="true"/>
  |       <property name="use_sql_comments" value="true"/>
  | 
  |       <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
  |     <properties>
  |   </persistence-unit>
  | </persistence>
  | 

In the jbpm.cfg.xml I removed <!--hibernate-session-factory /--> and added <pilot-integration/>, the remain is like tho original jbpm.cfg.xml.

pilot-integration is declared in jbpm.user.wire.bindings.xml:


  | <wire-bindings>
  | 
  |   <binding class="...PilotBinding" />
  | 
  | </wire-bindings>
  | 

This class provides a PilotDescriptor


  | ...
  | public class PilotBinding extends WireDescriptorBinding
  | {
  |   public PilotBinding()
  |   {
  |     super( "pilot-integration" );
  |   }
  | 
  |    /** {@inheritDoc} */
  |   @Override
  |   public Object parse( Element element, Parse parse, Parser parser )
  |   {
  |     return new PilotDescriptor();
  |   }
  | 
  | }
  | 

And the PilotDescriptor returns the Hibernate SessionFactory:


  | ...
  | public class PilotDescriptor extends AbstractDescriptor
  | {
  |   private static final long serialVersionUID = 3380911977887594063L;
  | 
  |   /** The session factory. */
  |   private static SessionFactory sessionFactory;
  | 
  |   public static void setSessionFactory( SessionFactory sessionFactory )
  |   {
  |     PilotDescriptor.sessionFactory = sessionFactory;
  |   }
  | 
  |   /** {@inheritDoc} */
  |   @Override
  |   public Object construct( WireContext wireContext )
  |   {
  |     return sessionFactory;
  |   }
  | 
  |   /** {@inheritDoc} */
  |   @Override
  |   public Class<?> getType( WireDefinition wireDefinition )
  |   {
  |     return SessionFactory.class;
  |   }
  | }
  | 

The Session factory is set on startup using the static function.
This configuration is running fine, it is possible to put "our" Hibernate entities as varibles in ProcessInstances.

My first question is now:
Is this the right way to integrate JBPM in my application ?

The second:
What does the Warning Cannot join transaction: do not override hibernate.transaction.factory_class mean ? The application is running anyway.

Thanks,
Joerg


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

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



More information about the jboss-user mailing list