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-pr... 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&...]