Class ConnectionFactory

java.lang.Object
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 Details

    • ConnectionFactory

      public ConnectionFactory()
  • Method Details

    • 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