jakarta.resource.spi.ManagedConnection Maven / Gradle / Ivy
/*
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package jakarta.resource.spi;
import javax.security.auth.Subject;
import javax.transaction.xa.XAResource;
import jakarta.resource.ResourceException;
import jakarta.resource.NotSupportedException;
/** ManagedConnection instance represents a physical connection
* to the underlying EIS.
*
* A ManagedConnection instance provides access to a pair of
* interfaces: javax.transaction.xa.XAResource
and
* jakarta.resource.spi.LocalTransaction
.
*
*
XAResource
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™ Transactions specification.
*
*
The LocalTransaction interface is used by the application server
* to manage local transactions.
*
* @version 0.5
* @author Rahul Sharma
* @see jakarta.resource.spi.ManagedConnectionFactory
* @see javax.transaction.xa.XAResource
* @see jakarta.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.
*
* 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.
*
* @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
* jakarta.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.
*
* 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.
*
* @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.
*
*
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.
*
*
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.
*
The invocation of ManagedConnection.cleanup method on an already
* cleaned-up connection should not throw an exception.
*
*
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 local transaction
* is in progress that doesn't allow
* connection cleanup
*
**/
public
void cleanup() throws ResourceException;
/**
* 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 associateConnection
* method to set the same ManagedConnection
associated
* with the Connection handle.
*
*
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.
*
*
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 javax.transaction.xa.XAresource
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.
*
* @return XAResource instance
*
* @throws ResourceException generic exception if operation fails
* @throws ResourceAdapterInternalException resource adapter internal error condition
* @throws NotSupportedException if this is not supported by the connector
**/
public
XAResource getXAResource() throws ResourceException;
/** Returns an jakarta.resource.spi.LocalTransaction
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 ResourceAdapterInternalException
* resource adapter internal error condition
* @throws NotSupportedException if this is not supported by the Connector
**/
public
LocalTransaction getLocalTransaction() throws ResourceException;
/**
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 this is not supported by the Connector
**/
public
ManagedConnectionMetaData getMetaData() throws ResourceException;
/** Sets the log writer for this ManagedConnection instance.
*
*
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.
*
* 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.
*
* @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.
*
* 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.
*
* 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.
*
* @return Character ourput stream associated with this Managed-
* Connection instance
*
* @throws ResourceException generic exception if operation fails
**/
public
java.io.PrintWriter getLogWriter() throws ResourceException;
}