<!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;">
Re: Can't get @TransactionTimeout to work
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/pablo.fraga1975">Pablo Fraga</a> in <i>EJB 3.0</i> - <a href="http://community.jboss.org/message/563409#563409">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Jaikiran,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>It doesn't work.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>This is mi relevant code.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>EJB3</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>@Stateful(name = "DiccionarioEJB")<br/>@Remote(value = RemoteEJBService.class)<br/>public class DiccionarioEJB extends AbstractSessionFacade implements<br/>        DiccionarioRemote {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    private static Logger log = Logger.getLogger(DiccionarioEJB.class);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    @Resource(mappedName = "java:/smsds")<br/>    private DataSource dataSource;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)<br/>    @TransactionTimeout(500)<br/>    public ResultObtenerDiccionario obtenerDiccionario(AbstractCommand command) {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        testConnection();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        try {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>            // sleeps 20 seconds<br/>            Thread.sleep(20000);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>            testConnection();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        } catch (Throwable t) {<br/>            System.out.println("SUCCESS! Expected tx timeout error");<br/>            t.printStackTrace();<br/>            return null;<br/>        }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        return null;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    private void testConnection() {<br/>        Connection conn = null;<br/>        try {<br/>            conn = this.dataSource.getConnection();<br/>            System.out.println("Got connection");<br/>        } catch (Throwable t) {<br/>            System.out<br/>                    .println("Error while getting connection from tx aware datasource: ");<br/>            throw new RuntimeException(t);<br/>        } finally {<br/>            if (conn != null) {<br/>                try {<br/>                    conn.close();<br/>                } catch (SQLException e) {<br/>                    System.out.println("Error closing connection "<br/>                            + e.getMessage());<br/>                }<br/>            }<br/>        }<br/>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>JTA timeout set to 10 seconds</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><!-- JBoss Transactions JTA --><br/>   <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService"<br/>      name="jboss:service=TransactionManager"><br/>      <attribute name="TransactionTimeout">10</attribute><br/>      <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> <br/>   </mbean></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Log</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>15:18:07,252 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id 7f000101:a89c:4c9b9942:32 invoked while multiple threads active within it.<br/>15:18:07,252 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - atomic action 7f000101:a89c:4c9b9942:32 aborting with 1 threads active!<br/>15:19:24,903 INFO  [STDOUT] Error while getting connection from tx aware datasource: <br/>15:19:25,740 INFO  [STDOUT] SUCCESS! Expected tx timeout error<br/>15:19:26,723 ERROR [STDERR] java.lang.RuntimeException: org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000101:a89c:4c9b9942:32 status: ActionStatus.ABORTED >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000101:a89c:4c9b9942:32 status: ActionStatus.ABORTED >)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In my example the global transaction time out was set to 10 seconds, my EJB method is annotated with 500 seconds, the EJB method first testConnection, then sleeps 20 seconds and finally tries to connect again but it fails because the transaccion is not active anymore.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>What is wrong?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </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="http://community.jboss.org/message/563409#563409">going to Community</a></p>
<p style="margin: 0;">Start a new discussion in EJB 3.0 at <a href="http://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>