Thanks Maurico on your response. yes i am using bitronics .
I have identified why this error happens when i have insert ProcessInstance
obect to session as a fact to made available them in drools rule file
conditions both LHS and RHS. Since the process instance is not implements
Serializable.
Let me give details about me project tt is spring based web project with
hibernate .
If you have any inputs how can i pass ProcessInstance object to Rules when
am using JPAKnowledgeService.
Find the Persistence.xml below
<persistence-unit name="org.drools.persistence.jpa"
transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>processInstanceDS</jta-data-source>
<class>org.drools.persistence.session.SessionInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class>
<class>org.drools.persistence.processinstance.WorkItemInfo</class>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.BTMTransactionManagerLookup"/>
</properties>
</persistence-unit>
</persistence>
Datasource intialization code
PoolingDataSource ds = new PoolingDataSource();
ds.setUniqueName("processInstanceDS");
ds.setClassName("org.h2.jdbcx.JdbcDataSource");
ds.setMaxPoolSize(3);
ds.setAllowLocalTransactions(true);
ds.getDriverProperties().put("user", "sa");
ds.getDriverProperties().put("password", "sasa");
ds.getDriverProperties().put("URL",
"jdbc:h2:file:/NotBackedUp/data/process-instance-db");
ds.init()
Thanks
Prem
Mauricio Salatino wrote:
are you using bitronix and an EJB3 container?
can you explain us your infrastructure? what kind of projects do you have,
etc.
Thanks!
On Tue, Oct 6, 2009 at 2:18 AM, premkumar
<premkumar.sivanandan(a)gmail.com>wrote:
>
> Hi
>
> I am new to drools flow and trying to use the persistence using
> JPAKnowledgeService. When i tried that got the stack overflow error in H2
> db.
>
> Can any one provide the guidance how to resolve this.
>
> The exception trace is below
>
> Hibernate: insert into SessionInfo (id, dirty, lastModificationDate,
> rulesByteArray, startDate) values (null, ?, ?, ?, ?)
> After the persistence Session @@@@@@
> Oct 6, 2009 2:42:21 PM bitronix.tm.twopc.Preparer prepare
> WARNING: executing transaction with 0 enlisted resource
> Oct 6, 2009 2:42:21 PM bitronix.tm.twopc.Preparer prepare
> WARNING: executing transaction with 0 enlisted resource
> Oct 6, 2009 2:42:22 PM bitronix.tm.twopc.Preparer prepare
> WARNING: executing transaction with 0 enlisted resource
> Hibernate: insert into ProcessInstanceInfo (processInstanceId,
> externalVariables, lastModificationDate, lastReadDate, processId,
> processInstanceByteArray, startDate, state, OPTLOCK) values (null, ?, ?,
> ?,
> ?, ?, ?, ?, ?)
> Hibernate: insert into WorkItemInfo (workItemId, creationDate, name,
> processInstanceId, state, OPTLOCK, workItemByteArray) values (null, ?, ?,
> ?,
> ?, ?, ?)
> Executing work item WorkItem 22 [name=Human Task, state=0,
> processInstanceId=21, parameters{ActorId=Admin, Comment=Raise Tk Request,
> Skippable=false, TaskName=Raise Tk Request}]
> Hibernate: update ProcessInstanceInfo set externalVariables=?,
> lastModificationDate=?, lastReadDate=?, processId=?,
> processInstanceByteArray=?, startDate=?, state=?, OPTLOCK=? where
> processInstanceId=? and OPTLOCK=?
> Hibernate: insert into ProcessInstanceInfo_eventTypes
> (ProcessInstanceInfo_processInstanceId, element) values (?, ?)
> Hibernate: delete from WorkItemInfo where workItemId=? and OPTLOCK=?
> Hibernate: update SessionInfo set dirty=?, lastModificationDate=?,
> rulesByteArray=?, startDate=? where id=?
> ****** ut ******* a BitronixTransactionManager with 0 in-flight
> transaction(s)
> Oct 6, 2009 2:42:22 PM bitronix.tm.BitronixTransaction
> fireBeforeCompletionEvent
> WARNING: Synchronization.beforeCompletion() call failed for
> org.hibernate.ejb.AbstractEntityManagerImpl$1@1824d2c, marking
> transaction
> as rollback only
> javax.persistence.PersistenceException: java.lang.RuntimeException:
> java.lang.StackOverflowError
> at
>
>
org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:516)
> at
>
>
bitronix.tm.BitronixTransaction.fireBeforeCompletionEvent(BitronixTransaction.java:366)
> at
> bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:142)
> at
>
> bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:96)
> at
>
>
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
> at
>
>
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.insert(CommandBasedStatefulKnowledgeSession.java:305)
> at com.sample.POCTestClient.main(POCTestClient.java:57)
> Caused by: java.lang.RuntimeException: java.lang.StackOverflowError
> at
> org.hibernate.ejb.event.BeanCallback.invoke(BeanCallback.java:31)
> at
>
>
org.hibernate.ejb.event.EntityCallbackHandler.callback(EntityCallbackHandler.java:80)
> at
>
>
org.hibernate.ejb.event.EntityCallbackHandler.preUpdate(EntityCallbackHandler.java:65)
> at
>
>
org.hibernate.ejb.event.EJB3FlushEntityEventListener.invokeInterceptor(EJB3FlushEntityEventListener.java:41)
> at
>
>
org.hibernate.event.def.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:330)
> at
>
>
org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:270)
> at
>
>
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:151)
> at
>
>
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
> at
>
>
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
> at
>
>
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
> at
> org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
> at
>
>
org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:504)
> ... 6 more
> Caused by: java.lang.StackOverflowError
>
> thanks
> Prem
> --
> View this message in context:
>
http://www.nabble.com/Drools-Flow-Persisternce-Stack-Overflow-Error-tp257...
> Sent from the drools - dev mailing list archive at
Nabble.com.
>
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-dev
>
--
-
http://salaboy.wordpress.com
-
http://www.jbug.com.ar
- Salatino "Salaboy" Mauricio -
_______________________________________________
rules-dev mailing list
rules-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev