JBoss Community

jBpm 5.2 persistence problem - Oracle - Unknown entity: org.drools.persistence.info.SessionInfo

created by Samrat Roy in jBPM - View the full discussion

Hi , I am setting up jBpm 5.2 with persistence for the first time and facing a LoT of issues. I am using jpm 5.2 with Spring 3.0 and Hibernate 3.5.6 on jBoss AS 7 server.

 

We all know that jBoss AS 7 comes with Hibernate 4 as the default hibernate , but I need to use the Hibernate 3 in my project so I installed hibernate 3 as a module in as7 and that is working as expected . I excluded Hibernate 4 with jboss-deployment-structure.xml and added org.jboss.as.jpa.hibernate:3 as a dependency in manifest.mf [refer here how I added hibernate:3 as a module in AS7]

 

That said , I have configured the entire knowledge base and knowledge session in spring so that I dont have to write code for that - Taking tips from drools - integration module and by using drools-grid-impl jar and drools-spring jar.

 

Drools-grid jar contains a persistence.xml which used in memory DB [h2] so I modified the xml to use oracle and hibernate 3 instead.

 

Here is my application context:

 

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:dataSource-ref="datasource">

     <property name="jpaVendorAdapter">

         <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="${jpa.database}" p:showSql="${jpa.showSql}"/>

     </property>

     <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>

    </bean>

   <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

        <property name="entityManagerFactory" ref="entityManagerFactory" />

    </bean>

   

    <tx:annotation-driven transaction-manager="transactionManager"/>

   

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

    <!-- First: declare JBPM JPA Session with a process definition -->

  <jbpm:kbase id="kbase">

    <jbpm:resources>

       <jbpm:resource type="BPMN2" source="classpath:LeaveFlow.bpmn" />

    </jbpm:resources>

  </jbpm:kbase>

  <jbpm:ksession id="ksession" type="stateful" kbase="kbase">

    <jbpm:configuration>

      <jbpm:jpa-persistence>

        <jbpm:entity-manager-factory ref="entityManagerFactory"/>

        <jbpm:transaction-manager ref="transactionManager"/>

      </jbpm:jpa-persistence>

    </jbpm:configuration>

  </jbpm:ksession>

 

  <!-- Declare a TaskServer -->

  <bean class="org.jbpm.task.service.TaskService" id="taskService">

    <constructor-arg ref="entityManagerFactory"/>

    <constructor-arg>

      <bean class="org.drools.SystemEventListenerFactory" factory-method="getSystemEventListener"/>

    </constructor-arg>

  </bean>

  <bean class="org.jbpm.task.service.mina.MinaTaskServer" id="taskServer">

    <constructor-arg ref="taskService"/>

    <constructor-arg><value>${jbpm.task.server.port}</value></constructor-arg>

  </bean>

  <!-- And start TaskServer on the configured port -->

  <bean class="java.lang.Thread" id="taskServerThread" init-method="start">

    <constructor-arg ref="taskServer"/>

  </bean>

 

  <!-- Declare a TaskClient -->

  <bean class="org.jbpm.task.service.mina.MinaTaskClientConnector" id="taskClientConnector">

    <constructor-arg value="taskClient"/>

    <constructor-arg>

      <bean class="org.jbpm.task.service.mina.MinaTaskClientHandler">

        <constructor-arg>

          <bean class="org.drools.SystemEventListenerFactory" factory-method="getSystemEventListener"/>

        </constructor-arg>

      </bean>

    </constructor-arg>

  </bean>

  <bean class="org.jbpm.task.service.TaskClient" id="taskClient">

    <constructor-arg ref="taskClientConnector"/>

  </bean>

 

  <!-- Declare a HumanTaskHandler -->

  <bean class="org.jbpm.task.service.AsyncTaskServiceWrapper"

id="humanTaskClient">

    <constructor-arg ref="taskClient"/>

  </bean>

  <!-- It uses previously created TaskClient -->

  <bean class="org.jbpm.process.workitem.wsht.SyncWSHumanTaskHandler" id="humanTaskHandler">

    <constructor-arg ref="humanTaskClient"/>

    <constructor-arg ref="ksession"/>

  </bean>

  <!-- Configure its connection to the local server -->

  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="humanTaskHandler" id="setConnection">

    <property name="targetObject" ref="humanTaskHandler"/>

    <property name="targetMethod" value="setConnection"/>

    <property name="arguments">

      <list>

        <value>${jbpm.task.client.address}</value>

        <value>${jbpm.task.client.port}</value>

      </list>

    </property>

  </bean>

  <!-- And connect HumanTaskHandler (implicit TaskClient connection) -->

  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="setConnection">

    <property name="targetObject" ref="humanTaskHandler"/>

    <property name="targetMethod" value="connect"/>

  </bean>

 

  <!-- Finnaly, register HumanTaskHandler in the session -->

  <bean factory-bean="ksession" factory-method="getWorkItemManager" id="workItemManager"/>

  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">

    <property name="targetObject" ref="workItemManager"/>

    <property name="targetMethod" value="registerWorkItemHandler"/>

    <property name="arguments">

      <list>

        <value>Human Task</value>

        <ref bean="humanTaskHandler"/>

      </list>

    </property>

  </bean>

 

The Exception I am getting while server startup is :

 

20:07:26,443 ERROR [org.drools.persistence.SingleSessionCommandService] (MSC service thread 1-3) Could not commit session: java.lang.IllegalArgumentException: Unknown entity: org.drools.persistence.info.SessionInfo

    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:671) [hibernate-entitymanager-3.5.6-Final.jar:3.5.6-Final]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_23]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_23]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]

    at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]

    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) [org.springframework.orm-3.0.5.RELEASE.jar:]

    at $Proxy32.persist(Unknown Source)    at org.drools.persistence.jpa.JpaPersistenceContext.persist(JpaPersistenceContext.java:17) [drools-persistence-jpa-5.3.1.Final.jar:]

    at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:152) [drools-persistence-jpa-5.3.1.Final.jar:]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.6.0_23]

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [:1.6.0_23]

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [:1.6.0_23]

    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [:1.6.0_23]

    at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:129) [drools-persistence-jpa-5.3.1.Final.jar:]

    at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.newStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:67) [drools-persistence-jpa-5.3.1.Final.jar:]

    at org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:122) [knowledge-api-5.3.1.Final.jar:]

    at org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.internalAfterPropertiesSet(StatefulKnowledgeSessionBeanFactory.java:85) [drools-spring-5.3.0.Final.jar:]

    at org.drools.container.spring.beans.AbstractKnowledgeSessionBeanFactory.afterPropertiesSet(AbstractKnowledgeSessionBeanFactory.java:123) [drools-spring-5.3.0.Final.jar:]

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) [org.springframework.beans-3.0.5.RELEASE.jar:]

   .......

 

This is driving me nuts as I have all the required jars in my classPath. Please help !!!

 

I am attaching important config files :

Application Ctxt of my application , MANIFEST.MF of my application , persistence.xml from my application and the persistence.xml which I modified in drools-grid jar

Reply to this message by going to Community

Start a new discussion in jBPM at Community