[Jboss-cvs] JBossAS SVN: r54925 - trunk/connector/src/main/org/jboss/resource/adapter/jdbc
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jul 31 14:55:45 EDT 2006
Author: weston.price at jboss.com
Date: 2006-07-31 14:55:43 -0400 (Mon, 31 Jul 2006)
New Revision: 54925
Modified:
trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java
Log:
[JBAS-3359] Stale connection implementation.
Modified: trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2006-07-31 18:53:30 UTC (rev 54924)
+++ trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnection.java 2006-07-31 18:55:43 UTC (rev 54925)
@@ -284,12 +284,32 @@
}
}
- void connectionError(Throwable t)
+ Throwable connectionError(Throwable t)
{
- if (t instanceof SQLException == false || mcf.isExceptionFatal((SQLException) t))
- broadcastConnectionError(t);
+ 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(Throwable e)
{
synchronized (stateLock)
Modified: trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java
===================================================================
--- trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java 2006-07-31 18:53:30 UTC (rev 54924)
+++ trunk/connector/src/main/org/jboss/resource/adapter/jdbc/BaseWrapperManagedConnectionFactory.java 2006-07-31 18:55:43 UTC (rev 54925)
@@ -108,6 +108,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;
@@ -253,6 +259,18 @@
this.checkValidConnectionSQL = checkValidConnectionSQL;
}
+ public void setStaleConnectionCheckerClassName(String value)
+ {
+ staleConnectionCheckerClassName = value;
+
+ }
+
+ public String getStaleConnectionCheckerClassName()
+ {
+ return staleConnectionCheckerClassName;
+
+ }
+
public String getTrackStatements()
{
if (trackStatements == TRACK_STATEMENTS_FALSE_INT)
@@ -457,6 +475,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;
More information about the jboss-cvs-commits
mailing list