[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