<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Remote Jndi Datasource: ResultSet gets randomly closed
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/troubleshooter">manu patet</a> in <i>Datasource Configuration</i> - <a href="https://community.jboss.org/message/772561#772561">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hello experts,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Let me give a short description of our deployment here before the issue. </p><p>We have multiple databases that our central reporting application reads. We do it by running multiple application servers (all JBoss 4.2.3.GA) on each of these boxes. The central application obtains Datasource objects by remote jndi lookup (see the <a class="jive-link-external-small" href="http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/beta500/html/ch13s15.html">note</a>) and keeps them cached. We're totally ok with the caveats JBoss has mentioned since we don't run any distributed transactions. Moreover, this model has worked out beautifully so far and more importantly integrates with our existing model seamlessly.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The problem:</p><p>Under stress tests, the resultsets tend to close halfway and the underlying statement throws a SQLExcpetion. Here's a trace:</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p><pre class="jive-pre"><code class="jive-code">java.sql.SQLException: The result set is closed.
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.resource.adapter.jdbc.WrappedResultSet.checkState(WrappedResultSet.java:1959)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.resource.adapter.jdbc.WrappedResultSet.getString(WrappedResultSet.java:885)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor334.invoke(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:601)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService.doResultSetMethod(WrapperDataSourceService.java:431)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService.invoke(WrapperDataSourceService.java:233)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor326.invoke(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:601)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:818)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:419)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor325.invoke(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:601)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport$1.run(Transport.java:177)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport$1.run(Transport.java:174)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.security.AccessController.doPrivileged(Native Method)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.Thread.run(Thread.java:722)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:133)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at $Proxy78.getString(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.aryaka.nos.stats.feeder.ChartMapperDb.getChart(ChartMapperDb.java:73)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.aryaka.nos.stats.StatsAPIImpl.getStats(StatsAPIImpl.java:171)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.aryaka.nos.stats.StatsAPIImpl.getLinkTimeseriesStats(StatsAPIImpl.java:724)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.aryaka.nos.stats.StatsAPIImpl.getAppTimeseriesStats(StatsAPIImpl.java:633)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor276.invoke(Unknown Source)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:601)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport$1.run(Transport.java:177)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport$1.run(Transport.java:174)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.security.AccessController.doPrivileged(Native Method)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.Thread.run(Thread.java:722)
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>This particular exception got thrown in this code:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>if</b></font>(rs.next()) <font color="navy">{</font>
&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;ArrayList&lt;Formula&gt; arrFormula = <font color="navy"><b>new</b></font> ArrayList&lt;Formula&gt;();
&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;ArrayList&lt;ChartConstants&gt; arrConst = <font color="navy"><b>new</b></font> ArrayList&lt;ChartConstants&gt;();
&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;ChartConstants graphConstant = <font color="navy"><b>null</b></font>;
&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;<font color="navy"><b>do</b></font><font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;<font color="darkgreen">//do stuff</font>
&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;<font color="navy">}</font><font color="navy"><b>while</b></font>(rs.next()); <font color="darkgreen">//&lt;&lt;OFFENDING LINE</font>
<font color="navy">}</font>
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The code is the same production code that runs just fine on local datasources. Statements/Connection closures are handled in finally blocks. There are no shared connections/statements. All statements close before fetching a new resultset. Each request pulls a new connection from pool. All standard stuff.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm clueless as to what might be causing resultsets to close randomly. Any help is appreciated!</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>-Thanks</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/772561#772561">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Datasource Configuration at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2077">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>