[jboss-svn-commits] JBL Code SVN: r12339 - in labs/jbossesb/trunk/product/core/rosetta/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
Tue Jun 5 13:26:13 EDT 2007


Author: kurt.stam at jboss.com
Date: 2007-06-05 13:26:12 -0400 (Tue, 05 Jun 2007)
New Revision: 12339

Added:
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java
Log:
JBESB-500 moving the message-store to jbossesb.esb

Added: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java	2007-06-05 17:26:12 UTC (rev 12339)
@@ -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);
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerException.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java	2007-06-05 17:26:12 UTC (rev 12339)
@@ -0,0 +1,40 @@
+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.util.ClassUtil;
+
+public class ConnectionManagerFactory {
+	
+    private static String DEFAULT = J2eeConnectionManager.class.getName();
+	private static Logger logger = Logger.getLogger(ConnectionManagerFactory.class);
+	
+	public static ConnectionManager getConnectionManager() throws ConnectionManagerException
+    {
+		ConnectionManager manager = null;
+        String className = Configuration.getStoreDBConnectionManager();
+        //If not specified use the default
+        if (className==null) {
+            className = DEFAULT;
+        }
+		logger.log(Priority.DEBUG, "Going to load " + className);
+		try{
+			// instruct class loader to load the connection manager
+			Class managerClass = ClassUtil.forName(className, ConnectionManagerFactory.class);
+			ConnectionManager tmp = (ConnectionManager) managerClass.newInstance();
+            manager = tmp.getInstance();
+		}
+		catch (ClassNotFoundException cnfex)
+		{
+			throw new ConnectionManagerException("Connection Manager Implementation=" + className
+					+ " not found", cnfex);
+		} catch (Exception e) {
+			throw new ConnectionManagerException("Invocation exception. "
+					+ e.getLocalizedMessage(), e);
+		}
+		return manager;
+	}
+
+}


Property changes on: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/ConnectionManagerFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java	2007-06-05 17:26:12 UTC (rev 12339)
@@ -0,0 +1,81 @@
+package org.jboss.soa.esb.persistence.manager;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+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;
+
+/**
+ * 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 datasource.getConnection();
+    }
+
+    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 = new InitialContext();
+            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");
+            } 
+            String dataSourcename = Configuration.getStoreDBDatasourceName();
+            datasource =  ((DataSource) oJndiCtx.lookup(dataSourcename));
+        }
+        catch (Exception ex)
+        {
+                throw new ConfigurationException(ex);
+        }
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/J2eeConnectionManager.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java	2007-06-05 17:26:12 UTC (rev 12339)
@@ -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;
+    }
+
+}


Property changes on: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/persistence/manager/StandaloneConnectionManager.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list