X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fmisc%2FMirConfig.java;h=c628d480ea2a675d3ac403e7b21d7caedfced334;hb=bcd0c64b09ce0e8f3e6260f76f3a253863c74e60;hp=d6cd48599a120e6e44d5685e366f5f0dad2537f3;hpb=99423e2e02c89aff55d9086e72667699a86f6a27;p=mir.git diff --git a/source/mir/misc/MirConfig.java b/source/mir/misc/MirConfig.java index d6cd4859..c628d480 100755 --- a/source/mir/misc/MirConfig.java +++ b/source/mir/misc/MirConfig.java @@ -1,11 +1,47 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Mir is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Mir; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, The Mir-coders gives permission to link + * the code of this program with the com.oreilly.servlet library, any library + * licensed under the Apache Software License, The Sun (tm) Java Advanced + * Imaging library (JAI), The Sun JIMI library (or with modified versions of + * the above that use the same license as the above), and distribute linked + * combinations including the two. You must obey the GNU General Public + * License in all respects for all of the code used other than the above + * mentioned libraries. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If you do + * not wish to do so, delete this exception statement from your version. + */ + package mir.misc; -import javax.servlet.http.*; import java.net.*; import java.io.*; import java.util.*; import java.lang.*; -import com.javaexchange.dbConnectionBroker.*; + +import javax.servlet.ServletContext; +import javax.servlet.http.*; + +import mir.storage.StorageObjectException; +import mir.storage.DatabaseAdaptor; +import com.codestudio.util.*; /** * Title: Mir @@ -26,7 +62,7 @@ import com.javaexchange.dbConnectionBroker.*; public class MirConfig extends Configuration { - private static HashMap configHash = new HashMap(); + private static HashMap configHash = null; private static HashMap brokerHash = new HashMap(); private static int instances=0; @@ -38,10 +74,13 @@ public class MirConfig extends Configuration { * @param name, The name of the servlet (usually "Mir") * @param confName, the name of the config file to load. */ - public static void initConfig(String home, String uri, String name, String confName) { + public static synchronized void initConfig(ServletContext ctx, String uri, + String name, String confName) { initConfResource(confName); + configHash = new HashMap(); - configHash.put("Home", home); + configHash.put("Home", ctx.getRealPath("/")); + configHash.put("ServletContext", ctx); configHash.put("RootUri", uri); Enumeration resKeys = getResourceKeys(); @@ -58,7 +97,7 @@ public class MirConfig extends Configuration { public static void setServletName(String servletName) { configHash.put("ServletName",servletName); } - + /** * Returns the property asked for by pulling it out a HashMap * @param a String containing the property name (key) @@ -79,62 +118,87 @@ public class MirConfig extends Configuration { (String)configHash.get(propName); } - public static void addBroker(String driver, String URL){ + /** + * Returns the property asked for iin raw Object form by + * pulling it out a HashMap + * @param a String containing the property name (key) + * @return an Object containing the prop.value + */ + public static Object getPropAsObject(String propName) { + return configHash.get(propName); + } + + public static void initDbPool () throws StorageObjectException { + if (configHash == null) { + throw new StorageObjectException("MirConfig -- Trying initialize "+ + "DB pool when system not yet "+ + "configured"); + } + String dbUser=getProp("Database.Username"); + String dbPassword=getProp("Database.Password"); + String dbHost=getProp("Database.Host"); + String dbAdapName=getProp("Database.Adaptor"); + DatabaseAdaptor adaptor; + try { + adaptor = (DatabaseAdaptor)Class.forName(dbAdapName).newInstance(); + } catch (Exception e) { + throw new StorageObjectException("Could not load DB adapator: "+ + e.toString()); + } + String dbDriver=adaptor.getDriver(); + String dbUrl=adaptor.getURL(dbUser,dbPassword, dbHost); + System.out.println("adding Broker with: " +dbDriver+":"+dbUrl ); + addBroker( dbDriver, dbUrl); + } - String username,passwd,min,max,log,reset; + public static void addBroker(String driver, String URL) + throws StorageObjectException { + + if (configHash == null) { + throw new StorageObjectException("MirConfig -- Trying initialize "+ + "DB pool when system not yet "+ + "configured"); + } + String username,passwd,min,max,log,reset,dbname,dblogfile; if(!brokerHash.containsKey("Pool.broker")){ username=getProp("Database.Username"); passwd=getProp("Database.Password"); min=getProp("Database.poolMin"); max=getProp("Database.poolMax"); - log=getProp("Home") + configHash.get("Database.PoolLog"); + dbname=getProp("Database.Name"); + log=getProp("Home")+ configHash.get("Database.PoolLog"); reset=getProp("Database.poolResetTime"); - - try{ - System.err.println("-- making Broker for -" - +driver+" - " +URL - + " log " + log + " user " - + username + " pass: " + passwd); - - DbConnectionBroker br = new DbConnectionBroker(driver,URL,username,passwd,(new Integer(min)).intValue(), - (new Integer(max)).intValue(),log,(new Float(reset)).floatValue()); - if (br!=null){ - instances++; - brokerHash.put("Pool.broker",br); - } else { - throw new Exception(); - } - } catch(Exception e){ - System.err.println("Der ConnectionBroker konnte nicht initializiert werden"+ e.toString());e.printStackTrace(); + dblogfile=getPropWithHome("Database.Logfile"); + + System.err.println("-- making Broker for -" + +driver+" - " +URL + + " log " + log + " user " + + username + " pass: " + passwd); + + JDBCPoolMetaData meta = new JDBCPoolMetaData(); + meta.setDbname(dbname); + meta.setDriver(driver); + meta.setURL(URL); + meta.setUserName(username); + meta.setPassword(passwd); + meta.setJNDIName("mir"); + meta.setMaximumSize(Integer.parseInt(max)); + meta.setMinimumSize(Integer.parseInt(min)); + meta.setPoolPreparedStatements(false); + meta.setCacheEnabled(false); + meta.setCacheSize(15); + meta.setDebugging(false); + meta.setLogFile(dblogfile+".pool"); + + JDBCPool pool = SQLManager.getInstance().createPool(meta); + + if (pool!=null){ + instances++; + brokerHash.put("Pool.broker",pool); } - } // end if - } - /** - * Liefert DBConnectionBroker einer Configuration zurueck - * @param confFilename - * @return DBConnectionBroker - */ - public static DbConnectionBroker getBroker() { - DbConnectionBroker broker=null; - broker=(DbConnectionBroker)brokerHash.get("Pool.broker"); - if (broker==null) { - System.err.println("Konnte kein ConnectionPoolBroker initialisiert werden"); - } - return broker; - } - - /** - * Liefert Anzahl der Instantiierten DBConnectionBroker zurueck - * @return - */ - public static int getBrokerInstances() { - return instances; - } - - public static DbConnectionBroker getBrokerInfo(){ - return (DbConnectionBroker)brokerHash.get("Pool.broker"); + } // end if } /**