Hi,
I am trying to run the project given
at http://blog.athico.com/2009/09/drools-flow-variable-persistence.html.
I am successfully able to run the
same in default H2 database, but when I am trying to run the project, taking
Mysql database for persistence. I am not able to run the demo project as
i m getting this error.
ct 23, 2009 8:54:25 AM org.hibernate.impl.SessionFactoryObjectFactory
addInstance
INFO: Not binding factory to JNDI,
no JNDI name configured
Oct 23, 2009 8:54:25 AM org.hibernate.tool.hbm2ddl.SchemaExport
execute
INFO: Running hbm2ddl schema export
Oct 23, 2009 8:54:25 AM org.hibernate.tool.hbm2ddl.SchemaExport
execute
INFO: exporting generated schema to
database
Oct 23, 2009 8:54:26 AM org.hibernate.tool.hbm2ddl.SchemaExport
execute
INFO: schema export complete
Oct 23, 2009 8:54:26 AM bitronix.tm.BitronixTransactionManager
logVersion
INFO: Bitronix Transaction Manager
version 1.3.2
Oct 23, 2009 8:54:26 AM bitronix.tm.Configuration
buildServerIdArray
WARNING: cannot get this JVM unique
ID. Make sure it is configured and you only use ASCII characters. Will
use IP address instead (unsafe for production usage!).
Oct 23, 2009 8:54:26 AM bitronix.tm.Configuration
buildServerIdArray
INFO: JVM unique ID: <172.17.88.140>
Oct 23, 2009 8:54:27 AM bitronix.tm.journal.DiskJournal
open
WARNING: active log file is unclean,
previous server crash ?
Oct 23, 2009 8:54:27 AM bitronix.tm.recovery.Recoverer
run
INFO: recovery committed 0 dangling
transaction(s) and rolled back 0 aborted transaction(s) on 1 resource(s)
[jdbc/testDS1]
Fri Oct 23 08:54:27 IST 2009 DEBUG:
Executing XA statement: XA START 0x3137322e31372e38382e313430000001247f6c815f00000000,0x3137322e31372e38382e313430000001247f6c81ad00000002,0x42746e78
Fri Oct 23 08:54:27 IST 2009 DEBUG:
Executing XA statement: XA END 0x3137322e31372e38382e313430000001247f6c815f00000000,0x3137322e31372e38382e313430000001247f6c81ad00000002,0x42746e78
Fri Oct 23 08:54:27 IST 2009 DEBUG:
Executing XA statement: XA COMMIT 0x3137322e31372e38382e313430000001247f6c815f00000000,0x3137322e31372e38382e313430000001247f6c81ad00000002,0x42746e78
ONE PHASE
Kession id is1
Session object isorg.drools.process.command.impl.CommandBasedStatefulKnowledgeSession@152b6f5
### Starting process ###
Fri Oct 23 08:54:28 IST 2009 DEBUG:
Executing XA statement: XA START 0x3137322e31372e38382e313430000001247f6c81fb00000007,0x3137322e31372e38382e313430000001247f6c821b00000009,0x42746e78
x Ac = SomeString
y = VARIABLE: null - This is a test
Entity
z = Serializable Variable: This is
a test SerializableObject
Fri Oct 23 08:54:28 IST 2009 DEBUG:
Executing XA statement: XA END 0x3137322e31372e38382e313430000001247f6c81fb00000007,0x3137322e31372e38382e313430000001247f6c821b00000009,0x42746e78
Fri Oct 23 08:54:28 IST 2009 DEBUG:
Executing XA statement: XA COMMIT 0x3137322e31372e38382e313430000001247f6c81fb00000007,0x3137322e31372e38382e313430000001247f6c821b00000009,0x42746e78
ONE PHASE
### Retrieving process instance ###
Fri Oct 23 08:54:28 IST 2009 DEBUG:
Executing XA statement: XA START 0x3137322e31372e38382e313430000001247f6c82880000000e,0x3137322e31372e38382e313430000001247f6c828800000010,0x42746e78
AUTO
Oct 23, 2009 8:54:28 AM org.hibernate.util.JDBCExceptionReporter
logExceptions
WARNING: SQL Error: 0, SQLState: null
Oct 23, 2009 8:54:28 AM org.hibernate.util.JDBCExceptionReporter
logExceptions
SEVERE: error enlisting a JdbcConnectionHandle
of a JdbcPooledConnection from datasource jdbc/testDS1 in state ACCESSIBLE
wrapping com.mysql.jdbc.jdbc2.optional.MysqlXAConnection@126aaca on com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@1a1b2f
Oct 23, 2009 8:54:28 AM org.hibernate.event.def.DefaultLoadEventListener
onLoad
INFO: Error performing load command
org.hibernate.exception.GenericJDBCException:
could not load an entity: [org.drools.persistence.session.SessionInfo#1]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1895)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:842)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:835)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)
at org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:153)
at org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.loadStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:75)
at org.drools.persistence.jpa.JPAKnowledgeService.loadStatefulKnowledgeSession(JPAKnowledgeService.java:102)
at org.plugtree.labs.VariablePersistenceStrategiesTest.testApp(VariablePersistenceStrategiesTest.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException:
error enlisting a JdbcConnectionHandle of a JdbcPooledConnection from datasource
jdbc/testDS1 in state ACCESSIBLE wrapping com.mysql.jdbc.jdbc2.optional.MysqlXAConnection@126aaca
on com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@1a1b2f
at bitronix.tm.resource.jdbc.JdbcConnectionHandle.enlistResource(JdbcConnectionHandle.java:61)
at bitronix.tm.resource.jdbc.JdbcConnectionHandle.prepareStatement(JdbcConnectionHandle.java:200)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881)
... 34 more
Caused by: bitronix.tm.internal.BitronixSystemException:
cannot enlist an XAResourceHolderState with uniqueName=jdbc/testDS1 XAResource=com.mysql.jdbc.jdbc2.optional.MysqlXAConnection@126aaca
with XID a Bitronix XID [3137322E31372E38382E313430000001247F6C82880000000E
: 3137322E31372E38382E313430000001247F6C828800000010], error=XAER_OUTSIDE
at bitronix.tm.BitronixTransaction.enlistResource(BitronixTransaction.java:83)
at bitronix.tm.resource.common.TransactionContextHelper.enlist(TransactionContextHelper.java:267)
at bitronix.tm.resource.common.TransactionContextHelper.enlistInCurrentTransaction(TransactionContextHelper.java:49)
at bitronix.tm.resource.jdbc.JdbcConnectionHandle.enlistResource(JdbcConnectionHandle.java:59)
... 42 more
Caused by: com.mysql.jdbc.jdbc2.optional.MysqlXAException:
XAER_OUTSIDE: Some work is done outside global transaction
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java:562)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:545)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.start(MysqlXAConnection.java:485)
at bitronix.tm.internal.XAResourceHolderState.start(XAResourceHolderState.java:179)
at bitronix.tm.internal.XAResourceManager.enlist(XAResourceManager.java:89)
at bitronix.tm.BitronixTransaction.enlistResource(BitronixTransaction.java:76)
... 45 more
When I searched for this exception
I got to know that : In MySql for XA transactions For XA
START, the JOIN and RESUME
clauses are not supported.
for more details http://dev.mysql.com/doc/refman/5.0/en/xa-restrictions.html.
But in the class org.drools.persistence.session.SingleSessionCommandService.java
we are using code for join transaction
this.em.joinTransaction();
sessionInfo
= this.em.find(
SessionInfo.class,
sessionId );
So please tell me how to get rid of
this exception. Also is there something which I have missed for configuation
with Mysql database.
Please help me to get resovle this
problem.
Thanks & Regards
Pardeep Ruhil
______________________________________________________________________