<!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;">
    Does a LockAcquisitionException Invalidate a Transaction?
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/ssmith2010">Sam Smith</a> in <i>EJB3</i> - <a href="https://community.jboss.org/message/729932#729932">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>We're using Hibernate with SQL Server.&#160; As you may know, SQL Server will occassionally throw deadlocks during SELECT statements.&#160; We'd like to be able to capture this exception and retry the SELECT statement.&#160; Our preference would be to do this globally in our EJB (which ises CMP), something like this:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>{code}</p><p>public List getData(args...)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>int retries=0;</p><p>boolean continue=true:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>while (continue) {</p><p style="padding-left: 30px;">try</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; continue = false;</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; {</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; hibernate query to SELECT data</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; } </p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; catch (Exception ex)</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; {</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (ex instanceof LockAcquisitionException) {</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; retries++;</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (retries &lt; 5) continue = true;</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p><p style="padding-left: 30px;">&#160;&#160;&#160;&#160; }</p><p style="padding-left: 30px;">}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>{code}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So the idea is to do the query, if there's a LockAcquisitionException, just retry a couple of time.&#160; Our only concern is this -- does the exception invalidate the transaction?&#160; We know the transaction is started when we enter the method, so if within the method we get an error, can we just retry or is the transaction no longer any good?&#160; I'm sure it would be no good if we were doing an update and it forced a ROLLBACK, but we're unsure about in a non-update statement.</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/729932#729932">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in EJB3 at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


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

</div>

</body>
</html>