diff geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java @ 551:1f6e2b256247

Improved the Objectvalidation of the ArcSDE-Databaseconnections geo-backend/trunk@544 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 15 Jan 2010 10:09:41 +0000
parents ff1b7967e6b9
children 5b536542ef56
line wrap: on
line diff
--- a/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java	Tue Jan 12 00:27:53 2010 +0000
+++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/connectionpool/ArcSDEPoolableObjectFactory.java	Fri Jan 15 10:09:41 2010 +0000
@@ -23,6 +23,8 @@
      * the logger, used to log exceptions and additonaly information
      */
     private static Logger log = Logger.getLogger(ArcSDEPoolableObjectFactory.class);
+    
+    private int serverRoundtripInterval = 1000 * 30;// 30 Sekunden
     /**
      * The URL to the ArcSDE Server
      */
@@ -56,11 +58,22 @@
         this.username = properties.getProperty("username");
         this.credentials = properties.getProperty("credentials");
         
+        try {
+            String serverRoundtripIntervalValue = properties.getProperty("serverRoundtripInterval");
+            if (serverRoundtripIntervalValue != null){
+                this.serverRoundtripInterval = Integer.parseInt(serverRoundtripIntervalValue);
+            }
+        } catch (NumberFormatException e) {
+            log.error(e,e);
+        }
+        
         log.info("ArcSDEPoolableObjectFactory initialized");
         log.info("Server: "+this.server);
         log.info("Port: "+this.port);
         log.info("Database: "+this.database);
         log.info("User: "+this.username);
+        log.info("Testtimeout: "+this.serverRoundtripInterval);
+        
         }
 
     /**
@@ -89,7 +102,7 @@
         log.debug("ArcSDEPoolableObjectFactory.makeObject");
         Connection con;
         try {
-            con = new ArcSDEConnection(this.server, this.port, this.database, this.username, this.credentials);
+            con = new ArcSDEConnection(this.server, this.port, this.database, this.username, this.credentials, this.serverRoundtripInterval);
         }
         catch (ConnectionException e) {
             throw new ConnectionException("Establishing a connection to database failed: " + e.toString(), e);
@@ -109,10 +122,11 @@
      */
     public boolean validateObject(Object arg0) {
         log.debug("ArcSDEPoolableObjectFactory.validateObject");
+        
         boolean returnValue = false;
         try {
             returnValue = arg0 instanceof ArcSDEConnection
-                ? !((ArcSDEConnection)arg0).isClosed()
+                ? ((ArcSDEConnection)arg0).isValid(this.serverRoundtripInterval)
                 : false;
         }
         catch (SQLException sqle) {}

http://dive4elements.wald.intevation.org