import java.io.*;
import java.util.*;
import java.lang.*;
-import com.javaexchange.dbConnectionBroker.*;
+import mir.storage.StorageObjectException;
+import mir.storage.DatabaseAdaptor;
+import com.codestudio.util.*;
/**
* Title: Mir
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;
* @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(String home, String uri,
+ String name, String confName) {
initConfResource(confName);
-
+ configHash = new HashMap();
configHash.put("Home", home);
configHash.put("RootUri", uri);
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)
(String)configHash.get(propName);
}
- public static void addBroker(String driver, String URL){
+ 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.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
}
/**