<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>ConnectionEventListener</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ConnectionEventListener";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/resource/spi/ConnectionManager.html" title="interface in javax.resource.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/resource/spi/ConnectionEventListener.html" target="_top">Frames</a></li>
<li><a href="ConnectionEventListener.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.resource.spi</div>
<h2 title="Interface ConnectionEventListener" class="title">Interface ConnectionEventListener</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>java.util.EventListener</dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ConnectionEventListener</span>
extends java.util.EventListener</pre>
<div class="block">The <code>ConnectionEventListener</code> interface provides an event
   callback mechanism to enable an application server to receive 
   notifications from a <code>ManagedConnection</code> instance. 

   <p>An application server uses these event notifications to manage 
   its connection pool, to clean up any invalid or terminated connections
   and to manage local transactions.

   <p>An application server implements the 
   <code>ConnectionEventListener</code> interface. It registers a connection 
   listener with a <code>ManagedConnection</code> instance by using 
   <code>ManagedConnection.addConnectionEventListener</code> method.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi"><code>ConnectionEvent</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/resource/spi/ConnectionEventListener.html#connectionClosed-javax.resource.spi.ConnectionEvent-">connectionClosed</a></span>(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</code>
<div class="block">Notifies that an application component has closed the connection.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/resource/spi/ConnectionEventListener.html#connectionErrorOccurred-javax.resource.spi.ConnectionEvent-">connectionErrorOccurred</a></span>(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</code>
<div class="block">Notifies a connection related error.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/resource/spi/ConnectionEventListener.html#localTransactionCommitted-javax.resource.spi.ConnectionEvent-">localTransactionCommitted</a></span>(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</code>
<div class="block">Notifies that a Resource Manager Local Transaction was committed 
  on the ManagedConnection instance.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/resource/spi/ConnectionEventListener.html#localTransactionRolledback-javax.resource.spi.ConnectionEvent-">localTransactionRolledback</a></span>(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</code>
<div class="block">Notifies that a Resource Manager Local Transaction was rolled back 
  on the ManagedConnection instance.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/resource/spi/ConnectionEventListener.html#localTransactionStarted-javax.resource.spi.ConnectionEvent-">localTransactionStarted</a></span>(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</code>
<div class="block">Notifies that a Resource Manager Local Transaction was started on
  the ManagedConnection instance.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="connectionClosed-javax.resource.spi.ConnectionEvent-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>connectionClosed</h4>
<pre>void&nbsp;connectionClosed(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</pre>
<div class="block">Notifies that an application component has closed the connection.

  <p>A ManagedConnection instance notifies its registered set of 
  listeners by calling ConnectionEventListener.connectionClosed method
  when an application component closes a connection handle. The 
  application server uses this connection close event to put the
  ManagedConnection instance back in to the connection pool.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - event object describing the source of 
                      the event</dd>
</dl>
</li>
</ul>
<a name="localTransactionStarted-javax.resource.spi.ConnectionEvent-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localTransactionStarted</h4>
<pre>void&nbsp;localTransactionStarted(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</pre>
<div class="block">Notifies that a Resource Manager Local Transaction was started on
  the ManagedConnection instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - event object describing the source of 
                      the event</dd>
</dl>
</li>
</ul>
<a name="localTransactionCommitted-javax.resource.spi.ConnectionEvent-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localTransactionCommitted</h4>
<pre>void&nbsp;localTransactionCommitted(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</pre>
<div class="block">Notifies that a Resource Manager Local Transaction was committed 
  on the ManagedConnection instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - event object describing the source of 
                      the event</dd>
</dl>
</li>
</ul>
<a name="localTransactionRolledback-javax.resource.spi.ConnectionEvent-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localTransactionRolledback</h4>
<pre>void&nbsp;localTransactionRolledback(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</pre>
<div class="block">Notifies that a Resource Manager Local Transaction was rolled back 
  on the ManagedConnection instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - event object describing the source of 
                      the event</dd>
</dl>
</li>
</ul>
<a name="connectionErrorOccurred-javax.resource.spi.ConnectionEvent-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>connectionErrorOccurred</h4>
<pre>void&nbsp;connectionErrorOccurred(<a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi">ConnectionEvent</a>&nbsp;event)</pre>
<div class="block">Notifies a connection related error. 

  The ManagedConnection instance calls the method
  ConnectionEventListener.connectionErrorOccurred to notify 
  its registered listeners of the occurrence of a physical 
  connection-related error. The event notification happens 
  just before a resource adapter throws an exception to the 
  application component using the connection handle.

  The connectionErrorOccurred method indicates that the 
  associated ManagedConnection instance is now invalid and 
  unusable. The application server handles the connection 
  error event notification by initiating application 
  server-specific cleanup (for example, removing ManagedConnection 
  instance from the connection pool) and then calling
  ManagedConnection.destroy method to destroy the physical 
  connection.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>event</code> - event object describing the source of 
                      the event</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/resource/spi/ConnectionEvent.html" title="class in javax.resource.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/resource/spi/ConnectionManager.html" title="interface in javax.resource.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/resource/spi/ConnectionEventListener.html" target="_top">Frames</a></li>
<li><a href="ConnectionEventListener.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
