| /* |
| * The contents of this file are subject to the terms |
| * of the Common Development and Distribution License |
| * (the License). You may not use this file except in |
| * compliance with the License. |
| * |
| * You can obtain a copy of the license at |
| * https://glassfish.dev.java.net/public/CDDLv1.0.html or |
| * glassfish/bootstrap/legal/CDDLv1.0.txt. |
| * See the License for the specific language governing |
| * permissions and limitations under the License. |
| * |
| * When distributing Covered Code, include this CDDL |
| * Header Notice in each file and include the License file |
| * at glassfish/bootstrap/legal/CDDLv1.0.txt. |
| * If applicable, add the following below the CDDL Header, |
| * with the fields enclosed by brackets [] replaced by |
| * you own identifying information: |
| * "Portions Copyrighted [year] [name of copyright owner]" |
| * |
| * Copyright 2006 Sun Microsystems, Inc. All rights reserved. |
| */ |
| |
| package javax.resource.spi; |
| |
| import javax.security.auth.Subject; |
| import javax.transaction.xa.XAResource; |
| import javax.resource.ResourceException; |
| |
| /** 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>javax.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 JTA specification. |
| * |
| * <p>The LocalTransaction interface is used by the application server |
| * to manage local transactions. |
| * |
| * @version 0.5 |
| * @author Rahul Sharma |
| * @see javax.resource.spi.ManagedConnectionFactory |
| * @see javax.transaction.xa.XAResource |
| * @see javax.resource.spi.LocalTransaction |
| **/ |
| |
| public interface ManagedConnection { |
| |
| /** 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> |
| * |
| * @param subject security context as JAAS subject |
| * @param cxRequestInfo ConnectionRequestInfo instance |
| * @return generic Object instance representing the connection |
| * handle. For CCI, the connection handle created by a |
| * ManagedConnection instance is of the type |
| * javax.resource.cci.Connection. |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws ResourceAdapterInternalException |
| * resource adapter internal error condition |
| * @throws SecurityException security related error condition |
| * @throws CommException failed communication with EIS instance |
| * @throws EISSystemException internal error condition in EIS instance |
| * - used if EIS instance is involved in |
| * setting state of ManagedConnection |
| * |
| **/ |
| public |
| Object getConnection(Subject subject, |
| ConnectionRequestInfo cxRequestInfo) |
| throws ResourceException; |
| |
| /** Destroys the physical connection to the underlying resource manager. |
| * |
| * <p>To manage the size of the connection pool, an application server can |
| * explictly 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. |
| * |
| * @throws ResourceException generic exception if operation failed |
| * @throws IllegalStateException illegal state for destroying connection |
| **/ |
| |
| public |
| void destroy() throws ResourceException; |
| |
| /** 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. |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws ResourceAdapterInternalException |
| * resource adapter internal error condition |
| * @throws IllegalStateException Illegal state for calling connection |
| * cleanup. Example - if a localtransaction |
| * is in progress that doesn't allow |
| * connection cleanup |
| * |
| **/ |
| public |
| void cleanup() throws ResourceException; |
| |
| /** Used by the container to change the association of an |
| * application-level connection handle with a ManagedConneciton |
| * instance. The container should find the right ManagedConnection |
| * instance and call the associateConnection method. |
| * |
| * <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. |
| * |
| * @param connection Application-level connection handle |
| * |
| * @throws ResourceException Failed to associate the connection |
| * handle with this ManagedConnection |
| * instance |
| * @throws IllegalStateException Illegal state for invoking this |
| * method |
| * @throws ResourceAdapterInternalException |
| * Resource adapter internal error |
| * condition |
| * |
| **/ |
| public |
| void associateConnection(Object connection) |
| throws ResourceException; |
| |
| |
| |
| /** 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. |
| * |
| * @param listener a new ConnectionEventListener to be registered |
| **/ |
| public |
| void addConnectionEventListener(ConnectionEventListener listener); |
| |
| /** Removes an already registered connection event listener from the |
| * ManagedConnection instance. |
| * |
| * @param listener already registered connection event listener to be |
| * removed |
| **/ |
| public |
| void removeConnectionEventListener( |
| ConnectionEventListener listener); |
| |
| /** 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 JTA transaction that is being coordinated by the Transaction |
| * Manager. |
| * |
| * @return XAResource instance |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws NotSupportedException if the operation is not supported |
| * @throws ResourceAdapterInternalException |
| * resource adapter internal error condition |
| **/ |
| public |
| XAResource getXAResource() throws ResourceException; |
| |
| /** Returns an <code>javax.resource.spi.LocalTransaction</code> instance. |
| * The LocalTransaction interface is used by the container to manage |
| * local transactions for a RM instance. |
| * |
| * @return LocalTransaction instance |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws NotSupportedException if the operation is not supported |
| * @throws ResourceAdapterInternalException |
| * resource adapter internal error condition |
| **/ |
| public |
| LocalTransaction getLocalTransaction() throws ResourceException; |
| |
| /** <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. |
| * |
| * @return ManagedConnectionMetaData instance |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws NotSupportedException if the operation is not supported |
| **/ |
| public |
| ManagedConnectionMetaData getMetaData() throws ResourceException; |
| |
| /** 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> |
| * |
| * @param out Character Output stream to be associated |
| * |
| * @throws ResourceException generic exception if operation fails |
| * @throws ResourceAdapterInternalException |
| * resource adapter related error condition |
| **/ |
| public |
| void setLogWriter(java.io.PrintWriter out) throws ResourceException; |
| |
| /** 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> |
| * |
| * @return Character ourput stream associated with this Managed- |
| * Connection instance |
| * |
| * @throws ResourceException generic exception if operation fails |
| **/ |
| public |
| java.io.PrintWriter getLogWriter() throws ResourceException; |
| } |