[rules-users] Exception using persistence
Robert
robert.weissmann at web.de
Mon Jun 7 14:41:23 EDT 2010
Thanks Manuel,
but the problem is that I do not have any influence on
JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env )
where the problem occurs. Looks like Drools is using
"java:comp/UserTransaction" internally (within
JPAKnowledgeService.newStatefulKnowledgeSession), not me.
Any further ideas ? Where I could tell
JPAKnowledgeService.newStatefulKnowledgeSession to use
"comp/UserTransaction" instead ?
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.BitronixInitialContextFac
>> 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/artifac
>>> 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 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/
More information about the rules-users
mailing list