<!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: In memory TaskClient without Mina or JMS
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/daniele.ulrich">Daniele Ulrich</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/616860#616860">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi Franklin</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I had already started to do some changes to the classes that are managing persistence. If you like, you can try if it works this way...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>You can start the same way as the original version:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>TaskService taskService = new TaskService(emf,</p><p>&#160;&#160;&#160;&#160; SystemEventListenerFactory.getSystemEventListener());</p><p>&#160;&#160; TaskServiceSession taskSession = taskService.createSession();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If you are in a container managed transaction environment, the persistence should work now within the JTA scope without further effort.</p><p>In a non managed environment you will have to use UserTransactions and XA Datasources to ensure transactions over multiple databases.There are a lot of implementations available, maybe you try this one <a class="jive-link-external-small" href="http://docs.codehaus.org/display/BTM/Hibernate13">http://docs.codehaus.org/display/BTM/Hibernate13</a>. You will have to manually start transactions</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>TransactionManagerServices.getConfiguration().setResourceConfigurationFilename(<span class="code-quote">"./datasources.properties"</span>);</p><p>userTransaction = TransactionManagerServices.getTransactionManager();</p><p>userTransaction.setTransactionTimeout(60);</p><p>&#160; userTransaction.begin();</p><p>&#160;&#160; </p><p>&#160;&#160; <span class="code-keyword">try</span> {</p><p>&#160;&#160; <span class="code-object">System</span>.out.println(<span class="code-quote">"*** DB1 ***"</span>);</p><p>&#160; persistUser(sf1, <span class="code-quote">"user"</span>);</p><p>&#160; listUsers(sf1);</p><p>&#160;&#160; </p><p>&#160;&#160; <span class="code-object">System</span>.out.println(<span class="code-quote">"*** DB2 ***"</span>);</p><p>&#160; persistUser(sf2, <span class="code-quote">"user"</span>);</p><p>&#160; listUsers(sf2);</p><p>&#160;&#160; </p><p>&#160; userTransaction.commit();</p><p>&#160; }</p><p>&#160;&#160; <span class="code-keyword">catch</span> (Exception ex) {</p><p>&#160; ex.printStackTrace();</p><p>&#160; userTransaction.rollback();</p><p>&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>this way you can keep multiple databases transactional.... Drawback: it definitely will have impact to all the other code you have already implemented that is not using JTA. Try it first without changing your own code, but I'm quite sure, you'll have to use the userTransactions in every situation where you want to guarantee transactions over more than one database.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I did not have the time to test the patch properly, so please take care!</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The implementation uses threadLocalStorage and heavily depends on calling the session.dispose() method to perform clean up of the resources of a thread. Make sure it will be called even if an exception occurs ( catch/finally block ).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Cheers</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Daniele</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/616860#616860">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


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

</div>

</body>
</html>