[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