[rules-users] Exception using persistence

Robert robert.weissmann at web.de
Tue Jun 8 09:58:55 EDT 2010


I had this in before, I put now Manuels and your last advice back in, now  
the code looks like (I put it to Java - you never know):


     public static void main(String[] args) throws SystemException,  
NotSupportedException, NamingException
     {
         BitronixTransactionManager tm =  
TransactionManagerServices.getTransactionManager();
         tm.begin();

         KnowledgeBuilder kbuilder =  
KnowledgeBuilderFactory.newKnowledgeBuilder();
         kbuilder.add(ResourceFactory.newClassPathResource("processes/process4.rf"),  
ResourceType.DRF);

         KnowledgeBase kbase  = kbuilder.newKnowledgeBase();

         PoolingDataSource ds  = new PoolingDataSource();
         ds.setUniqueName("jdbc/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();

         UserTransaction ut = (UserTransaction)(new  
InitialContext()).lookup( "java:comp/UserTransaction" );
         ut.begin();

// create the entity manager factory and register it in the environment
         EntityManagerFactory emf  =  
Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
         Environment env = KnowledgeBaseFactory.newEnvironment();
         env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );

// create a new knowledge session that uses JPA to store the runtime state
         StatefulKnowledgeSession ksession =  
JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
         int sessionId = ksession.getId();

// invoke methods on your method here
         ksession.startProcess( "Process4" );
         ksession.dispose();

     }


I extended BitronixInitialContextFactory to


public class ExtendedBitronixInitialContextFactory extends  
BitronixInitialContextFactory
{
     public ExtendedBitronixInitialContextFactory()
     {
         super();
     }
}

so I can set easily a breakpoint in the constructor to make sure this will  
be called and

put that into the jndi.properties  
(java.naming.factory.initial=com.rob.tests.ExtendedBitronixInitialContextFactory).

But I still get the same exception:


08.06.2010 15:35:19 bitronix.tm.BitronixTransactionManager logVersion
INFO: Bitronix Transaction Manager version 1.3.2
08.06.2010 15:35:20 bitronix.tm.Configuration buildServerIdArray
WARNUNG: 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!).
08.06.2010 15:35:20 bitronix.tm.Configuration buildServerIdArray
INFO: JVM unique ID: <192.168.254.2>
08.06.2010 15:35:20 bitronix.tm.journal.DiskJournal open
WARNUNG: active log file is unclean, previous server crash ?
08.06.2010 15:35:20 bitronix.tm.recovery.Recoverer run
INFO: recovery committed 0 dangling transaction(s) and rolled back 0  
aborted transaction(s) on 0 resource(s) []
08.06.2010 15:35:46 bitronix.tm.recovery.IncrementalRecoverer recover
INFO: incremental recovery committed 0 dangling transaction(s) and rolled  
back 0 aborted transaction(s) on resource [jdbc/processInstanceDS]
08.06.2010 15:35:52 org.eclipse.jetty.util.log.Slf4jLog info
INFO: Logging to  
org.slf4j.impl.JDK14LoggerAdapter(org.eclipse.jetty.util.log) via  
org.eclipse.jetty.util.log.Slf4jLog
Exception in thread "main" javax.naming.NameNotFoundException; remaining  
name 'UserTransaction'
	at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:576)
	at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:663)
	at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:678)
	at  
org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:110)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at com.rob.tests.AnyTest2.main(AnyTest2.java:50)


The ExtendedBitronixInitialContextFactory will be instantiated (at least  
the debugger stops at the super();) just when the line


         UserTransaction ut = (UserTransaction)(new  
InitialContext()).lookup( "java:comp/UserTransaction" );

is/was ? called (maybe somehow too late ?).


What am I doing wrong ?





Am 08.06.2010, 14:39 Uhr, schrieb <Alan.Gairey at tessella.com>:

> Robert,
>
> Try this:
>
> create a directory called META-INF in your classpath
> in that directory, add a file called jndi.properties
> in that file, add the line:
> java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
>
> Does that fix things?
>
> Alan
>
>
>
>
> Robert <robert.weissmann at web.de>
> Sent by: rules-users-bounces at lists.jboss.org
> 08/06/2010 13:22
> Please respond to
> Rules Users List <rules-users at lists.jboss.org>
>
>
> To
> "Rules Users List" <rules-users at lists.jboss.org>, "Mark Proctor"
> <mproctor at codehaus.org>, "PAYET, Manuel" <manuel.payet at capgemini.com>
> cc
>
> Subject
> Re: [rules-users] Exception using persistence
>
>
>
>
>
>
> I did, but I get the same Exception as before, but on this new line
>
>
> UserTransaction ut = (UserTransaction) new
> InitialContext().lookup("java:comp/UserTransaction" );
>
>
> 08.06.2010 14:10:58 org.eclipse.jetty.util.log.Slf4jLog info
> INFO: Logging to
> org.slf4j.impl.JDK14LoggerAdapter(org.eclipse.jetty.util.log) via
> org.eclipse.jetty.util.log.Slf4jLog
> Exception in thread "main" javax.naming.NameNotFoundException; remaining
> name 'UserTransaction'
>                  at
> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:576)
>                  at
> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:663)
>                  at
> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:678)
>                  at
> org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:110)
>                  at
> javax.naming.InitialContext.lookup(InitialContext.java:392)
>                  at com.rob.tests.AnyTest$.test2(AnyTest.scala:38)
>                  at com.rob.tests.AnyTest$.main(AnyTest.scala:18)
>                  at com.rob.tests.AnyTest.main(AnyTest.scala)
>
>
> I still don't understand where the "java:comp/UserTransaction" will be
> accessible/come-from/being-created ... ?
>
>
> Am 08.06.2010, 13:42 Uhr, schrieb PAYET, Manuel
> <manuel.payet at capgemini.com>:
>
>> I've made the same mistake at the beginning:
>>
>>
>> You'd probably want to replace:
>>
>>
>>  val emf : EntityManagerFactory =
>> Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" )
>>      val env : Environment = KnowledgeBaseFactory.newEnvironment()
>>      env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf )
>>
>>      val ksession : StatefulKnowledgeSession =
>> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env )
>>      val sessionId = ksession.getId
>>
>>      ksession.startProcess( "Process4" )
>>      ksession.dispose();
>>
>> By:
>>
>> UserTransaction ut =
>>   (UserTransaction) new InitialContext().lookup(
>> "java:comp/UserTransaction" );
>> ut.begin();
>>
>>
>> val emf : EntityManagerFactory =
>> Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" )
>>      val env : Environment = KnowledgeBaseFactory.newEnvironment()
>>      env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf )
>>
>>      val ksession : StatefulKnowledgeSession =
>> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env )
>>      val sessionId = ksession.getId
>>
>>      ksession.startProcess( "Process4" )
>>      ksession.dispose();
>>
>> Ut.commit();
>>
>>
>> (you didn't open a transaction before ;))
>>
>>
>> -----Message d'origine-----
>> De : robert.weissmann at web.de [mailto:robert.weissmann at web.de]
>> Envoyé : mardi 8 juin 2010 13:42
>> À : Rules Users List; Mark Proctor; PAYET, Manuel
>> Objet : Re: [rules-users] Exception using persistence
>>
>> Ok, let me start from what the drools doc descripes at
>>
>>
> http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-flow/html_single/index.html#d0e1458
>
>>
>> Here is my code
>>
>>
>>      val kbuilder: KnowledgeBuilder =
>> KnowledgeBuilderFactory.newKnowledgeBuilder
>>
> kbuilder.add(ResourceFactory.newClassPathResource("processes/process4.rf"),
>> ResourceType.DRF);
>>
>>      val kbase: KnowledgeBase = kbuilder.newKnowledgeBase
>>
>>      val ds : PoolingDataSource = new PoolingDataSource()
>>      ds.setUniqueName("jdbc/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
>>
>>      val emf : EntityManagerFactory =
>> Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" )
>>      val env : Environment = KnowledgeBaseFactory.newEnvironment()
>>      env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf )
>>
>>      val ksession : StatefulKnowledgeSession =
>> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env )
>>      val sessionId = ksession.getId
>>
>>      ksession.startProcess( "Process4" )
>>      ksession.dispose();
>>
>>
>> and the persistence.xml:
>>
>>
>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence
>>    version="1.0"
>>    xsi:schemaLocation=
>>      "http://java.sun.com/xml/ns/persistence
>>       http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
>>       http://java.sun.com/xml/ns/persistence/orm
>>       http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
>>    xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>    xmlns="http://java.sun.com/xml/ns/persistence">
>>
>>    <persistence-unit name="org.drools.persistence.jpa">
>>      <provider>org.hibernate.ejb.HibernatePersistence</provider>
>>      <jta-data-source>jdbc/processInstanceDS</jta-data-source>
>>      <class>org.drools.persistence.session.SessionInfo</class>
>>
> <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
>>
> <class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</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>
>>
>>
>> Thats pretty much whats in the drools doc.
>>
>> But I get
>>
>>
>> 08.06.2010 13:31:52 org.hibernate.cfg.annotations.Version <clinit>
>> INFO: Hibernate Annotations 3.4.0.GA
>> 08.06.2010 13:31:52 org.hibernate.cfg.Environment <clinit>
>> INFO: Hibernate 3.3.0.SP1
>> 08.06.2010 13:31:52 org.hibernate.cfg.Environment <clinit>
>> INFO: hibernate.properties not found
>> 08.06.2010 13:31:52 org.hibernate.cfg.Environment buildBytecodeProvider
>> INFO: Bytecode provider name : javassist 08.06.2010 13:31:52
>> org.hibernate.cfg.Environment <clinit>
>> INFO: using JDK 1.4 java.sql.Timestamp handling 08.06.2010 13:31:52
>> org.hibernate.annotations.common.Version <clinit>
>> INFO: Hibernate Commons Annotations 3.1.0.GA 08.06.2010 13:31:52
>> org.hibernate.ejb.Version <clinit>
>> INFO: Hibernate EntityManager 3.4.0.GA
>> 08.06.2010 13:31:53 org.hibernate.cfg.AnnotationBinder bindClass
>> INFO: Binding entity from annotated class:
>> org.drools.persistence.session.SessionInfo
>> 08.06.2010 13:31:53 org.hibernate.cfg.annotations.EntityBinder bindTable
>> INFO: Bind entity org.drools.persistence.session.SessionInfo on table
>> SessionInfo 08.06.2010 13:31:53 org.hibernate.cfg.AnnotationBinder
>> bindClass
>> INFO: Binding entity from annotated class:
>> org.drools.persistence.processinstance.ProcessInstanceInfo
>> 08.06.2010 13:31:53 org.hibernate.cfg.annotations.EntityBinder bindTable
>> INFO: Bind entity
>> org.drools.persistence.processinstance.ProcessInstanceInfo on table
>> ProcessInstanceInfo 08.06.2010 13:31:53
>> org.hibernate.cfg.AnnotationBinder bindClass
>> INFO: Binding entity from annotated class:
>>
> org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo
>> 08.06.2010 13:31:53 org.hibernate.cfg.annotations.EntityBinder bindTable
>> INFO: Bind entity
>>
> org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo
>> on table VariableInstanceInfo
>> 08.06.2010 13:31:53 org.hibernate.cfg.AnnotationBinder bindClass
>> INFO: Binding entity from annotated class:
>> org.drools.persistence.processinstance.WorkItemInfo
>> 08.06.2010 13:31:53 org.hibernate.cfg.annotations.EntityBinder bindTable
>> INFO: Bind entity org.drools.persistence.processinstance.WorkItemInfo on
>
>> table WorkItemInfo 08.06.2010 13:31:54
>> org.hibernate.cfg.annotations.CollectionBinder
>> bindOneToManySecondPass
>> INFO: Mapping collection:
>> org.drools.persistence.processinstance.ProcessInstanceInfo.variables ->
>> VariableInstanceInfo 08.06.2010 13:31:54
>> org.hibernate.cfg.AnnotationConfiguration
>> secondPassCompile
>> INFO: Hibernate Validator not found: ignoring 08.06.2010 13:31:54
>> org.hibernate.cfg.search.HibernateSearchEventListenerRegister
>> enableHibernateSearch
>> INFO: Unable to find
>> org.hibernate.search.event.FullTextIndexEventListener
>> on the classpath. Hibernate Search is not enabled.
>> 08.06.2010 13:31:54 org.hibernate.util.NamingHelper getInitialContext
>> INFO: JNDI InitialContext properties:{}
>> 08.06.2010 13:31:54
> org.hibernate.connection.DatasourceConnectionProvider
>> configure
>> INFO: Using datasource: jdbc/processInstanceDS 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: RDBMS: H2, version: 1.0.77 (2008-08-16) 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: JDBC driver: H2 JDBC Driver, version: 1.0.77 (2008-08-16)
>> 08.06.2010 13:31:56 org.hibernate.dialect.Dialect <init>
>> INFO: Using dialect: org.hibernate.dialect.H2Dialect 08.06.2010 13:31:56
>
>> org.hibernate.transaction.TransactionFactoryFactory
>> buildTransactionFactory
>> INFO: Transaction strategy:
>> org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
>> 08.06.2010 13:31:56
>> org.hibernate.transaction.TransactionManagerLookupFactory
>> getTransactionManagerLookup
>> INFO: instantiating TransactionManagerLookup:
>> org.hibernate.transaction.BTMTransactionManagerLookup
>> 08.06.2010 13:31:56
>> org.hibernate.transaction.TransactionManagerLookupFactory
>> getTransactionManagerLookup
>> INFO: instantiated TransactionManagerLookup 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Automatic flush during beforeCompletion(): disabled 08.06.2010
>> 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Automatic session close at end of transaction: disabled 08.06.2010
>
>> 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: JDBC batch size: 15
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: JDBC batch updates for versioned data: disabled 08.06.2010
>> 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Scrollable result sets: enabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: JDBC3 getGeneratedKeys(): enabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Connection release mode: auto
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Maximum outer join fetch depth: 3
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Default batch fetch size: 1
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Generate SQL with comments: disabled 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Order SQL updates by primary key: disabled 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Order SQL inserts for batching: disabled 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
>> INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
>> 08.06.2010 13:31:56 org.hibernate.hql.ast.ASTQueryTranslatorFactory
>> <init>
>> INFO: Using ASTQueryTranslatorFactory
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Query language substitutions: {}
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: JPA-QL strict compliance: enabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Second-level cache: enabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Query cache: disabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory
> createRegionFactory
>> INFO: Cache region factory :
>> org.hibernate.cache.impl.NoCachingRegionFactory
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Optimize cache for minimal puts: disabled 08.06.2010 13:31:56
>> org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Structured second-level cache entries: disabled 08.06.2010
>> 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Echoing all SQL to stdout
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Statistics: disabled
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Deleted entity synthetic identifier rollback: disabled 08.06.2010
>> 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Default entity-mode: pojo
>> 08.06.2010 13:31:56 org.hibernate.cfg.SettingsFactory buildSettings
>> INFO: Named query checking : enabled
>> 08.06.2010 13:31:56 org.hibernate.impl.SessionFactoryImpl <init>
>> INFO: building session factory
>> 08.06.2010 13:31:57 org.hibernate.impl.SessionFactoryObjectFactory
>> addInstance
>> INFO: Not binding factory to JNDI, no JNDI name configured 08.06.2010
>> 13:31:57 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
>> INFO: Running hbm2ddl schema update
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
>> INFO: fetching database metadata
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
>> INFO: updating schema
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: table found: PROCESS-INSTANCE-DB.PUBLIC.PROCESSINSTANCEINFO
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: columns: [externalvariables, startdate, lastreaddate, state,
>> processinstancebytearray, optlock, processid, lastmodificationdate,
>> processinstanceid] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: foreign keys: []
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: indexes: [primary_key_4]
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: table found:
>> PROCESS-INSTANCE-DB.PUBLIC.PROCESSINSTANCEINFO_EVENTTYPES
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: columns: [element, processinstanceinfo_processinstanceid]
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: foreign keys: [fk2fd59d8cbee4613c] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: indexes: [fk2fd59d8cbee4613c_index_b] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: table found: PROCESS-INSTANCE-DB.PUBLIC.SESSIONINFO
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: columns: [rulesbytearray, id, startdate, dirty,
>> lastmodificationdate] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: foreign keys: []
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: indexes: [primary_key_7]
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: table found: PROCESS-INSTANCE-DB.PUBLIC.VARIABLEINSTANCEINFO
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: columns: [id, persister, name, type, processid] 08.06.2010
>> 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: foreign keys: [fk7be49b9f9123c534] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: indexes: [fk7be49b9f9123c534_index_2, primary_key_2] 08.06.2010
>> 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: table found: PROCESS-INSTANCE-DB.PUBLIC.WORKITEMINFO
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: columns: [workitembytearray, name, workitemid, state, optlock,
>> creationdate, processinstanceid] 08.06.2010 13:31:57
>> org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: foreign keys: []
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.TableMetadata <init>
>> INFO: indexes: [primary_key_b]
>> 08.06.2010 13:31:57 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
>> INFO: schema update complete
>> 08.06.2010 13:31:57 bitronix.tm.BitronixTransactionManager logVersion
>> INFO: Bitronix Transaction Manager version 1.3.2 08.06.2010 13:31:57
>> bitronix.tm.Configuration buildServerIdArray
>> WARNUNG: 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!).
>> 08.06.2010 13:31:58 bitronix.tm.Configuration buildServerIdArray
>> INFO: JVM unique ID: <192.168.254.2>
>> 08.06.2010 13:31:58 bitronix.tm.journal.DiskJournal open
>> WARNUNG: active log file is unclean, previous server crash ?
>> 08.06.2010 13:31:58 bitronix.tm.recovery.Recoverer run
>> INFO: recovery committed 0 dangling transaction(s) and rolled back 0
>> aborted transaction(s) on 1 resource(s) [jdbc/processInstanceDS]
>> 08.06.2010 13:31:58 org.eclipse.jetty.util.log.Slf4jLog info
>> INFO: Logging to
>> org.slf4j.impl.JDK14LoggerAdapter(org.eclipse.jetty.util.log) via
>> org.eclipse.jetty.util.log.Slf4jLog
>> Exception in thread "main" java.lang.RuntimeException: Could not commit
>> session
>>         at
>>
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:133)
>>         at
>>
> org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.newStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:44)
>>         at
>>
> org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:93)
>>         at com.rob.tests.AnyTest$.test2(AnyTest.scala:44)
>>         at com.rob.tests.AnyTest$.main(AnyTest.scala:18)
>>         at com.rob.tests.AnyTest.main(AnyTest.scala)
>> Caused by: javax.naming.NameNotFoundException; remaining name
>> 'UserTransaction'
>>         at
>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:576)
>>         at
>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:663)
>>         at
>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:678)
>>         at
>>
> org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:110)
>>         at javax.naming.InitialContext.lookup(InitialContext.java:392)
>>         at
>>
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:109)
>>         ... 5 more
>>
>> (This test is in a class file called "AnyTest.scala")
>>
>> Cheers, Rob
>>
>> P.S. Thanks for your patience and help.
>>
>>
>> Am 08.06.2010, 09:44 Uhr, schrieb PAYET, Manuel
>> <manuel.payet at capgemini.com>:
>>
>>> Robert, what's your application server, or your transaction manager?
>>> I successfully tested with bitronix in my J2SE application, and with
>>> the jboss application server transaction manager.
>>>
>>> I don't have any further idea for your problem, but, from my own point
>>> of view, it's not so dirty to bind it to java:comp/UserTransaction,
>>> and is probably your only way to do things without patching the code
>>> (as you seem to have seen in the source code
>>> "java:comp/UserTransaction" is not in a variable so...
>>>
>>> -----Message d'origine-----
>>> De : robert.weissmann at web.de [mailto:robert.weissmann at web.de] Envoyé :
>>> lundi 7 juin 2010 20:50 À : Rules Users List; Mark Proctor; PAYET,
>>> Manuel Objet : Re: [rules-users] Exception using persistence
>>>
>>> For additional information:
>>>
>>> JPAKnowledgeService.newStatefulKnowledgeSession uses
>>>
>>> org.drools.persistence.session.SingleSessionCommandService
>>>
>>> where "java:comp/UserTransaction" is used (I checked the drools source
>>> code). Looks like there is no way to change this.
>>>
>>> I just wonder that I am the only one having this problem.
>>>
>>> As I said "comp/UserTransaction" works, but "java:comp/UserTransaction"
>>> doesn't, but in the docs "java:comp/UserTransaction" is used !?!?!?
>>>
>>> Cheers, Rob.
>>>
>>> Am 07.06.2010, 16:22 Uhr, schrieb PAYET, Manuel
>>> <manuel.payet at capgemini.com>:
>>>
>>>> It's probably that your transaction manager, for an odd reason,
>>>> doesn't bind with the good name; You can do the following workaround:
>>>>
>>>> Final InitialContext initContext = new InitialContext();
>>>> initContext.bind("java:comp/UserTransaction",initContext.lookup("comp
>>>> /
>>>> UserTransaction"));
>>>>
>>>> And voila, those two jndi name should point to the same object.
>>>>
>>>> I stress the fact that what I've written hasn't been tested.
>>>>
>>>> -----Message d'origine-----
>>>> De : rules-users-bounces at lists.jboss.org
>>>> [mailto:rules-users-bounces at lists.jboss.org] De la part de Robert
>>>> Envoyé : lundi 7 juin 2010 16:16 À : rules-users at lists.jboss.org;
>>>> Mark Proctor Objet : Re: [rules-users] Exception using persistence
>>>>
>>>> Hi,
>>>>
>>>> still struggling with this one (see below),
>>>>
>>>> but I did a slide change in the test-code
>>>>
>>>>      try {
>>>>        val env = new java.util.Hashtable[String, String]
>>>>        env.put(Context.INITIAL_CONTEXT_FACTORY,
>>>> "bitronix.tm.jndi.BitronixInitialContextFactory")
>>>>        val ctx = new InitialContext(env)
>>>>        val ut1 : UserTransaction = (ctx.lookup(
>>>> "java:comp/UserTransaction")).asInstanceOf[UserTransaction]
>>>>      } catch {
>>>>        case ex: Exception => ex.printStackTrace()
>>>>      }
>>>>
>>>> (Sorry, code is in Scala, but should not be a problem to read it).
>>>>
>>>> Instead of "java:comp/UserTransaction" (as written in the docs) I
>>>> wrote "comp/UserTransaction" and it works.
>>>>
>>>> But since this is some test-code and I am able to do the look-up as I
>>>> want ("comp/UserTransaction"), as soon as I use
>>>>
>>>>
>>>> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env )
>>>>
>>>>
>>>> I have no influence anymore (its drools-code ;-) and it looks like
>>>> its using internally "java:comp/UserTransaction".
>>>>
>>>>
>>>> Is there any way to change this (setting it) ?
>>>>
>>>> Cheers, Rob
>>>>
>>>>
>>>>
>>>> Am 01.06.2010, 23:54 Uhr, schrieb Robert <robert.weissmann at web.de>:
>>>>
>>>>> Well, I tried this but it does not work.
>>>>>
>>>>> Checking additionally the BitronixInitialContextFactory API where it
>>>>> says:
>>>>>
>>>>> ---------------------------------------------
>>>>> "Implementation of InitialContextFactory that allows lookup of
>>>>> transaction manager and registered resources.
>>>>>
>>>>> The easiest way to use this provider is to create a jndi.properties
>>>>> file in your classpath with this content:
>>>>> java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextF
>>>>> a c tory Alternatively, you can create a InitialContext object with
>>>>> an environment pointing to this class:
>>>>>   Hashtable env = new Hashtable();
>>>>>   env.put(Context.INITIAL_CONTEXT_FACTORY,
>>>>> "bitronix.tm.jndi.BitronixInitialContextFactory");
>>>>>   Context ctx = new InitialContext(env);
>>>>>
>>>>> The transaction manager can be looked up at the standard URL
>>>>> java:comp/UserTransaction while resources can be looked up using
>>>>> their unique name as set in ResourceBean.getUniqueName(). "
>>>>> ---------------------------------------------
>>>>>
>>>>>
>>>>> So, I tried the following ( Its in Scala, but shouldn't be a problem
>>>>> to
>>>>> read):
>>>>>
>>>>>    try {
>>>>>      val env = new java.util.Hashtable[String, String]
>>>>>      env.put(Context.INITIAL_CONTEXT_FACTORY,
>>>>> "bitronix.tm.jndi.BitronixInitialContextFactory");
>>>>>      val ctx = new InitialContext(env);
>>>>>      val ut1 : UserTransaction = (ctx.lookup(
>>>>> "java:comp/UserTransaction"
>>>>> )).asInstanceOf[UserTransaction]
>>>>>    } catch {
>>>>>      case ex: Exception => ex.printStackTrace()
>>>>>    }
>>>>>
>>>>>
>>>>> But still getting the same problem as before at line   "val ut1 :
>>>>> ...".
>>>>>
>>>>> What I do not get is that the Bitronix API says that the standard
>>>>> URL is "java:comp/UserTransaction", but its somehow not found !?!?!?
>>>>>
>>>>> Any ideas ?
>>>>>
>>>>> Cheers, Rob.
>>>>>
>>>>>
>>>>>
>>>>> Am 31.05.2010, 02:54 Uhr, schrieb Mark Proctor
>>>>> <mproctor at codehaus.org>:
>>>>>
>>>>>> On 30/05/2010 20:28, Robert wrote:
>>>>>>> Hi, I followed the instructions on setting up the persistence in
>>>>>>> the drools flow doc, but I get the following exception:
>>>>>>>
>>>>>>>
>>>>>>> Exception in thread "main" java.lang.RuntimeException: Could not
>>>>>>> commit session
>>>>>>>   at
>>>>>>>
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:133)
>>>>>>>   at
>>>>>>>
> org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.newStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:44)
>>>>>>>   at
>>>>>>>
> org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:93)
>>>>>>>   at
>>>>>>>
> com.rob.server.core.process.drools.tasks.DroolsProcessHandler.<init>(DroolsProcessHandler.scala:130)
>>>>>>>   at
>>>>>>>
> com.rob.server.core.process.drools.tasks.StartDroolsProcessHandler$.main(DroolsProcessHandler.scala:33)
>>>>>>>   at
>>>>>>> com.rob.server.core.process.drools.tasks.StartDroolsProcessHandler.
>>>>>>> m
>>>>>>> ain(DroolsProcessHandler.scala) Caused by:
>>>>>>> javax.naming.NameNotFoundException; remaining name
> 'UserTransaction'
>>>>>>>   at
>>>>>>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:576)
>>>>>>>   at
>>>>>>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:663)
>>>>>>>   at
>>>>>>> org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:678)
>>>>>>>   at
>>>>>>>
> org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:110)
>>>>>>>   at javax.naming.InitialContext.lookup(InitialContext.java:392)
>>>>>>>   at
>>>>>>>
> org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:109)
>>>>>>>   ... 5 more
>>>>>>>
>>>>>>>
>>>>>>> I have no idea what this means. I guess
>>>>>>> SingleSessionCommandService is looking up for "UserTransaction",
>>>>>>> but whats the "UserTransaction"
>>>>>>> ?
>>>>>>>
>>>>>> You need to configure JTA and JNDI, it uses the standard JNDI
>>>>>> lookup mechanism to find the UserTransaction it's to be associated
>>>>>> with.
>>>>>> See javadocs example here:
>>>>>> http://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artif
>>>>>> a
>>>>>> c
>>>>>> t/trunk/target/javadocs/stable/drools-api/org/drools/persistence/jp
>>>>>> a
>>>>>> /
>>>>>> JPAKnowledgeService.html
>>>>>>
>>>>>> Each transaction framework has a different way to be configured,
>>>>>> some are simpler than others.
>>>>>>
>>>>>> Mark
>>>>>>> Cheers, Rob.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> rules-users mailing list
>>>>>> rules-users at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Erstellt mit Operas revolutionärem E-Mail-Modul:
>>>> http://www.opera.com/mail/
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> This message contains information that may be privileged or
>>>> confidential and is the property of the Capgemini Group. It is
>>>> intended only for the person to whom it is addressed. If you are not
>>>> the intended recipient, you are not authorized to read, print,
>>>> retain, copy, disseminate, distribute, or use this message or any
>>>> part thereof. If you receive this message in error, please notify the
>>>> sender immediately and delete all copies of this message.
>>>>
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>>
>> --
>> Erstellt mit Operas revolutionärem E-Mail-Modul:
>> http://www.opera.com/mail/
>>
>>
>>
>>
>>
>>
>> This message contains information that may be privileged or confidential
>
>> and is the property of the Capgemini Group. It is
>> intended only for the person to whom it is addressed. If you are not the
>
>> intended recipient, you are not authorized to
>> read, print, retain, copy, disseminate, distribute, or use this message
>> or any part thereof. If you receive this message
>> in error, please notify the sender immediately and delete all copies of
>> this message.
>>
>
>


-- 
Erstellt mit Operas revolutionärem E-Mail-Modul: http://www.opera.com/mail/



More information about the rules-users mailing list