[jboss-svn-commits] JBL Code SVN: r16089 - in labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb: listeners/gateway and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 26 11:52:26 EDT 2007


Author: tcunning
Date: 2007-10-26 11:52:26 -0400 (Fri, 26 Oct 2007)
New Revision: 16089

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/JdbcCleanConn.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
Log:
bug:JBESB-1247
Add reconnect logic to SQL listener.


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/JdbcCleanConn.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/JdbcCleanConn.java	2007-10-26 15:47:14 UTC (rev 16088)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/JdbcCleanConn.java	2007-10-26 15:52:26 UTC (rev 16089)
@@ -48,7 +48,7 @@
 		m_oDS = p_oDS;
 		m_oLogger = Logger.getLogger(this.getClass());
 	}
-
+	
 	public void commit() throws SQLException
 	{
 		if (null != m_conn)
@@ -65,6 +65,10 @@
 		}
 	}
 
+	public List<PreparedStatement> getStatements() {
+		return m_olPrepSt;
+	}
+	
 	public void release()
 	{
 		if (null != m_conn)
@@ -123,7 +127,7 @@
 
 	public ResultSet execQueryWait(PreparedStatement p_PS, int p_iQtry)
 			throws SQLException
-	{
+	{		
 		if (null == m_conn)
 		{
 			connect();
@@ -141,18 +145,17 @@
 			{
 				if (null == eRet)
 					eRet = e;
-
-				// TODO magic number!!
-
-				try
-				{
+				
+				try {
 					Thread.sleep(100 + (new Double(100 * Math.random()))
 							.longValue());
-				}
-				catch (InterruptedException ex)
-				{
+				} catch (InterruptedException ex) {
 					m_oLogger.debug("Thread interrupted.", ex);
 				}
+				
+				release();
+				m_conn = null;
+				
 			}
 		}
 		m_oLogger.debug("execQueryWait() FAILED", eRet);
@@ -189,6 +192,10 @@
 				{
 					m_oLogger.debug("Thread interrupted.", ex);
 				}
+				
+				release();
+				m_conn = null;
+
 			}
 		}
 		m_oLogger.debug("execUpdWait() FAILED", eRet);

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java	2007-10-26 15:47:14 UTC (rev 16088)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java	2007-10-26 15:52:26 UTC (rev 16089)
@@ -24,6 +24,7 @@
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.SQLException;
 
 import javax.sql.DataSource;
 
@@ -53,7 +54,7 @@
 	private String m_sUrl, m_sUsr, m_sPwd;
 
 	private Connection m_oConn;
-
+	
 	public static final String DRIVER = "driver-class";
 
 	public static final String URL = "connection-url";
@@ -124,8 +125,16 @@
 		}
 	} // ________________________________
 
-	public Connection getConnection ()
+	public Connection getConnection() throws SQLException
 	{
+		if ((m_oConn == null) || (m_oConn.isClosed())) {
+				m_oConn = getConnection(m_sUsr, m_sPwd);
+		}
+		
+		if (m_oConn == null) {
+			throw new SQLException();
+		}
+		
 		return m_oConn;
 	}
 
@@ -139,7 +148,9 @@
 		}
 		catch (Exception e)
 		{
-			_logger.error("Can't obtain datasource", e);
+			_logger.error("Could not create connection for " + m_sUrl + " - datasource may be unavailable.  "
+					+ "See server log for details.");
+			_logger.debug("Can't obtain datasource", e);
 			m_oConn = null;
 		}
 		return m_oConn;

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-10-26 15:47:14 UTC (rev 16088)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-10-26 15:52:26 UTC (rev 16089)
@@ -127,13 +127,9 @@
 
         boolean failure = true;
         try {
-            prepareStatements();
+        	_dbConn = getDbConn();
             failure = false;
         }
-        catch (final SQLException sqle) {
-            throw new ManagedLifecycleException(
-                    "Unexpected error initialising statements", sqle);
-        }
         finally {
             if (failure) {
                 if (_dbConn != null) {
@@ -397,9 +393,9 @@
     } // ________________________________
 
     protected void prepareStatements() throws SQLException {
-        _PSscan = getDbConn().prepareStatement(scanStatement());
-        _PSupdate = getDbConn().prepareStatement(updateStatement());
-        _PSdeleteRow = getDbConn().prepareStatement(deleteStatement());
+        _PSscan = _dbConn.prepareStatement(scanStatement());
+        _PSupdate = _dbConn.prepareStatement(updateStatement());
+        _PSdeleteRow = _dbConn.prepareStatement(deleteStatement());
     } // ________________________________
 
     /*
@@ -510,7 +506,16 @@
             DataSource oDS = new SimpleDataSource(_driver, _url, _user,
                     _password);
             _dbConn = new JdbcCleanConn(oDS);
+        } 
+      
+        if ((null != _dbConn) && (_dbConn.getStatements().size() == 0)) {
+        	try {
+				prepareStatements();
+			} catch (SQLException e) {
+				_logger.debug("Exception preparing statements", e);
+			}
         }
+	        
         return _dbConn;
     } // ________________________________
 




More information about the jboss-svn-commits mailing list