[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