<div>&nbsp;</div>
<div>Hi guys!</div>
<div>&nbsp;</div>
<div>I have got JBoss 4.2.2, DROOLS BRMS 4.0.4 and Oracle 10g XE as RDBMS.</div>
<div>&nbsp;</div>
<div>I defined an Oracle XA Datasource Drools Repository as follows:</div>
<div>&nbsp;</div>
<div><em>&lt;xa-datasource&gt;<br>&nbsp;&lt;jndi-name&gt;jdbc_XA/Drools_Rep&lt;/jndi-name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;track-connection-by-tx/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;isSameRM-override-value&gt;false&lt;/isSameRM-override-value&gt;<br>&nbsp;&nbsp;&nbsp; &lt;xa-datasource-class&gt;oracle.jdbc.xa.client.OracleXADataSource&lt;/xa-datasource-class&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xa-datasource-property name=&quot;URL&quot;&gt;jdbc:oracle:thin:@//localhost:1521/xe&lt;/xa-datasource-property&gt;<br>&nbsp;&nbsp;&nbsp; &lt;xa-datasource-property name=&quot;User&quot;&gt;...&lt;/xa-datasource-property&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;xa-datasource-property name=&quot;Password&quot;&gt;...&lt;/xa-datasource-property&gt;<br>&nbsp;&nbsp;&nbsp; &lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter&lt;/exception-sorter-class-name&gt;<br>
&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; &lt;!-- &lt;prepared-statement-cache-size&gt;0&lt;/prepared-statement-cache-size&gt; --&gt;<br>&nbsp;&nbsp; &lt;!-- &lt;blocking-timeout-millis&gt;100&lt;/blocking-timeout-millis&gt; --&gt;<br>&nbsp;&nbsp; &lt;!-- &lt;min-pool-size&gt;2&lt;/min-pool-size&gt; --&gt;<br>
&nbsp;&nbsp; &lt;!-- &lt;max-pool-size&gt;30&lt;/max-pool-size&gt; --&gt;</em></div>
<div><em><br>&nbsp;&nbsp; &lt;valid-connection-checker-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker&lt;/valid-connection-checker-class-name&gt;</em></div>
<div><em>&nbsp;&nbsp;&nbsp; &lt;no-tx-separate-pools/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;metadata&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;type-mapping&gt;Oracle9i&lt;/type-mapping&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/metadata&gt;<br>&nbsp;&lt;use-java-context&gt;false&lt;/use-java-context&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&lt;/xa-datasource&gt;</em></div>
<div>&nbsp;</div>
<div>This repository is managed with JackRabbit.</div>
<div>&nbsp;</div>
<div>So i defined the &quot;repository.xml&quot; telling jackrabbit that I want</div>
<div>to persist the rules into the Oracle XA Datasource I previously defined:</div>
<div>&nbsp;</div>
<div><em>&nbsp;&nbsp;&nbsp;&nbsp;&lt;PersistenceManager class=&quot;org.apache.jackrabbit.core.persistence.db.JNDIDatabasePersistenceManager&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&quot;dataSourceLocation&quot; value=&quot;jdbc_XA/Drools_Rep&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&quot;schema&quot; value=&quot;oracle&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&quot;schemaObjectPrefix&quot; value=&quot;${<a href="http://wsp.name">wsp.name</a>}_&quot;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&quot;externalBLOBs&quot; value=&quot;false&quot; /&gt;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/PersistenceManager&gt;</em></div>
<div>&nbsp;</div>
<div>The problem comes out each time I reload the rulebase from</div>
<div>the BRMS....each time the RuleAgent wants to load</div>
<div>a rulebase (from the XA datasource ) the following exception is</div>
<div>thrown and the execution stops for 4-5 seconds:</div>
<div>&nbsp;</div>
<div><font size="2">
<p align="left"><em>12:29:36,170 INFO [CachedConnectionManager] Closing a connection for you. Please close them yourself: org.jboss.resource.adapter.jdbc.WrappedConnection@d74f7d</em></p>
<p align="left"><em>java.lang.Throwable: STACKTRACE</em></p>
<p align="left"><em>at org.jboss.resource.connectionmanager.CachedConnectionManager.registerConnection(</em></p></font><u><font color="#000080" size="2"><em>CachedConnectionManager.java:290</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(</em></p></font><u><font color="#000080" size="2"><em>BaseConnectionManager2.java:417</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(</em></p></font><u><font color="#000080" size="2"><em>BaseConnectionManager2.java:842</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(</em></p></font><u><font color="#000080" size="2"><em>WrapperDataSource.java:88</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.persistence.db.JNDIDatabasePersistenceManager.getConnection(</em></p></font><u><font color="#000080" size="2"><em>JNDIDatabasePersistenceManager.java:77</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.initConnection(</em></p></font><u><font color="#000080" size="2"><em>DatabasePersistenceManager.java:730</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.reestablishConnection(</em></p></font><u><font color="#000080" size="2"><em>DatabasePersistenceManager.java:806</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.executeStmt(</em></p></font><u><font color="#000080" size="2"><em>DatabasePersistenceManager.java:852</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.exists(</em></p></font><u><font color="#000080" size="2"><em>DatabasePersistenceManager.java:673</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.state.SharedItemStateManager.hasNonVirtualItemState(</em></p></font><u><font color="#000080" size="2"><em>SharedItemStateManager.java:1104</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.state.SharedItemStateManager.hasItemState(</em></p></font><u><font color="#000080" size="2"><em>SharedItemStateManager.java:289</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.state.LocalItemStateManager.hasItemState(</em></p></font><u><font color="#000080" size="2"><em>LocalItemStateManager.java:180</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.state.XAItemStateManager.hasItemState(</em></p></font><u><font color="#000080" size="2"><em>XAItemStateManager.java:252</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.state.SessionItemStateManager.hasItemState(</em></p></font><u><font color="#000080" size="2"><em>SessionItemStateManager.java:199</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.ItemManager.itemExists(</em></p></font><u><font color="#000080" size="2"><em>ItemManager.java:258</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.jackrabbit.core.NodeImpl.hasProperty(</em></p></font><u><font color="#000080" size="2"><em>NodeImpl.java:2708</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.drools.repository.PackageItem.getCompiledPackageBytes(</em></p></font><u><font color="#000080" size="2"><em>PackageItem.java:666</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.drools.brms.server.files.FileManagerUtils.loadBinaryPackage(</em></p></font><u><font color="#000080" size="2"><em>FileManagerUtils.java:146</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at sun.reflect.NativeMethodAccessorImpl.invoke0(</em></p></font><u><font color="#000080" size="2"><em>Native Method</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)</em></p>
<p align="left"><em>at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)</em></p>
<p align="left"><em>at java.lang.reflect.Method.invoke(Unknown Source)</em></p>
<p align="left"><em>at org.jboss.seam.util.Reflections.invoke(</em></p></font><u><font color="#000080" size="2"><em>Reflections.java:21</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.RootInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>RootInvocationContext.java:31</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.SeamInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>SeamInvocationContext.java:56</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(</em></p></font><u><font color="#000080" size="2"><em>RollbackInterceptor.java:31</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.SeamInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>SeamInvocationContext.java:68</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(</em></p></font><u><font color="#000080" size="2"><em>BijectionInterceptor.java:46</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.SeamInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>SeamInvocationContext.java:68</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(</em></p></font><u><font color="#000080" size="2"><em>MethodContextInterceptor.java:42</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.SeamInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>SeamInvocationContext.java:68</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(</em></p></font><u><font color="#000080" size="2"><em>SecurityInterceptor.java:40</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.SeamInvocationContext.proceed(</em></p></font><u><font color="#000080" size="2"><em>SeamInvocationContext.java:68</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.RootInterceptor.invoke(</em></p></font><u><font color="#000080" size="2"><em>RootInterceptor.java:106</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(</em></p></font><u><font color="#000080" size="2"><em>JavaBeanInterceptor.java:155</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(</em></p></font><u><font color="#000080" size="2"><em>JavaBeanInterceptor.java:91</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.drools.brms.server.files.FileManagerUtils_$$_javassist_1.loadBinaryPackage(FileManagerUtils_$$_javassist_1.java)</em></p>
<p align="left"><em>at org.drools.brms.server.files.PackageDeploymentServlet.doGet(</em></p></font><u><font color="#000080" size="2"><em>PackageDeploymentServlet.java:99</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at javax.servlet.http.HttpServlet.service(</em></p></font><u><font color="#000080" size="2"><em>HttpServlet.java:690</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at javax.servlet.http.HttpServlet.service(</em></p></font><u><font color="#000080" size="2"><em>HttpServlet.java:803</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:290</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.doFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:206</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.web.ContextFilter$1.process(</em></p></font><u><font color="#000080" size="2"><em>ContextFilter.java:42</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.servlet.ContextualHttpServletRequest.run(</em></p></font><u><font color="#000080" size="2"><em>ContextualHttpServletRequest.java:46</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.seam.web.ContextFilter.doFilter(</em></p></font><u><font color="#000080" size="2"><em>ContextFilter.java:37</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:235</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.doFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:206</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(</em></p></font><u><font color="#000080" size="2"><em>ReplyHeaderFilter.java:96</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:235</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.ApplicationFilterChain.doFilter(</em></p></font><u><font color="#000080" size="2"><em>ApplicationFilterChain.java:206</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.StandardWrapperValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>StandardWrapperValve.java:230</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.StandardContextValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>StandardContextValve.java:175</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>SecurityAssociationValve.java:179</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.web.tomcat.security.JaccContextValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>JaccContextValve.java:84</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.StandardHostValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>StandardHostValve.java:127</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.valves.ErrorReportValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>ErrorReportValve.java:102</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>CachedConnectionValve.java:157</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.core.StandardEngineValve.invoke(</em></p></font><u><font color="#000080" size="2"><em>StandardEngineValve.java:109</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.catalina.connector.CoyoteAdapter.service(</em></p></font><u><font color="#000080" size="2"><em>CoyoteAdapter.java:262</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.coyote.http11.Http11Processor.process(</em></p></font><u><font color="#000080" size="2"><em>Http11Processor.java:844</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(</em></p></font><u><font color="#000080" size="2"><em>Http11Protocol.java:583</em></font></u><font size="2"><em>)</em>
<p align="left"><em>at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(</em></p></font><u><font color="#000080" size="2"><em>JIoEndpoint.java:446</em></font></u><font size="2"><em>)</em>
<p><em>at java.lang.Thread.run(Unknown Source)</em></p>
<p>&nbsp;</p>
<p><strong>As u can see, each time jboss tries to access the drools DS, it finds</strong></p>
<p><strong>a previous connection opened, so Jboss HAS TO close it by itself!</strong></p>
<p>As far as U know, Is there any way to tell JackRabbit that he has to close connections?</p>
<p>Hibernate has something like that so I expect that JackRabbit does the same...</p>
<p>I already tried to redefine the XA datasource setting some tags related to the</p>
<p>&quot;connection\connection pools&quot; but it did not work...that&#39;s why I am quite sure</p>
<p>the problem has to be focused on jackrabbit!</p>
<p>Thank you anyway.</p>
<p>If u want you can answer me to <a href="mailto:m.magistri@reply.it">m.magistri@reply.it</a> as well.</p>
<p>Bye.</p>
<p>Massi</p></font></div>