[jboss-user] [jBPM] - jBpm 5.2 persistence problem - Oracle - Unknown entity: org.drools.persistence.info.SessionInfo

Samrat Roy do-not-reply at jboss.com
Sat Feb 18 10:18:22 EST 2012


Samrat Roy [https://community.jboss.org/people/whizkid.samrat] created the discussion

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

To view the discussion, visit: https://community.jboss.org/message/717687#717687

--------------------------------------------------------------
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  http://badr-elhouari.blogspot.in/2011/10/how-to-use-hibernate-3-as-jpa-provider.html 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
[https://community.jboss.org/message/717687#717687]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120218/134baca6/attachment-0001.html 


More information about the jboss-user mailing list