<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>ManagedConnection</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>

<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ManagedConnection";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":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="../../../jakarta/resource/spi/LocalTransactionException.html" title="class in jakarta.resource.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/resource/spi/ManagedConnectionFactory.html" title="interface in jakarta.resource.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/resource/spi/ManagedConnection.html" target="_top">Frames</a></li>
<li><a href="ManagedConnection.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">jakarta.resource.spi</div>
<h2 title="Interface ManagedConnection" class="title">Interface ManagedConnection</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">ManagedConnection</span></pre>
<div class="block">ManagedConnection instance represents a physical connection
  to the underlying EIS.

  <p>A ManagedConnection instance provides access to a pair of 
  interfaces: <code>javax.transaction.xa.XAResource</code> and 
  <code>jakarta.resource.spi.LocalTransaction</code>.

  <p><code> XAResource</code> interface is used by the transaction 
  manager to associate and dissociate a transaction with the underlying 
  EIS resource manager instance and to perform two-phase commit 
  protocol. The ManagedConnection interface is not directly used 
  by the transaction manager. More details on the XAResource 
  interface are described in the Jakarta&trade; Transactions specification.

  <p>The LocalTransaction interface is used by the application server
  to manage local transactions.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../jakarta/resource/spi/ManagedConnectionFactory.html" title="interface in jakarta.resource.spi"><code>ManagedConnectionFactory</code></a>, 
<code>XAResource</code>, 
<a href="../../../jakarta/resource/spi/LocalTransaction.html" title="interface in jakarta.resource.spi"><code>LocalTransaction</code></a></dd>
<dt><span class="simpleTagLabel">Examples (en):</span></dt>
<dd><a href="../../../../../../tomee-9.0/examples/connector-war.html">connector-war</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="../../../jakarta/resource/spi/ManagedConnection.html#addConnectionEventListener-jakarta.resource.spi.ConnectionEventListener-">addConnectionEventListener</a></span>(<a href="../../../jakarta/resource/spi/ConnectionEventListener.html" title="interface in jakarta.resource.spi">ConnectionEventListener</a>&nbsp;listener)</code>
<div class="block">Adds a connection event listener to the ManagedConnection 
  instance.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#associateConnection-java.lang.Object-">associateConnection</a></span>(java.lang.Object&nbsp;connection)</code>
<div class="block">Used typically by the container to change the association of an 
  application-level connection handle with a ManagedConnection 
  instance.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#cleanup--">cleanup</a></span>()</code>
<div class="block">Application server calls this method to force any cleanup 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="../../../jakarta/resource/spi/ManagedConnection.html#destroy--">destroy</a></span>()</code>
<div class="block">Destroys the physical connection to the underlying resource manager.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#getConnection-javax.security.auth.Subject-jakarta.resource.spi.ConnectionRequestInfo-">getConnection</a></span>(javax.security.auth.Subject&nbsp;subject,
             <a href="../../../jakarta/resource/spi/ConnectionRequestInfo.html" title="interface in jakarta.resource.spi">ConnectionRequestInfo</a>&nbsp;cxRequestInfo)</code>
<div class="block">Creates a new connection handle for the underlying physical connection 
  represented by the ManagedConnection instance.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../jakarta/resource/spi/LocalTransaction.html" title="interface in jakarta.resource.spi">LocalTransaction</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#getLocalTransaction--">getLocalTransaction</a></span>()</code>
<div class="block">Returns an <code>jakarta.resource.spi.LocalTransaction</code> instance.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.io.PrintWriter</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#getLogWriter--">getLogWriter</a></span>()</code>
<div class="block">Gets the log writer for this ManagedConnection instance.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../jakarta/resource/spi/ManagedConnectionMetaData.html" title="interface in jakarta.resource.spi">ManagedConnectionMetaData</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#getMetaData--">getMetaData</a></span>()</code>
<div class="block">Gets the metadata information for this connection's underlying 
  EIS resource manager instance.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>javax.transaction.xa.XAResource</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#getXAResource--">getXAResource</a></span>()</code>
<div class="block">Returns an <code>javax.transaction.xa.XAresource</code> instance.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#removeConnectionEventListener-jakarta.resource.spi.ConnectionEventListener-">removeConnectionEventListener</a></span>(<a href="../../../jakarta/resource/spi/ConnectionEventListener.html" title="interface in jakarta.resource.spi">ConnectionEventListener</a>&nbsp;listener)</code>
<div class="block">Removes an already registered connection event listener from the 
  ManagedConnection instance.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/resource/spi/ManagedConnection.html#setLogWriter-java.io.PrintWriter-">setLogWriter</a></span>(java.io.PrintWriter&nbsp;out)</code>
<div class="block">Sets the log writer for this 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="getConnection-javax.security.auth.Subject-jakarta.resource.spi.ConnectionRequestInfo-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConnection</h4>
<pre>java.lang.Object&nbsp;getConnection(javax.security.auth.Subject&nbsp;subject,
                               <a href="../../../jakarta/resource/spi/ConnectionRequestInfo.html" title="interface in jakarta.resource.spi">ConnectionRequestInfo</a>&nbsp;cxRequestInfo)
                        throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block"><p>Creates a new connection handle for the underlying physical connection 
  represented by the ManagedConnection instance. This connection handle
  is used by the application code to refer to the underlying physical 
  connection. This connection handle is associated with its 
  ManagedConnection instance in a resource adapter implementation 
  specific way.</p>

  <p>The ManagedConnection uses the Subject and additional ConnectionRequest
  Info (which is specific to resource adapter and opaque to application
  server) to set the state of the physical connection.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subject</code> - security context as JAAS subject</dd>
<dd><code>cxRequestInfo</code> - ConnectionRequestInfo instance</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>generic Object instance representing the connection 
                handle. For CCI, the connection handle created by a 
                ManagedConnection instance is of the type 
                jakarta.resource.cci.Connection.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - resource adapter internal error condition</dd>
<dd><code><a href="../../../jakarta/resource/spi/SecurityException.html" title="class in jakarta.resource.spi">SecurityException</a></code> - security related error condition</dd>
<dd><code><a href="../../../jakarta/resource/spi/CommException.html" title="class in jakarta.resource.spi">CommException</a></code> - failed communication with EIS instance</dd>
<dd><code><a href="../../../jakarta/resource/spi/EISSystemException.html" title="class in jakarta.resource.spi">EISSystemException</a></code> - internal error condition in EIS instance
                                 - used if EIS instance is involved in
                                   setting state of ManagedConnection</dd>
</dl>
</li>
</ul>
<a name="destroy--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre>void&nbsp;destroy()
      throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Destroys the physical connection to the underlying resource manager.

  <p>To manage the size of the connection pool, an application server can 
  explicitly call ManagedConnection.destroy to destroy a  
  physical connection. A resource adapter should destroy all allocated 
  system resources for this ManagedConnection instance when the method 
  destroy is called.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation failed</dd>
<dd><code><a href="../../../jakarta/resource/spi/IllegalStateException.html" title="class in jakarta.resource.spi">IllegalStateException</a></code> - illegal state for destroying connection</dd>
</dl>
</li>
</ul>
<a name="cleanup--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanup</h4>
<pre>void&nbsp;cleanup()
      throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Application server calls this method to force any cleanup on the 
  ManagedConnection instance.
  
  <p>The method ManagedConnection.cleanup initiates a cleanup of the
  any client-specific state as maintained by a ManagedConnection instance.
  The cleanup should invalidate all connection handles that had been 
  created using this ManagedConnection instance. Any attempt by an application 
  component to use the connection handle after cleanup of the underlying
  ManagedConnection should result in an exception.

  <p>The cleanup of ManagedConnection is always driven by an application
  server. An application server should not invoke ManagedConnection.cleanup
  when there is an uncompleted transaction (associated with a 
  ManagedConnection instance) in progress. 

  <p>The invocation of ManagedConnection.cleanup method on an already 
  cleaned-up connection should not throw an exception.

  <p>The cleanup of ManagedConnection instance resets its client specific
  state and prepares the connection to be put back in to a connection
  pool. The cleanup method should not cause resource adapter to close
  the physical pipe and reclaim system resources associated with the
  physical connection.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - resource adapter internal error condition</dd>
<dd><code><a href="../../../jakarta/resource/spi/IllegalStateException.html" title="class in jakarta.resource.spi">IllegalStateException</a></code> - Illegal state for calling connection
                                   cleanup. Example - if a local transaction 
                                   is in progress that doesn't allow 
                                   connection cleanup</dd>
</dl>
</li>
</ul>
<a name="associateConnection-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>associateConnection</h4>
<pre>void&nbsp;associateConnection(java.lang.Object&nbsp;connection)
                  throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Used typically by the container to change the association of an 
  application-level connection handle with a ManagedConnection 
  instance. The container should find the right ManagedConnection 
  instance and call the associateConnection method.
  In order to set a Connection Handle as the active connection 
  handle, the container may also use the <code>associateConnection</code> 
  method to set the same <code>ManagedConnection</code> associated 
  with the Connection handle.

  <p>The resource adapter is required to implement the associateConnection
  method. The method implementation for a ManagedConnection should 
  dissociate the connection handle (passed as a parameter) from its 
  currently associated ManagedConnection and associate the new 
  connection handle with itself.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>connection</code> - Application-level connection handle</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - Failed to associate the connection
                                 handle with this ManagedConnection
                                 instance</dd>
<dd><code><a href="../../../jakarta/resource/spi/IllegalStateException.html" title="class in jakarta.resource.spi">IllegalStateException</a></code> - Illegal state for invoking this
                                 method</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - Resource adapter internal error 
                                 condition</dd>
</dl>
</li>
</ul>
<a name="addConnectionEventListener-jakarta.resource.spi.ConnectionEventListener-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addConnectionEventListener</h4>
<pre>void&nbsp;addConnectionEventListener(<a href="../../../jakarta/resource/spi/ConnectionEventListener.html" title="interface in jakarta.resource.spi">ConnectionEventListener</a>&nbsp;listener)</pre>
<div class="block">Adds a connection event listener to the ManagedConnection 
  instance.

  <p>The registered ConnectionEventListener instances are notified of
  connection close and error events, also of local transaction related
  events on the Managed Connection.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>listener</code> - a new ConnectionEventListener to be registered</dd>
</dl>
</li>
</ul>
<a name="removeConnectionEventListener-jakarta.resource.spi.ConnectionEventListener-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeConnectionEventListener</h4>
<pre>void&nbsp;removeConnectionEventListener(<a href="../../../jakarta/resource/spi/ConnectionEventListener.html" title="interface in jakarta.resource.spi">ConnectionEventListener</a>&nbsp;listener)</pre>
<div class="block">Removes an already registered connection event listener from the 
  ManagedConnection instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>listener</code> - already registered connection event listener to be 
                     removed</dd>
</dl>
</li>
</ul>
<a name="getXAResource--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getXAResource</h4>
<pre>javax.transaction.xa.XAResource&nbsp;getXAResource()
                                       throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Returns an <code>javax.transaction.xa.XAresource</code> instance. 
  An application server enlists this XAResource instance with the
  Transaction Manager if the ManagedConnection instance is being used
  in a Jakarta Transactions transaction that is being coordinated by the Transaction 
  Manager.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>XAResource instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - resource adapter internal error condition</dd>
<dd><code><a href="../../../jakarta/resource/NotSupportedException.html" title="class in jakarta.resource">NotSupportedException</a></code> - if this is not supported by the connector</dd>
</dl>
</li>
</ul>
<a name="getLocalTransaction--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalTransaction</h4>
<pre><a href="../../../jakarta/resource/spi/LocalTransaction.html" title="interface in jakarta.resource.spi">LocalTransaction</a>&nbsp;getLocalTransaction()
                              throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Returns an <code>jakarta.resource.spi.LocalTransaction</code> instance. 
  The LocalTransaction interface is used by the container to manage
  local transactions for a RM instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>LocalTransaction instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - resource adapter internal error condition</dd>
<dd><code><a href="../../../jakarta/resource/NotSupportedException.html" title="class in jakarta.resource">NotSupportedException</a></code> - if this is not supported by the Connector</dd>
</dl>
</li>
</ul>
<a name="getMetaData--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMetaData</h4>
<pre><a href="../../../jakarta/resource/spi/ManagedConnectionMetaData.html" title="interface in jakarta.resource.spi">ManagedConnectionMetaData</a>&nbsp;getMetaData()
                               throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block"><p>Gets the metadata information for this connection's underlying 
  EIS resource manager instance. The ManagedConnectionMetaData 
  interface provides information about the underlying EIS instance 
  associated with the ManagedConenction instance.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>ManagedConnectionMetaData instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/NotSupportedException.html" title="class in jakarta.resource">NotSupportedException</a></code> - if this is not supported by the Connector</dd>
</dl>
</li>
</ul>
<a name="setLogWriter-java.io.PrintWriter-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLogWriter</h4>
<pre>void&nbsp;setLogWriter(java.io.PrintWriter&nbsp;out)
           throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Sets the log writer for this ManagedConnection instance.

  <p>The log writer is a character output stream to which all logging and
  tracing messages for this ManagedConnection instance will be printed.
  Application Server manages the association of output stream with the
  ManagedConnection instance based on the connection pooling 
  requirements.</p>
  
  <p>When a ManagedConnection object is initially created, the default
  log writer associated with this instance is obtained from the 
  ManagedConnectionFactory. An application server can set a log writer
  specific to this ManagedConnection to log/trace this instance using
  setLogWriter method.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>out</code> - Character Output stream to be associated</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</dd>
<dd><code><a href="../../../jakarta/resource/spi/ResourceAdapterInternalException.html" title="class in jakarta.resource.spi">ResourceAdapterInternalException</a></code> - resource adapter related error condition</dd>
</dl>
</li>
</ul>
<a name="getLogWriter--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getLogWriter</h4>
<pre>java.io.PrintWriter&nbsp;getLogWriter()
                          throws <a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></pre>
<div class="block">Gets the log writer for this ManagedConnection instance.

  <p>The log writer is a character output stream to which all logging and
  tracing messages for this ManagedConnection instance will be printed.
  ConnectionManager manages the association of output stream with the
  ManagedConnection instance based on the connection pooling 
  requirements.</p>

  <p>The Log writer associated with a ManagedConnection instance can be
  one set as default from the ManagedConnectionFactory (that created
  this connection) or one set specifically for this instance by the 
  application server.</p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Character ourput stream associated with this Managed-
            Connection instance</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../jakarta/resource/ResourceException.html" title="class in jakarta.resource">ResourceException</a></code> - generic exception if operation fails</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="../../../jakarta/resource/spi/LocalTransactionException.html" title="class in jakarta.resource.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/resource/spi/ManagedConnectionFactory.html" title="interface in jakarta.resource.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/resource/spi/ManagedConnection.html" target="_top">Frames</a></li>
<li><a href="ManagedConnection.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>
