Package com.atomikos.jdbc.nonxa

Source Code of com.atomikos.jdbc.nonxa.AtomikosNonXAConnectionFactory

/**
* Copyright (C) 2000-2010 Atomikos <info@atomikos.com>
*
* This code ("Atomikos TransactionsEssentials"), by itself,
* is being distributed under the
* Apache License, Version 2.0 ("License"), a copy of which may be found at
* http://www.atomikos.com/licenses/apache-license-2.0.txt .
* You may not use this file except in compliance with the License.
*
* While the License grants certain patent license rights,
* those patent license rights only extend to the use of
* Atomikos TransactionsEssentials by itself.
*
* This code (Atomikos TransactionsEssentials) contains certain interfaces
* in package (namespace) com.atomikos.icatch
* (including com.atomikos.icatch.Participant) which, if implemented, may
* infringe one or more patents held by Atomikos.
* It should be appreciated that you may NOT implement such interfaces;
* licensing to implement these interfaces must be obtained separately from Atomikos.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*/

package com.atomikos.jdbc.nonxa;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.atomikos.datasource.pool.ConnectionFactory;
import com.atomikos.datasource.pool.ConnectionPoolProperties;
import com.atomikos.datasource.pool.CreateConnectionException;
import com.atomikos.datasource.pool.XPooledConnection;
import com.atomikos.icatch.system.Configuration;
import com.atomikos.jdbc.AtomikosSQLException;
import com.atomikos.util.ClassLoadingHelper;


/**
  *
  *
  * @author guy
  *
  */

class AtomikosNonXAConnectionFactory implements ConnectionFactory
{
 
  private String url;
  private String driverClassName;
  private String user;
  private String password;
  private ConnectionPoolProperties props;
  private int loginTimeout;
  private boolean readOnly;
 
 
  private Driver driver;
  protected Properties connectionProperties = new Properties();
  public AtomikosNonXAConnectionFactory ( ConnectionPoolProperties props ,
      String url , String driverClassName , String user ,
      String password , int loginTimeout , boolean readOnly )
  {
    this.props = props;
    this.user = user;
    this.password = password;
    this.url = url;
    this.driverClassName = driverClassName;
    this.loginTimeout = loginTimeout;
    this.readOnly = readOnly;
  }
 
  public void init() throws SQLException
  {
    try {


      Class driverClass = ClassLoadingHelper.loadClass ( driverClassName );
           
            Object aDriver = driverClass.newInstance();
           
            if ( ! ( aDriver instanceof java.sql.Driver ) ) {
              String msg = "Driver class '" + driverClassName + "' does not seem to be a valid JDBC driver - please check the spelling and verify your JDBC vendor's documentation";
              AtomikosSQLException.throwAtomikosSQLException ( msg );
            }
            driver = (Driver) aDriver;
            if(user!=null){
              connectionProperties.put("user", user)
            }
           
            if(password!=null){
              connectionProperties.put("password",password);
            }
           
        } catch ( InstantiationException e ) {
           AtomikosSQLException.throwAtomikosSQLException ( "Could not instantiate driver class: "
                    + driverClassName );
        } catch ( IllegalAccessException e ) {
           AtomikosSQLException.throwAtomikosSQLException  ( e.getMessage () );
        } catch ( ClassNotFoundException e ) {
           AtomikosSQLException.throwAtomikosSQLException  ( "Driver class not found: '"
                    + driverClassName + "' - please make sure the spelling is correct." );
        }
        DriverManager.setLoginTimeout ( loginTimeout );
  }
 
  private Connection getConnection() throws SQLException
  {
   
    Connection ret = null;
      //case : 61748 Usage of drivermanager is not possible, as it does not respect the ContextClassLoader
        //ret = DriverManager.getConnection ( url , user, password );
      ret= driver.connect(url, connectionProperties);
        return ret;
  }

  public XPooledConnection createPooledConnection()
      throws CreateConnectionException {
    Connection c;
    try {
      c = getConnection();
    } catch (SQLException e) {
      Configuration.logWarning ( "NonXAConnectionFactory: failed to create connection: " , e );
      throw new CreateConnectionException ( "Could not create JDBC connection" , e );
    }
    return new AtomikosNonXAPooledConnection ( c , props , readOnly );
  }

}
TOP

Related Classes of com.atomikos.jdbc.nonxa.AtomikosNonXAConnectionFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.