[Jboss-cvs] JBossAS SVN: r55006 - branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Aug 1 20:53:44 EDT 2006
Author: weston.price at jboss.com
Date: 2006-08-01 20:53:42 -0400 (Tue, 01 Aug 2006)
New Revision: 55006
Modified:
branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java
branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
Log:
[JBAS-3453] StaleConnection checker patch implementation.
Modified: branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2006-08-01 23:27:57 UTC (rev 55005)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2006-08-02 00:53:42 UTC (rev 55006)
@@ -26,6 +26,7 @@
import javax.resource.spi.ConnectionRequestInfo;
import javax.resource.spi.ManagedConnection;
import javax.resource.spi.ManagedConnectionMetaData;
+import javax.resource.spi.ResourceAdapterInternalException;
import javax.security.auth.Subject;
import org.jboss.logging.Logger;
@@ -248,13 +249,33 @@
}
}
- void connectionError(SQLException e)
+ Throwable connectionError(Throwable t)
{
- if (mcf.isExceptionFatal(e))
- broadcastConnectionError(e);
+ if(t instanceof SQLException)
+ {
+ if(mcf.isStaleConnection((SQLException)t))
+ {
+ t = new StaleConnectionException((SQLException)t);
+
+ }else
+ {
+ if(mcf.isExceptionFatal((SQLException)t))
+ {
+ broadcastConnectionError(t);
+
+ }
+ }
+ }
+ else
+ {
+ broadcastConnectionError(t);
+ }
+
+ return t;
}
- protected void broadcastConnectionError(SQLException e)
+
+ protected void broadcastConnectionError(Throwable e)
{
synchronized (stateLock)
{
@@ -267,7 +288,16 @@
}
}
- ConnectionEvent ce = new ConnectionEvent(this, ConnectionEvent.CONNECTION_ERROR_OCCURRED, e);
+ Exception ex = null;
+ if(e instanceof Exception)
+ {
+ ex = (Exception)e;
+ }else
+ {
+ ex = new ResourceAdapterInternalException("Unexpected error", e);
+ }
+
+ ConnectionEvent ce = new ConnectionEvent(this, ConnectionEvent.CONNECTION_ERROR_OCCURRED, ex);
Collection copy = null;
synchronized(cels)
{
Modified: branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java 2006-08-01 23:27:57 UTC (rev 55005)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java 2006-08-02 00:53:42 UTC (rev 55006)
@@ -88,6 +88,12 @@
*/
protected ValidConnectionChecker connectionChecker;
+ /** The instance of the stale connection checker */
+ protected StaleConnectionChecker staleConnectionChecker;
+
+ /** The staleConnectionCheckerClassName */
+ private String staleConnectionCheckerClassName;
+
private String exceptionSorterClassName;
private ExceptionSorter exceptionSorter;
@@ -394,6 +400,42 @@
return null;
}
+ boolean isStaleConnection(SQLException e)
+ {
+ boolean isStale = false;
+
+ if(staleConnectionChecker != null)
+ {
+
+ isStale = staleConnectionChecker.isStaleConnection(e);
+
+ }
+
+ if(staleConnectionCheckerClassName != null)
+ {
+
+ try
+ {
+
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ Class clazz = cl.loadClass(staleConnectionCheckerClassName);
+ staleConnectionChecker = (StaleConnectionChecker)clazz.newInstance();
+ isStale = staleConnectionChecker.isStaleConnection(e);
+
+ }catch (Exception ex2)
+ {
+ log.warn("exception trying to create stale connection checker (disabling)" + staleConnectionCheckerClassName, ex2);
+ staleConnectionChecker = new NullStaleConnectionChecker();
+
+ }
+
+ }
+
+ return isStale;
+ }
+
+
+
static class SubjectActions implements PrivilegedAction
{
Subject subject;
Modified: branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java
===================================================================
--- branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2006-08-01 23:27:57 UTC (rev 55005)
+++ branches/JBoss_4_0_3_SP1_JBAS_3453/connector/src/main/org/jboss/resource/adapter/jdbc/WrappedConnection.java 2006-08-02 00:53:42 UTC (rev 55006)
@@ -18,6 +18,7 @@
import java.util.Map;
import org.jboss.logging.Logger;
+import org.jboss.util.NestedSQLException;
/**
* A wrapper for a connection.
@@ -536,11 +537,22 @@
* @param e a <code>SQLException</code> value
* @exception Exception if an error occurs
*/
- protected void checkException(SQLException e) throws SQLException
+ protected SQLException checkException(Throwable t) throws SQLException
{
+ Throwable result = null;
+
if (mc != null)
- mc.connectionError(e);
- throw e;
+ result = mc.connectionError(t);
+
+ if (result instanceof SQLException)
+ {
+ throw (SQLException) result;
+ }
+ else
+ {
+ throw new NestedSQLException("Error", result);
+ }
+
}
int getTrackStatements()
More information about the jboss-cvs-commits
mailing list