import java.sql.SQLException;\r
import java.util.Properties;\r
\r
+import javax.sql.DataSource;\r
+\r
+import org.apache.commons.dbcp.BasicDataSource;\r
+import org.apache.commons.pool.impl.GenericObjectPool;\r
import org.apache.log4j.Logger;\r
import org.h2.tools.Server;\r
import org.springframework.jdbc.CannotGetJdbcConnectionException;\r
-import org.springframework.jdbc.datasource.DriverManagerDataSource;\r
\r
import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
*\r
*/\r
\r
-public class LocalH2 extends DriverManagerDataSource {\r
+public class LocalH2 extends BasicDataSource {\r
private static final Logger logger = Logger.getLogger(LocalH2.class);\r
\r
private String sep = System.getProperty("file.separator");\r
* @throws CannotGetJdbcConnectionException\r
*/\r
public LocalH2(String url) throws CannotGetJdbcConnectionException {\r
- super(url);\r
+ super();\r
+ this.setUrl(url);\r
setDriverClassName(DEFAULT_DRIVER_CLASS_NAME);\r
}\r
\r
+ /* FIXME This is a workaround to solve a problem with dbcp connection pooling.\r
+ * Remove this when dbcp connection pool gets configured correctly\r
+ * \r
+ * (non-Javadoc)\r
+ * @see org.apache.commons.dbcp.BasicDataSource#createDataSource()\r
+ */\r
+ @Override\r
+ protected synchronized DataSource createDataSource() throws SQLException {\r
+ super.createDataSource();\r
+ connectionPool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_GROW);\r
+ return dataSource;\r
+ }\r
+ \r
/**\r
* @param url\r
* @param username\r
*/\r
public LocalH2(String url, String username, String password)\r
throws CannotGetJdbcConnectionException {\r
- super(url, username, password);\r
- this.setDriverClassName(DEFAULT_DRIVER_CLASS_NAME);\r
+ this(url);\r
+ this.setUsername(username);\r
+ this.setPassword(password);\r
}\r
\r
/**\r
*/\r
public LocalH2(String driverClassName, String url, String username,\r
String password) throws CannotGetJdbcConnectionException {\r
- super(driverClassName, url, username, password);\r
+ this(url, username, password);\r
+ this.setDriverClassName(driverClassName);\r
}\r
\r
//** ********************************************************************************/\r