org.apache.jackrabbit.core.util.db
Class ConnectionFactory

java.lang.Object
  extended by org.apache.jackrabbit.core.util.db.ConnectionFactory

public final class ConnectionFactory
extends Object

A factory for new database connections. Supported are regular JDBC drivers, as well as JNDI resources. FIXME: the registry currently is ClassLoader wide. I.e., if you start two repositories then you share the registered datasources...


Constructor Summary
ConnectionFactory()
           
 
Method Summary
 void close()
           
 String getDataBaseType(String logicalName)
           
 DataSource getDataSource(String logicalName)
          Retrieves a configured data source by logical name.
 DataSource getDataSource(String driver, String url, String user, String password)
          Retrieve a DataSource for the specified properties.
 void registerDataSources(DataSourceConfig dsc)
          Registers a number of data sources.
static Connection unwrap(Connection con)
          Needed for pre-10R2 Oracle blob support....:( This method actually assumes that we are using commons DBCP 1.2.2.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConnectionFactory

public ConnectionFactory()
Method Detail

registerDataSources

public void registerDataSources(DataSourceConfig dsc)
                         throws RepositoryException
Registers a number of data sources.

Parameters:
dsc - the DataSourceConfig which contains the configuration
Throws:
RepositoryException

getDataSource

public DataSource getDataSource(String logicalName)
                         throws RepositoryException
Retrieves a configured data source by logical name.

Parameters:
logicalName - the name of the DataSource
Returns:
a DataSource
Throws:
RepositoryException - if there is no DataSource with the given name

getDataBaseType

public String getDataBaseType(String logicalName)
                       throws RepositoryException
Parameters:
logicalName - the name of the DataSource
Returns:
the configured database type
Throws:
RepositoryException - if there is no DataSource with the given name

getDataSource

public DataSource getDataSource(String driver,
                                String url,
                                String user,
                                String password)
                         throws RepositoryException,
                                SQLException
Retrieve a DataSource for the specified properties. This can be a JNDI Data Source as well. To do that, the driver class name must reference a javax.naming.Context class (for example javax.naming.InitialContext), and the URL must be the JNDI URL (for example java:comp/env/jdbc/Test).

Parameters:
driver - the JDBC driver or the Context class
url - the database URL
user - the user name
password - the password
Returns:
the DataSource
Throws:
RepositoryException - if the driver could not be loaded
SQLException - if the connection could not be established

close

public void close()

unwrap

public static Connection unwrap(Connection con)
                         throws SQLException
Needed for pre-10R2 Oracle blob support....:( This method actually assumes that we are using commons DBCP 1.2.2.

Parameters:
con - the commons-DBCP DelegatingConnection to unwrap
Returns:
the unwrapped connection
Throws:
SQLException


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.