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.weissm...@web.de [mailto:robert.weissm...@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.pa...@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-boun...@lists.jboss.org > [mailto:rules-users-boun...@lists.jboss.org] De la part de Robert > Envoyé : lundi 7 juin 2010 16:16 À : rules-users@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.weissm...@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.BitronixInitialContextFa >> 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 <mproc...@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/artifa >>> c >>> t/trunk/target/javadocs/stable/drools-api/org/drools/persistence/jpa >>> / >>> 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@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@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@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. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users