<div> </div>
<div>Hi guys!</div>
<div> </div>
<div>I have got JBoss 4.2.2, DROOLS BRMS 4.0.4 and Oracle 10g XE as RDBMS.</div>
<div> </div>
<div>I defined an Oracle XA Datasource Drools Repository as follows:</div>
<div> </div>
<div><em><xa-datasource><br> <jndi-name>jdbc_XA/Drools_Rep</jndi-name><br> <track-connection-by-tx/><br> <isSameRM-override-value>false</isSameRM-override-value><br> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class><br>
<xa-datasource-property name="URL">jdbc:oracle:thin:@//localhost:1521/xe</xa-datasource-property><br> <xa-datasource-property name="User">...</xa-datasource-property><br>
<xa-datasource-property name="Password">...</xa-datasource-property><br> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name><br>
<br> <!-- <prepared-statement-cache-size>0</prepared-statement-cache-size> --><br> <!-- <blocking-timeout-millis>100</blocking-timeout-millis> --><br> <!-- <min-pool-size>2</min-pool-size> --><br>
<!-- <max-pool-size>30</max-pool-size> --></em></div>
<div><em><br> <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name></em></div>
<div><em> <no-tx-separate-pools/><br> <metadata><br> <type-mapping>Oracle9i</type-mapping><br> </metadata><br> <use-java-context>false</use-java-context> <br>
</xa-datasource></em></div>
<div> </div>
<div>This repository is managed with JackRabbit.</div>
<div> </div>
<div>So i defined the "repository.xml" telling jackrabbit that I want</div>
<div>to persist the rules into the Oracle XA Datasource I previously defined:</div>
<div> </div>
<div><em> <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.JNDIDatabasePersistenceManager"><br> <param name="dataSourceLocation" value="jdbc_XA/Drools_Rep"/><br>
<param name="schema" value="oracle"/><br> <param name="schemaObjectPrefix" value="${<a href="http://wsp.name">wsp.name</a>}_"/><br> <param name="externalBLOBs" value="false" /> <br>
</PersistenceManager></em></div>
<div> </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> </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> </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>"connection\connection pools" but it did not work...that'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>