[rules-users] Problem in getting session from JPAKnowledgeService.newStatefulKnowledgeSession();

tangrui.cn at gmail.com tangrui.cn at gmail.com
Thu Nov 25 08:18:23 EST 2010


If you use the JTA transaction manager, you should use Oracle's XA data
source rather than the thin client.

And Oracle needs specific permissions to run under JTA environment. Please
check this page.

http://docs.codehaus.org/display/BTM/FAQ#FAQ-WhyisOraclethrowingaXAExceptionduringinitializationofmydatasource%3F

2010/11/25 Bennet Joseph <josedrools at gmail.com>

> Hi All,
>
> follwoing is the code i used to get the session using
> JPAKnowledgeService.newStatefulKnowledgeSession.
>
> table for the mentioned classes are getting created, after that
> JPAKnowledgeService.newStatefulKnowledgeSession() method throws following
> exception....
>
>             EntityManagerFactory emf =
> Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
>
>             Environment env = KnowledgeBaseFactory.newEnvironment();
>
>             env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
>             env.set( EnvironmentName.TRANSACTION_MANAGER,
> TransactionManagerServices.getTransactionManager() );
>
>             StatefulKnowledgeSession ksession =
> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
>
> -------------------------
> persistence.xml
>
> i copied only persistent unit part...
>
>     <persistence-unit name="org.drools.persistence.jpa">
>
>     <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>
>
> <class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
>
> <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
>
>
>         <properties>
>             <property name="hibernate.dialect"
> value="org.hibernate.dialect.Oracle10gDialect" />
>             <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" />
>             <property name="hibernate.connection.url"
> value="jdbc:oracle:thin:@192.168.4.93:1521:POST" />
>             <property name="hibernate.connection.driver_class"
> value="oracle.jdbc.driver.OracleDriver" />
>             <property name="hibernate.connection.password"
> value="voms_test" />
>             <property name="hibernate.connection.username"
> value="voms_test" />
>             <property name="java.naming.factory.initial"
> value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
>             <!--
>                 <property name="hibernate.format_sql" value="true"/>
>             -->
>         </properties>
>
>     </persistence-unit>
>
> but it throws exception
>
> java.lang.IllegalStateException:
> java.lang.reflect.InvocationTargetException
>     at
> org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.buildCommanService(KnowledgeStoreServiceImpl.java:137)
>     at
> org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.newStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:61)
>  *   at
> org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:109)
>     at com.sample.FirstTest.main(FirstTest.java:87)*
> Caused by: java.lang.reflect.InvocationTargetException
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at
> org.drools.persistence.jpa.impl.KnowledgeStoreServiceImpl.buildCommanService(KnowledgeStoreServiceImpl.java:123)
>     ... 3 more
> Caused by: java.lang.RuntimeException: Could not commit session or rollback
>     at
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:132)
>     ... 8 more
> Caused by: java.lang.RuntimeException: Unable to rollback transaction
>     at
> org.drools.persistence.session.JtaTransactionManager.rollback(JtaTransactionManager.java:181)
>     at
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:130)
>     ... 8 more
> Caused by: java.lang.NullPointerException
>     at
> org.drools.persistence.session.JtaTransactionManager.rollback(JtaTransactionManager.java:178)
>     ... 9 more
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
唐睿
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20101125/cfd7695b/attachment.html 


More information about the rules-users mailing list