removed the hardly used adaptor stuff. improved config checking on servlet initialization
[mir.git] / source / mir / servlet / AbstractServlet.java
index 67c634a..93c7b41 100755 (executable)
@@ -33,6 +33,7 @@ import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Locale;
+import java.sql.*;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -41,22 +42,23 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import mir.config.MirPropertiesConfiguration;
-import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
-import mir.log.LoggerWrapper;
-import mir.storage.DatabaseAdaptor;
 
-import com.codestudio.util.JDBCPool;
+import com.codestudio.util.*;
 import com.codestudio.util.JDBCPoolMetaData;
 import com.codestudio.util.SQLManager;
 
+import mir.config.MirPropertiesConfiguration;
+import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
+import mir.log.LoggerWrapper;
+import mircoders.global.*;
+
 /**
  * Title:        Mir
  * Description:  Abstract servlet-class
  * Copyright:    Copyright (c) 2001, 2002
  * Company:      Mir-coders group
  * @author       idfx, the Mir-coders group
- * @version      $Id: AbstractServlet.java,v 1.30.2.1 2003/06/13 03:54:08 zapata Exp $
+ * @version      $Id: AbstractServlet.java,v 1.30.2.2 2003/06/27 02:43:42 zapata Exp $
  */
 
 public abstract class AbstractServlet extends HttpServlet {
@@ -147,34 +149,29 @@ public abstract class AbstractServlet extends HttpServlet {
     try {
       configuration = MirPropertiesConfiguration.instance();
     }
-    catch (PropertiesConfigExc e) {
-      throw new ServletException(e);
+    catch (Throwable t) {
+      logger.fatal("can't read configuration: " + t.toString());
+      throw new ServletException("can't read configuration: " + t.toString());
+    }
+
+    try {
+      MirGlobal.localizer();
+    }
+    catch (Throwable t) {
+      logger.fatal("can't get localizer: " + t.toString());
+      throw new ServletException("can't get localizer: " + t.toString());
     }
 
     String dbUser = configuration.getString("Database.Username");
     String dbPassword = configuration.getString("Database.Password");
     String dbHost = configuration.getString("Database.Host");
+    String dbPort = configuration.getString("Database.Port");
     String dbAdapName = configuration.getString("Database.Adaptor");
     String dbName = configuration.getString("Database.Name");
-
-    DatabaseAdaptor adaptor;
-    try {
-      adaptor = (DatabaseAdaptor) Class.forName(dbAdapName).newInstance();
-    }
-    catch (Exception e) {
-      throw new ServletException("Could not load DB adapator: " +
-                                 e.toString());
-    }
-
-    String dbDriver;
-    String dbUrl;
-    try {
-      dbDriver = adaptor.getDriver();
-      dbUrl = adaptor.getURL(dbUser, dbPassword, dbHost);
-    }
-    catch (Exception e) {
-      throw new ServletException(e);
-    }
+    String dbDriver = configuration.getString("Database.Driver");
+    String dbUrl = "jdbc:postgresql://"+dbHost+":"+dbPort+"/"+dbName;
+    int dbMin = configuration.getInteger("Database.poolMin", 1);
+    int dbMax = configuration.getInteger("Database.poolMax", 10);
 
     JDBCPoolMetaData meta = new JDBCPoolMetaData();
     meta.setDbname(dbName);
@@ -183,19 +180,29 @@ public abstract class AbstractServlet extends HttpServlet {
     meta.setUserName(dbUser);
     meta.setPassword(dbPassword);
     meta.setJNDIName("mir");
-    meta.setMaximumSize(10);
-    meta.setMinimumSize(1);
+    meta.setMaximumSize(dbMax);
+    meta.setMinimumSize(dbMin);
     meta.setPoolPreparedStatements(false);
     meta.setCacheEnabled(false);
     meta.setCacheSize(15);
     meta.setDebugging(false);
-//    meta.setLogFile(dblogfile+".pool");
 
     SQLManager manager = SQLManager.getInstance();
+
     JDBCPool pool = null;
     if (manager != null) {
       pool = manager.createPool(meta);
     }
+
+    Connection connection;
+    try {
+      connection = pool.requestConnection();
+      pool.closeConnection(connection);
+    }
+    catch (Throwable t) {
+      logger.fatal("Can't connect to database: " + t.toString());
+      throw new ServletException("Can't connect to database: " + t.toString());
+    }
   }
 
   private void setEncoding(HttpServletRequest request){