Author: tolusha
Date: 2011-07-13 07:48:29 -0400 (Wed, 13 Jul 2011)
New Revision: 4623
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java
Log:
EXOJCR-1425: Close all database connections
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java 2011-07-13
11:47:50 UTC (rev 4622)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/creation/RepositoryCreationServiceImpl.java 2011-07-13
11:48:29 UTC (rev 4623)
@@ -38,6 +38,7 @@
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.util.IdGenerator;
+import org.exoplatform.services.jdbc.impl.CloseableDataSource;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.naming.InitialContextInitializer;
@@ -94,12 +95,12 @@
/**
* The default factory class name.
*/
- private static final String BASIC_DATA_SOURCE_FACTORY =
"org.apache.commons.dbcp.BasicDataSourceFactory";
+ private static final String DEFAULT_DATA_SOURCE_FACTORY =
"org.apache.commons.dbcp.BasicDataSourceFactory";
/**
* The factory class name to create object.
*/
- private String factoryClassName = BASIC_DATA_SOURCE_FACTORY;
+ private String factoryClassName = DEFAULT_DATA_SOURCE_FACTORY;
/**
* The Repository service.
@@ -861,8 +862,7 @@
* the repository name
* @throws RepositoryCreationException
*/
- protected void removeRepositoryLocally(String repositoryName)
- throws RepositoryCreationException
+ protected void removeRepositoryLocally(String repositoryName) throws
RepositoryCreationException
{
try
{
@@ -886,7 +886,30 @@
// unbind datasource and close connections
for (String dsName : datasources)
{
- initialContextInitializer.getInitialContextBinder().unbind(dsName);
+ try
+ {
+ // we suppose that lookup() method returns the same instance of datasource
by the same name
+ DataSource ds =
(DataSource)initialContextInitializer.getInitialContext().lookup(dsName);
+ initialContextInitializer.getInitialContextBinder().unbind(dsName);
+
+ // close datasource
+ if (ds instanceof CloseableDataSource)
+ {
+ ((CloseableDataSource)ds).close();
+ }
+ }
+ catch (NamingException e)
+ {
+ LOG.error("Can't unbind datasource " + dsName, e);
+ }
+ catch (FileNotFoundException e)
+ {
+ LOG.error("Can't unbind datasource " + dsName, e);
+ }
+ catch (XMLStreamException e)
+ {
+ LOG.error("Can't unbind datasource " + dsName, e);
+ }
}
}
catch (RepositoryException e)
@@ -897,18 +920,6 @@
{
throw new RepositoryCreationException("Can't remove repository",
e);
}
- catch (FileNotFoundException e)
- {
- throw new RepositoryCreationException("Can't remove repository",
e);
- }
- catch (NamingException e)
- {
- throw new RepositoryCreationException("Can't remove repository",
e);
- }
- catch (XMLStreamException e)
- {
- throw new RepositoryCreationException("Can't remove repository",
e);
- }
}
private DBCreator getDBCreator(DBCreationProperties creationProps) throws
ConfigurationException
Show replies by date