<!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="http://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;">
    When does JBoss reopen a dead connection?
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/theglauber">Glauber Ribeiro</a> in <i>Datasource Configuration</i> - <a href="http://community.jboss.org/message/569897#569897">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>I'm using JBoss 4.3. I have a data source defined like this:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;min-pool-size&gt;5&lt;/min-pool-size&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;max-pool-size&gt;25&lt;/max-pool-size&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;validate-on-match&gt;false&lt;/validate-on-match&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;background-validation&gt;true&lt;/background-validation&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;idle-timeout-minutes&gt;5&lt;/idle-timeout-minutes&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;background-validation-minutes&gt;1&lt;/background-validation-minutes&gt;</div><div id="_mcePaste" style="overflow-y: hidden; left: -10000px; overflow-x: hidden; width: 1px; position: absolute; top: 0px; height: 1px;">&#160;&#160;&#160; &lt;prefill&gt;true&lt;/prefill&gt;</div><div> </div><p style="padding-left: 30px;">&lt;min-pool-size&gt;5&lt;/min-pool-size&gt;</p><p style="padding-left: 30px;">&lt;max-pool-size&gt;25&lt;/max-pool-size&gt;</p><p style="padding-left: 30px;">&lt;validate-on-match&gt;false&lt;/validate-on-match&gt;</p><p style="padding-left: 30px;">&lt;background-validation&gt;true&lt;/background-validation&gt;</p><p style="padding-left: 30px;">&lt;idle-timeout-minutes&gt;10&lt;/idle-timeout-minutes&gt;</p><p style="padding-left: 30px;">&lt;background-validation-minutes&gt;15&lt;/background-validation-minutes&gt;</p><p style="padding-left: 30px;">&lt;prefill&gt;true&lt;/prefill&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div> </div><div>And i have the validation SQLs defined:</div><div> </div><div style="padding-left: 30px;">&lt;new-connection-sql&gt;select 1&lt;/new-connection-sql&gt;</div><div style="padding-left: 30px;"><div>&lt;check-valid-connection-sql&gt;select 1&lt;/check-valid-connection-sql&gt;</div><div> </div><div> </div></div><div style="padding-left: 30px;"> </div><div style="padding-left: 30px;"> </div><div style="padding-left: 30px;"> </div><div style="padding-left: 30px;"> </div><div style="padding-left: 30px;"> </div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div style="text-align: left;">Here's my problem: when there is a database failure (say, just for the sake of argument, i reboot the database server, to cause a failure) under load (that is, i'm constantly feeding transactions to my application, so it is trying to use the database all the time), JBoss continues to feed dead database connections to the application, until the background validation fires, at which point the connections are re-opened. So i see a bunch of errors in my application log that say things like "SQLException: invalid operation on closed connection", until the background validation fires and those connections are re-opened.</div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div style="text-align: left;">I'm surprised this is happening. I thought a SQLException on a connection would cause JBoss to drop that connection from the pool, but instead, JBoss seems to be blissfully unaware that there is anything wrong with the connections, and keeps passing them back to the application. Why doesn't it? Is JBoss relying on the application re-throwing the SQLExceptions? <span> :-/ </span></div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div>Thanks for any help, pointers, etc.</div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div>glauber</div></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/569897#569897">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Datasource Configuration at <a href="http://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>