Search in sources :

Example 16 with PasswordCredential

use of javax.resource.spi.security.PasswordCredential in project Payara by payara.

the class XAManagedConnectionFactory method createManagedConnection.

/**
 * Creates a new physical connection to the underlying EIS resource
 * manager.
 *
 * @param subject       <code>Subject</code> instance passed by the application server
 * @param cxRequestInfo <code>ConnectionRequestInfo</code> which may be created
 *                      as a result of the invocation <code>getConnection(user, password)</code>
 *                      on the <code>DataSource</code> object
 * @return <code>ManagedConnection</code> object created
 * @throws ResourceException           if there is an error in instantiating the
 *                                     <code>DataSource</code> object used for the
 *                                     creation of the <code>ManagedConnection</code> object
 * @throws SecurityException           if there ino <code>PasswordCredential</code> object
 *                                     satisfying this request
 * @throws ResourceAllocationException if there is an error in allocating the
 *                                     physical connection
 */
@Override
public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
    logFine("In createManagedConnection");
    PasswordCredential passwordCredential = getPasswordCredential(this, subject, cxRequestInfo);
    javax.sql.XADataSource dataSource = getDataSource();
    javax.sql.XAConnection xaConn = null;
    try {
        /* For the case where the user/passwd of the connection pool is
            * equal to the PasswordCredential for the connection request
            * get a connection from this pool directly.
            * for all other conditions go create a new connection
            */
        String user = getUser();
        if (user == null || isEqual(passwordCredential, user, getPassword())) {
            xaConn = dataSource.getXAConnection();
        } else {
            xaConn = dataSource.getXAConnection(passwordCredential.getUserName(), new String(passwordCredential.getPassword()));
        }
    } catch (java.sql.SQLException sqle) {
        if (_logger.isLoggable(Level.FINE)) {
            _logger.log(Level.FINE, "jdbc.exc_create_xa_conn", sqle);
        }
        StringManager sm = StringManager.getManager(DataSourceObjectBuilder.class);
        String msg = sm.getString("jdbc.cannot_allocate_connection", sqle.getMessage());
        throw new ResourceAllocationException(msg, sqle);
    }
    ManagedConnectionImpl mc = null;
    try {
        mc = constructManagedConnection(xaConn, null, passwordCredential, this);
        mc.initializeConnectionType(ManagedConnectionImpl.ISXACONNECTION);
        // GJCINT
        validateAndSetIsolation(mc);
    } finally {
        if (mc == null) {
            if (xaConn != null) {
                try {
                    xaConn.close();
                } catch (SQLException e) {
                    _logger.log(Level.FINEST, "Exception while closing connection : createManagedConnection" + xaConn);
                }
            }
        }
    }
    return mc;
}
Also used : SQLException(java.sql.SQLException) DataSourceObjectBuilder(com.sun.gjc.common.DataSourceObjectBuilder) SQLException(java.sql.SQLException) SecurityUtils.getPasswordCredential(com.sun.gjc.util.SecurityUtils.getPasswordCredential) PasswordCredential(javax.resource.spi.security.PasswordCredential) ResourceAllocationException(javax.resource.spi.ResourceAllocationException) StringManager(com.sun.enterprise.util.i18n.StringManager)

Aggregations

PasswordCredential (javax.resource.spi.security.PasswordCredential)16 DataSourceObjectBuilder (com.sun.gjc.common.DataSourceObjectBuilder)4 SQLException (java.sql.SQLException)4 ResourceException (javax.resource.ResourceException)4 Subject (javax.security.auth.Subject)4 StringManager (com.sun.enterprise.util.i18n.StringManager)3 Principal (java.security.Principal)3 ResourceAllocationException (javax.resource.spi.ResourceAllocationException)3 ResourcePrincipal (com.sun.enterprise.deployment.ResourcePrincipal)2 Properties (java.util.Properties)2 NamingException (javax.naming.NamingException)2 ManagedConnection (javax.resource.spi.ManagedConnection)2 ManagedConnectionFactory (javax.resource.spi.ManagedConnectionFactory)2 XAResource (javax.transaction.xa.XAResource)2 PoolInfo (org.glassfish.resourcebase.resources.api.PoolInfo)2 ResourceInfo (org.glassfish.resourcebase.resources.api.ResourceInfo)2 NamePrincipal (org.wildfly.security.auth.principal.NamePrincipal)2 ConnectorRuntime (com.sun.appserv.connectors.internal.api.ConnectorRuntime)1 ConnectorRuntimeException (com.sun.appserv.connectors.internal.api.ConnectorRuntimeException)1 Config (com.sun.enterprise.config.serverbeans.Config)1