<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">We are using Drools persistence with a StatefulKnowledgeSession. The persistence itself works fine, but I am encountering an IllegalStateException when disposing of the StatefulKnowledgeSession. This happens with either a brand new session
with no facts or one that has had facts added to it. It also happens with sessions that have been restored from the persistent store. The code does no explicit transaction management and relies on Drools to do this under the covers. We are using Drools
5.5.0 Final. How do I dispose of a session correctly?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The <a href="http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html/ch03.html#d0e3961">
documentation</a> includes Example 3.66, “Configuring JTA DataSource.” My code does not include code like this anywhere. Do I need it? It’s not clear from the example where the PoolingDataSource instance would be used or when this code should be called.
If this configuration is required, can it be done via Spring instead of programmatically?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ll provide some supporting information below. I’ve edited these excerpts to redact some private details and eliminate distracting code, but the substance is intact.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the stack trace created by invoking the “dispose” method from a shutdown hook:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">java.lang.IllegalStateException: No value for key [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@732e3e73] bound to thread [Thread-3]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource(TransactionSynchronizationManager.java:209)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.container.spring.beans.persistence.DroolsSpringJpaManager.dispose(DroolsSpringJpaManager.java:135)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:345)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.dispose(CommandBasedStatefulKnowledgeSession.java:241)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at MyClass1.stop<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at MyClass2$1.run<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at java.lang.Thread.run(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The code uses Drools-Spring to configure the knowledge base and Java code to initialize the knowledge session. We’re using JPA, the Bitronix transaction manager, and the H2 database, basically as described in the
<a href="http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html/releaseNotes.html#d0e2827">
documentation</a>. Here is the code for creating the session:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> ApplicationContext context =
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">new</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black"> ClassPathXmlApplicationContext(</span><i><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">APPLICATION_CONTEXT_XML</span></i><span style="font-size:10.0pt;font-family:Consolas;color:black">);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> KnowledgeStoreService kstore = (KnowledgeStoreService) context.getBean(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"myAppKnowledgeStore"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">);<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> KnowledgeBase kbase = ...;
</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F">// initialized by Spring configuration</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> Environment env = KnowledgeBaseFactory.<i>newEnvironment</i>();</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> env.set(EnvironmentName.</span><i><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">ENTITY_MANAGER_FACTORY</span></i><span style="font-size:10.0pt;font-family:Consolas;color:black">,
context.getBean(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"entityManagerFactory"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">));</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> env.set(EnvironmentName.</span><i><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0">TRANSACTION_MANAGER</span></i><span style="font-size:10.0pt;font-family:Consolas;color:black">,
context.getBean(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF">"txManager"</span><span style="font-size:10.0pt;font-family:Consolas;color:black">));</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> StatefulKnowledgeSession ksession = kstore.newStatefulKnowledgeSession(kbase,
</span><b><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055">null</span></b><span style="font-size:10.0pt;font-family:Consolas;color:black">, env);</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the relevant portion of the Spring ApplicationContext.xml file:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"dataSourceH2"</span></i><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">class</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.springframework.jdbc.datasource.DriverManagerDataSource"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"driverClassName"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.h2.Driver"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"url"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"jdbc:h2:tcp://localhost/~/myApp"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"username"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"sa"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"password"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">""</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"entityManagerFactory"</span></i><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">class</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"dataSource"</span></i>
<span style="color:#7F007F">ref</span><span style="color:black">=</span><i><span style="color:#2A00FF">"dataSourceH2"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"persistenceUnitName"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"myAppH2"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"txManager"</span></i>
<span style="color:#7F007F">class</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.springframework.orm.jpa.JpaTransactionManager"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"entityManagerFactory"</span></i>
<span style="color:#7F007F">ref</span><span style="color:black">=</span><i><span style="color:#2A00FF">"entityManagerFactory"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">bean</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:grid-node</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"myAppEngineNode"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:kstore</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"myAppKnowledgeStore"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:kbase</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">id</span><span style="color:black">=</span><i><span style="color:#2A00FF">"myAppEngineKBase"</span></i>
<span style="color:#7F007F">node</span><span style="color:black">=</span><i><span style="color:#2A00FF">"MyAppEngineNode"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:configuration</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:assert-behavior</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">mode</span><span style="color:black">=</span><i><span style="color:#2A00FF">"EQUALITY"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:configuration</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resources</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resource</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">type</span><span style="color:black">=</span><i><span style="color:#2A00FF">"DRL"</span></i>
<span style="color:#7F007F">source</span><span style="color:black">=</span><i><span style="color:#2A00FF">"classpath:MyAppInternalRules.drl"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resource</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">type</span><span style="color:black">=</span><i><span style="color:#2A00FF">"DTABLE"</span></i>
<span style="color:#7F007F">source</span><span style="color:black">=</span><i><span style="color:#2A00FF">"classpath:MyAppRules.xls"</span></i>
<span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:decisiontable-conf</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">input-type</span><span style="color:black">=</span><i><span style="color:#2A00FF">"XLS"</span></i>
<span style="color:#7F007F">worksheet-name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"Sheet 1"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resource</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resource</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">type</span><span style="color:black">=</span><i><span style="color:#2A00FF">"DTABLE"</span></i>
<span style="color:#7F007F">source</span><span style="color:black">=</span><i><span style="color:#2A00FF">"classpath:MyAppRules.xls"</span></i>
<span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:decisiontable-conf</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">input-type</span><span style="color:black">=</span><i><span style="color:#2A00FF">"XLS"</span></i>
<span style="color:#7F007F">worksheet-name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"Sheet 2"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resource</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:resources</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">drools:kbase</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is the relevant part of the persistence.xml file:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">persistence-unit</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"myAppH2"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">provider</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas;color:black">org.hibernate.ejb.HibernatePersistence</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">provider</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">class</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas;color:black">org.drools.persistence.info.SessionInfo</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">class</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">properties</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.dialect"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.hibernate.dialect.H2Dialect"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.max_fetch_depth"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"3"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.hbm2ddl.auto"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"UPDATE"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.show_sql"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"true"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.connection.autocommit"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span><i><span style="color:#2A00FF">"true"</span></i>
<span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">property</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"hibernate.transaction.manager_lookup_class"</span></i>
<span style="color:#7F007F">value</span><span style="color:black">=</span> <i><span style="color:#2A00FF">"org.hibernate.transaction.BTMTransactionManagerLookup"</span></i><span style="color:teal">/></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">properties</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">persistence-unit</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have a jndi.properties that’s identical to what’s in the <a href="http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html/ch03.html#d0e3961">
documentation</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I noticed in the documentation (Example 3.65, Configuring JPA) that the persistence-unit block is defined a bit differently. In particular, transaction-type is specified and a jta-data-source are defined, unlike in my file:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">persistence-unit</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#7F007F">name</span><span style="color:black">=</span><i><span style="color:#2A00FF">"org.drools.persistence.jpa"</span></i>
<span style="color:#7F007F;background:yellow;mso-highlight:yellow">transaction-type</span><span style="color:black;background:yellow;mso-highlight:yellow">=</span><i><span style="color:#2A00FF;background:yellow;mso-highlight:yellow">"JTA"</span></i><span style="color:teal">></span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">provider</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas;color:black">org.hibernate.ejb.HibernatePersistence</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">provider</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal;background:yellow;mso-highlight:yellow"><</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F;background:yellow;mso-highlight:yellow">jta-data-source</span><span style="font-size:10.0pt;font-family:Consolas;color:teal;background:yellow;mso-highlight:yellow">></span><u><span style="font-size:10.0pt;font-family:Consolas;color:black;background:yellow;mso-highlight:yellow">jdbc</span></u><span style="font-size:10.0pt;font-family:Consolas;color:black;background:yellow;mso-highlight:yellow">/BitronixJTADataSource</span><span style="font-size:10.0pt;font-family:Consolas;color:teal;background:yellow;mso-highlight:yellow"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F;background:yellow;mso-highlight:yellow">jta-data-source</span><span style="font-size:10.0pt;font-family:Consolas;color:teal;background:yellow;mso-highlight:yellow">></span><span style="font-size:10.0pt;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:Consolas;color:black"> ...</span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;color:black">
</span><span style="font-size:10.0pt;font-family:Consolas;color:teal"></</span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F7F">persistence-unit</span><span style="font-size:10.0pt;font-family:Consolas;color:teal">></span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried defining these as shown, but then the code failed on startup when it tried to create a transaction:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager: Unable to begin transaction<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.IllegalStateException: A JTA EntityManager
cannot use getTransaction()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:427)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:48)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:190)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at java.lang.reflect.Constructor.newInstance(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:100)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.loadStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:83)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at MyClass1.initializeKnowledgeSession<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at MyClass1.initializeKnowledgeEngine<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at MyClass2.main<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">Caused by: java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.hibernate.ejb.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:996)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at java.lang.reflect.Method.invoke(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at com.sun.proxy.$Proxy16.getTransaction(Unknown Source)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:377)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas"> ... 12 more<o:p></o:p></span></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Tom<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>