[jboss-svn-commits] JBL Code SVN: r9938 - in labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence: manager and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Mar 3 16:09:55 EST 2007
Author: daniel.brum at jboss.com
Date: 2007-03-03 16:09:54 -0500 (Sat, 03 Mar 2007)
New Revision: 9938
Added:
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java
labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java
Log:
support for multiple connection pool managers
Added: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java (rev 0)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java 2007-03-03 21:09:54 UTC (rev 9938)
@@ -0,0 +1,19 @@
+package org.jboss.soa.esb.persistence.manager;
+
+public class ConnectionManagerException extends Exception {
+
+private static final long serialVersionUID = 1L;
+
+ public ConnectionManagerException(){
+ super();
+ }
+
+ public ConnectionManagerException (String msg){
+ super(msg);
+ }
+
+ public ConnectionManagerException (String msg, Throwable cause){
+ super (msg, cause);
+ }
+
+}
Added: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java (rev 0)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java 2007-03-03 21:09:54 UTC (rev 9938)
@@ -0,0 +1,44 @@
+package org.jboss.soa.esb.persistence.manager;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.Priority;
+import org.jboss.internal.soa.esb.persistence.manager.ConnectionManager;
+import org.jboss.soa.esb.common.Configuration;
+import org.jboss.soa.esb.common.Factory;
+
+public class ConnectionManagerFactory extends Factory {
+
+ private static Logger logger = Logger.getLogger(ConnectionManagerFactory.class);
+
+ public static ConnectionManager getConnectionManager() throws ConnectionManagerException{
+
+ ConnectionManager manager = null;
+ String className = Configuration.getStoreDBConnectionManager();
+ logger.log(Priority.DEBUG, "Going to load " + className);
+ try
+ {
+ // instruct class loader to load the connection manager
+ Class managerClass = getClassForName(className);
+ ConnectionManager tmp = (ConnectionManager) managerClass.newInstance();
+ manager = tmp.getInstance();
+ tmp=null;
+
+ }
+ catch (ClassNotFoundException cnfex)
+ {
+ throw new ConnectionManagerException("Connection Manager Implementation=" + className
+ + " not found", cnfex);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+
+ throw new ConnectionManagerException("Invocation exception. "
+ + e.getLocalizedMessage(), e);
+ }
+
+
+ return manager;
+ }
+
+}
Added: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java (rev 0)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java 2007-03-03 21:09:54 UTC (rev 9938)
@@ -0,0 +1,85 @@
+package org.jboss.soa.esb.persistence.manager;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.naming.Context;
+import javax.sql.DataSource;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.persistence.manager.ConnectionManager;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.common.Configuration;
+import org.jboss.soa.esb.helpers.NamingContext;
+
+/**
+ * J2EE datasource based Connection Pooling implementation for use when deploying to a J2EE container
+ *
+ */
+public class J2eeConnectionManager implements ConnectionManager {
+
+ private static J2eeConnectionManager instance = null;
+ @SuppressWarnings("unused")
+ private DataSource datasource = null;
+ private Context oJndiCtx = null;
+
+ private static Logger _logger = Logger.getLogger(J2eeConnectionManager.class);
+ private static final Object foo = new Integer(0);
+
+ public Connection getConnection() throws SQLException {
+
+ return null;
+ }
+
+ public ConnectionManager getInstance() {
+ if (null != instance)
+ {
+ return instance;
+ }
+
+ synchronized (foo)
+ {
+ if (null != instance)
+ return instance;
+
+ try
+ {
+ instance = new J2eeConnectionManager();
+ instance.init();
+ }
+ catch (Exception e)
+ {
+ _logger.error("Could not initialise instance.", e);
+
+ return null;
+ }
+
+ return instance;
+ }
+ }
+
+ public void init() throws ConfigurationException {
+ _logger.info("initializing...");
+
+// try
+// {
+ oJndiCtx = NamingContext.getServerContext(Configuration.getJndiServerURL(),
+ Configuration.getJndiServerContextFactory(), Configuration.getJndiServerPkgPrefix());
+
+ if (null == oJndiCtx) {
+ _logger.error("could not get a valid context");
+ throw new ConfigurationException("could not get a valid context - check your settings in the config file");
+ }
+ try
+ {
+ datasource = ((DataSource) oJndiCtx.lookup(Configuration.getStoreDBDatasourceName()));
+ }
+ catch (Exception ex)
+ {
+ _logger.error(ex);
+ throw new ConfigurationException(ex);
+ }
+
+ }
+
+}
Added: labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java (rev 0)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java 2007-03-03 21:09:54 UTC (rev 9938)
@@ -0,0 +1,141 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author daniel.brum at jboss.com
+ */
+
+package org.jboss.soa.esb.persistence.manager;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.persistence.manager.ConnectionManager;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.common.Configuration;
+
+import com.mchange.v2.c3p0.ComboPooledDataSource;
+
+/**
+ * C3PO Connection Pooling implementation for stand-alone use, outside of a J2EE container
+ *
+ */
+public class StandaloneConnectionManager implements ConnectionManager
+{
+
+ private static StandaloneConnectionManager instance = null;
+
+ protected ComboPooledDataSource pooledDS = null;
+
+ private static final Object foo = new Integer(0);
+
+ private static Logger _logger = Logger.getLogger(StandaloneConnectionManager.class);
+
+ protected StandaloneConnectionManager ()
+ {
+ }
+
+ public ConnectionManager getInstance ()
+ {
+ if (null != instance)
+ {
+ return instance;
+ }
+
+ synchronized (foo)
+ {
+ if (null != instance)
+ return instance;
+
+ try
+ {
+ instance = new StandaloneConnectionManager();
+ instance.init();
+ }
+ catch (Exception e)
+ {
+ _logger.error("Could not initialise instance.", e);
+
+ return null;
+ }
+
+ return instance;
+ }
+ }
+
+ public void init () throws ConfigurationException
+ {
+ _logger.info("initializing...");
+ pooledDS = new ComboPooledDataSource();
+
+ try
+ {
+ pooledDS.setDriverClass(Configuration.getStoreDriver());
+ pooledDS.setJdbcUrl(Configuration.getStoreUrl());
+ pooledDS.setUser(Configuration.getStoreUser());
+ pooledDS.setPassword(Configuration.getStorePwd());
+ pooledDS.setMinPoolSize(Integer.valueOf(Configuration
+ .getStorePoolMinSize()));
+ pooledDS.setInitialPoolSize(Integer.valueOf(Configuration
+ .getStorePoolInitialSize()));
+ pooledDS.setMaxPoolSize(Integer.valueOf(Configuration
+ .getStorePoolMaxSize()));
+ pooledDS.setAutomaticTestTable(Configuration.getStorePoolTestTable());
+ pooledDS.setCheckoutTimeout(Integer.valueOf(Configuration
+ .getStorePoolTimeoutMillis()));
+ }
+ catch (Exception ex)
+ {
+ throw new ConfigurationException(ex);
+ }
+ }
+
+ public Connection getConnection () throws SQLException
+ {
+ Connection conn = null;
+
+ // TODO: figure out why this is neccessary - pool should never return
+ // null if DB is up and can connect
+ // testing showed null was being returned from pool in QA test
+ // MessageStoreTest
+
+ while (true)
+ {
+ if (null != pooledDS)
+ {
+ if (null != (conn = pooledDS.getConnection()))
+ break;
+ else
+ _logger.error("Null pooledDS");
+ }
+
+ try
+ {
+ // TODO magic number
+
+ Thread.sleep(1000);
+ }
+ catch (Exception e)
+ {
+ }
+ }
+
+ return conn;
+ }
+
+}
More information about the jboss-svn-commits
mailing list