ProxoolConnectionProviderpublic class ProxoolConnectionProvider extends Object implements ConnectionProviderA connection provider that uses a Proxool connection pool. Hibernate will use this by
default if the hibernate.proxool.* properties are set. |
Fields Summary |
---|
private static final String | PROXOOL_JDBC_STEM | private static final Log | log | private String | proxoolAlias | private boolean | existingPool | private Integer | isolation | private boolean | autocommit |
Methods Summary |
---|
public void | close()Release all resources held by this provider. JavaDoc requires a second sentence.
// If the provider was leeching off an existing pool don't close it
if (existingPool) {
return;
}
// We have created the pool ourselves, so shut it down
try {
ProxoolFacade.shutdown(0);
}
catch (Exception e) {
// If you're closing down the ConnectionProvider chances are an
// is not a real big deal, just warn
log.warn("Exception occured when closing the Proxool pool", e);
throw new HibernateException("Exception occured when closing the Proxool pool", e);
}
| public void | closeConnection(java.sql.Connection conn)Dispose of a used connection.
conn.close();
| public void | configure(java.util.Properties props)Initialize the connection provider from given properties.
// Get the configurator files (if available)
String jaxpFile = props.getProperty(Environment.PROXOOL_XML);
String propFile = props.getProperty(Environment.PROXOOL_PROPERTIES);
String externalConfig = props.getProperty(Environment.PROXOOL_EXISTING_POOL);
// Default the Proxool alias setting
proxoolAlias = props.getProperty(Environment.PROXOOL_POOL_ALIAS);
// Configured outside of Hibernate (i.e. Servlet container, or Java Bean Container
// already has Proxool pools running, and this provider is to just borrow one of these
if ( "true".equals(externalConfig) ) {
// Validate that an alias name was provided to determine which pool to use
if ( !StringHelper.isNotEmpty(proxoolAlias) ) {
String msg = "Cannot configure Proxool Provider to use an existing in memory pool without the " + Environment.PROXOOL_POOL_ALIAS + " property set.";
log.fatal(msg);
throw new HibernateException(msg);
}
// Append the stem to the proxool pool alias
proxoolAlias = PROXOOL_JDBC_STEM + proxoolAlias;
// Set the existing pool flag to true
existingPool = true;
log.info("Configuring Proxool Provider using existing pool in memory: " + proxoolAlias);
// Configured using the JAXP Configurator
}
else if ( StringHelper.isNotEmpty(jaxpFile) ) {
log.info("Configuring Proxool Provider using JAXPConfigurator: " + jaxpFile);
// Validate that an alias name was provided to determine which pool to use
if ( !StringHelper.isNotEmpty(proxoolAlias) ) {
String msg = "Cannot configure Proxool Provider to use JAXP without the " + Environment.PROXOOL_POOL_ALIAS + " property set.";
log.fatal(msg);
throw new HibernateException(msg);
}
try {
JAXPConfigurator.configure( ConfigHelper.getConfigStreamReader(jaxpFile), false );
}
catch (ProxoolException e) {
String msg = "Proxool Provider unable to load JAXP configurator file: " + jaxpFile;
log.fatal(msg, e);
throw new HibernateException(msg, e);
}
// Append the stem to the proxool pool alias
proxoolAlias = PROXOOL_JDBC_STEM + proxoolAlias;
log.info("Configuring Proxool Provider to use pool alias: " + proxoolAlias);
// Configured using the Properties File Configurator
}
else if ( StringHelper.isNotEmpty(propFile) ) {
log.info("Configuring Proxool Provider using Properties File: " + propFile);
// Validate that an alias name was provided to determine which pool to use
if ( !StringHelper.isNotEmpty(proxoolAlias) ) {
String msg = "Cannot configure Proxool Provider to use Properties File without the " + Environment.PROXOOL_POOL_ALIAS + " property set.";
log.fatal(msg);
throw new HibernateException(msg);
}
try {
PropertyConfigurator.configure( ConfigHelper.getConfigProperties(propFile) );
}
catch (ProxoolException e) {
String msg = "Proxool Provider unable to load load Property configurator file: " + propFile;
log.fatal(msg, e);
throw new HibernateException(msg, e);
}
// Append the stem to the proxool pool alias
proxoolAlias = PROXOOL_JDBC_STEM + proxoolAlias;
log.info("Configuring Proxool Provider to use pool alias: " + proxoolAlias);
}
// Remember Isolation level
isolation = PropertiesHelper.getInteger(Environment.ISOLATION, props);
if (isolation!=null) {
log.info("JDBC isolation level: " + Environment.isolationLevelToString( isolation.intValue() ) );
}
autocommit = PropertiesHelper.getBoolean(Environment.AUTOCOMMIT, props);
log.info("autocommit mode: " + autocommit);
| public java.sql.Connection | getConnection()Grab a connection
// get a connection from the pool (thru DriverManager, cfr. Proxool doc)
Connection c = DriverManager.getConnection(proxoolAlias);
// set the Transaction Isolation if defined
if (isolation!=null) c.setTransactionIsolation( isolation.intValue() );
// toggle autoCommit to false if set
if ( c.getAutoCommit()!=autocommit ) c.setAutoCommit(autocommit);
// return the connection
return c;
| public boolean | supportsAggressiveRelease()
return false;
|
|