<!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;">
TransactionMonitoringAndVisualization
</h3>
<span style="margin-bottom: 10px;">
modified by <a href="https://community.jboss.org/people/paul.robinson">Paul Robinson</a> in <i>JBoss Transactions Development</i> - <a href="https://community.jboss.org/docs/DOC-48255">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><h1 style="text-align: center;">Transaction Monitoring and Visualization</h1><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The purpose of this project is to create a tool for monitoring the status of in-flight and complete transactions. The main aims of the tool are to help debug transaction related issues and also to educate the developer of transactional applications. Essentially, the tool monitors a running system and produces a list of all transactions. A user may then select a particular transaction to see in more detail the participants involved in the transaction, the outcome of the transaction and the participants that influenced the outcome. Ideally the tool would be visual, showing a diagramatic view of a transaction. However, early versions may be tabular to allow more time to be spent improving functionality.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>A few diagrams should give you an idea of what the tooling could produce:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><a href="https://community.jboss.org/servlet/JiveServlet/showImage/20113/TXVisualCommitted%282%29.png"><span> https://community.jboss.org/servlet/JiveServlet/downloadImage/20113/TXVisualCommitted%282%29.png </span></a></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Here we can see that a transaction was begun on Server1. It enlisted a DB and JMS queue locally and invoked a remote service on Server2. A second resource (DB2) was enlisted on Server2. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><a href="https://community.jboss.org/servlet/JiveServlet/showImage/20114/TXVisualRollback.png"><span> https://community.jboss.org/servlet/JiveServlet/downloadImage/20114/TXVisualRollback.png </span></a></p><p>In this example we can see that the transaction rolled back because DB2 voted rollback.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Other possible features:</p><ul><li style="text-align: start;"><strong>List Transactions</strong>. List all logged transactions with a summary of the outcome (Committed, rolled back, heuristic).</li><li style="text-align: start;"><strong>Multiple Transaction Types.</strong> Somehow depict the type of transaction (JTS, WS-AT, REST-AT, etc)</li><li style="text-align: start;"><strong>Display Bridges</strong>. Display when a transaction is bridged from one type to another</li><li style="text-align: start;"><strong>In flight Transactions</strong>. More useful for long running transactions; display the current status of each participant and update the display in real-time as the status changes.</li><li style="text-align: start;"><strong>Heuristics</strong>. Display any resources that made a heuristic decsion and what that decision was.</li><li style="text-align: start;"><strong>Recovery Status</strong>. Show which resources crashed and the status of those resources already committed or recovered.</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><h4 style="text-align: start;">Potential Solution</h4><p>Use Byteman rules to log the required information on each server. The log can then be parsed by the visualization tool. The benefit of this approach is that you should be able to hook into any code in the TM. Also it it easy to turn on and off the tool so that it doesn't add overhead in production.</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Comment by <a href="https://community.jboss.org/docs/DOC-48255">going to Community</a></p>
        <p style="margin: 0;">Create a new document in JBoss Transactions Development at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2041">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>