You are viewing a plain text version of this content. The canonical link for it is here.
Posted to lokahi-commits@incubator.apache.org by to...@apache.org on 2006/09/29 16:16:39 UTC
svn commit: r451335 - in
/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core:
common/database/CachingBroker.java common/database/ConnBean.java
common/database/MySqlBroker.java controller/AdminBean.java
gui/www/TMCStartupServlet.java
Author: toback
Date: Fri Sep 29 09:16:38 2006
New Revision: 451335
URL: http://svn.apache.org/viewvc?view=rev&rev=451335
Log:
Re:
http://mail-archives.apache.org/mod_mbox/incubator-lokahi-dev/200609.mbox/%3c451AF45C.5030904@free.fr%3e
Added:
incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java (with props)
Modified:
incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/CachingBroker.java
incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/ConnBean.java
incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/controller/AdminBean.java
incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/gui/www/TMCStartupServlet.java
Modified: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/CachingBroker.java
URL: http://svn.apache.org/viewvc/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/CachingBroker.java?view=diff&rev=451335&r1=451334&r2=451335
==============================================================================
--- incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/CachingBroker.java (original)
+++ incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/CachingBroker.java Fri Sep 29 09:16:38 2006
@@ -18,6 +18,7 @@
*/
package org.apache.lokahi.core.common.database;
+import org.apache.log4j.Logger;
import org.apache.lokahi.core.common.interfaces.Dao;
import org.apache.lokahi.core.common.interfaces.TMCBroker;
@@ -29,9 +30,31 @@
* @version $Id$
*/
public class CachingBroker<T extends Dao> implements TMCBroker<T> {
- private final TMCBroker<T> masterBroker = new OracleBroker<T>();
- private final TMCBroker<T> cacheBroker = new DerbyBroker<T>();
-
+ static final Logger logger = Logger.getLogger(CachingBroker.class);
+
+ public final static String DEFAULT_BROKER_IMPLEMENTATION = "org.apache.lokahi.core.common.database.OracleBroker";
+
+ private static String masterBrokerClassName = DEFAULT_BROKER_IMPLEMENTATION;
+
+ private TMCBroker<T> masterBroker;
+
+ private TMCBroker<T> cacheBroker = new DerbyBroker<T>();
+
+ public CachingBroker() {
+ super();
+ if (logger.isDebugEnabled())
+ logger.debug("Instantiate a '"+masterBrokerClassName+"' broker.");
+ try {
+ masterBroker = (TMCBroker<T>) Class.forName(masterBrokerClassName).newInstance();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
public int save(String statement, Object... objects) throws SQLException {
return masterBroker.save(statement, objects);
}
@@ -66,5 +89,13 @@
public String connectionReport() {
return masterBroker.connectionReport() + cacheBroker.connectionReport();
+ }
+
+ public static String getMasterBrokerClassName() {
+ return masterBrokerClassName;
+ }
+
+ public static void setMasterBrokerClassName(String masterBrokerClassName) {
+ CachingBroker.masterBrokerClassName = masterBrokerClassName;
}
}
Modified: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/ConnBean.java
URL: http://svn.apache.org/viewvc/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/ConnBean.java?view=diff&rev=451335&r1=451334&r2=451335
==============================================================================
--- incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/ConnBean.java (original)
+++ incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/ConnBean.java Fri Sep 29 09:16:38 2006
@@ -63,7 +63,7 @@
connPool.setTestOnReturn(true);
connPool.setTestWhileIdle(true);
connPool.setTimeBetweenEvictionRunsMillis(30000);
- connPool.setValidationQuery("SELECT SYSDATE FROM DUAL");
+ connPool.setValidationQuery("SELECT COUNT(*) FROM TMC_PROJECT");
//then close and then get connection again...
}
Added: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java
URL: http://svn.apache.org/viewvc/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java?view=auto&rev=451335
==============================================================================
--- incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java (added)
+++ incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java Fri Sep 29 09:16:38 2006
@@ -0,0 +1,408 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.apache.lokahi.core.common.database;
+
+import java.io.ByteArrayInputStream;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Collection;
+
+import org.apache.commons.dbcp.DelegatingCallableStatement;
+import org.apache.commons.dbcp.DelegatingPreparedStatement;
+import org.apache.log4j.Logger;
+import org.apache.lokahi.core.common.collection.TMCSet;
+import org.apache.lokahi.core.common.exception.TMCIllegalArgumentException;
+import org.apache.lokahi.core.common.interfaces.Dao;
+import org.apache.lokahi.core.common.interfaces.GenericDatabaseBroker;
+import org.apache.lokahi.core.common.interfaces.TMCBroker;
+import org.apache.lokahi.core.common.util.PropertiesFile;
+
+import com.mysql.jdbc.Blob;
+
+/**
+ *
+ * @version $Id$
+ */
+public class MySqlBroker<T extends Dao> extends GenericDatabaseBroker<T> implements TMCBroker<T> {
+ static final Logger logger = Logger.getLogger(MySqlBroker.class);
+ public static final ConnBean connBean = new ConnBean();
+ private static final String STATEMENT_PREFACE = "mysql.";
+
+ MySqlBroker() {
+ if (logger.isDebugEnabled())
+ logger.debug("Using MySql Broker");
+ }
+
+ protected PreparedStatement getPreparedStatement(Connection conn, String statement, Object[] params, boolean isFunction) throws SQLException, TMCIllegalArgumentException {
+ return this.getPreparedStatement(conn, statement, params, isFunction, false, -1);
+ }
+
+ protected PreparedStatement getPreparedStatement(Connection conn, String statement, Object[] params, boolean isFunction, boolean returns, int type) throws SQLException, TMCIllegalArgumentException {
+ statement = PropertiesFile.getConstantValue(STATEMENT_PREFACE + statement);
+ if ("".equals(statement) || statement == null)
+ throw new TMCIllegalArgumentException("Proper sql statement not found!");
+ StringBuffer stateStr = new StringBuffer(statement);
+ int numqMarks = params.length;
+ if (logger.isDebugEnabled()) {
+ logger.debug("numqMarks=" + numqMarks);
+ logger.debug("isFunction=" + isFunction);
+ logger.debug("returns=" + returns);
+ logger.debug("params.length=" + params.length);
+ logger.debug("Setting statementStr to " + stateStr);
+ }
+ PreparedStatement csmt = conn.prepareStatement(stateStr.toString());
+ csmt = this.buildPreparedStatementParams(csmt, returns, type, params);
+ return csmt;
+ }
+
+ // Store procs
+
+ public int save(String statement, Object... params) throws SQLException {
+ Connection conn = null;
+ int ret = 0;
+ CallableStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = getStatement(conn, statement, params, false, true, Types.INTEGER);
+ ResultSet res = stmt.executeQuery();
+ ret = stmt.getInt(1);
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } catch (TMCIllegalArgumentException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ } finally {
+ connBean.returnConn(conn);
+ }
+ return ret;
+ }
+
+ public boolean delete(String statement, Object... params) throws SQLException {
+ Connection conn = null;
+ boolean ret = false;
+ CallableStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = getStatement(conn, statement, params, false, true, Types.INTEGER);
+ if (stmt instanceof DelegatingCallableStatement) {
+ logger.info("Stmt: "+((DelegatingCallableStatement)stmt).getInnermostDelegate());
+ }
+ if (stmt.executeQuery().getInt(1) != 1) {
+ ret = true;
+ }
+ conn.commit();
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } catch (TMCIllegalArgumentException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ } finally {
+ connBean.returnConn(conn);
+ }
+ return ret;
+ }
+
+ public void update(String statement, Object... params) throws SQLException {
+ Connection conn = null;
+ CallableStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = getStatement(conn, statement, params, false, false, 0);
+ if (logger.isDebugEnabled() && stmt instanceof DelegatingCallableStatement) {
+ logger.debug("Stmt: "+((DelegatingCallableStatement)stmt).getInnermostDelegate());
+ }
+ stmt.executeQuery();
+ if (!"true".equals(PropertiesFile.getConstantValue("lokahi.broker.autocommit")))
+ conn.commit();
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } catch (TMCIllegalArgumentException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ } finally {
+ connBean.returnConn(conn);
+ }
+ }
+
+ public void modifyRelationship(String statement, Object... params) throws SQLException {
+ update(statement, params);
+ }
+
+ public void useSQL(String statement, Object... params) throws SQLException {
+ statement = PropertiesFile.getConstantValue(STATEMENT_PREFACE + statement);
+ if (!"".equals(statement)) {
+ Connection conn = null;
+ CallableStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = conn.prepareCall(statement);
+ stmt = this.buildParams(stmt, false, 0, params);
+ stmt.execute();
+ if (!"true".equals(PropertiesFile.getConstantValue("lokahi.broker.autocommit")))
+ conn.commit();
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } finally {
+ connBean.returnConn(conn);
+ }
+ }
+ }
+
+ public void blobHack(String lockStatement, String statement, int id, byte[] blobData) throws SQLException {
+ statement = PropertiesFile.getConstantValue(STATEMENT_PREFACE + statement);
+ lockStatement = PropertiesFile.getConstantValue(STATEMENT_PREFACE + lockStatement);
+ if (!"".equals(statement) && !"".equals(lockStatement)) {
+ Connection conn = null;
+ try {
+ conn = connBean.getConn();
+ conn.setAutoCommit(false);
+ PreparedStatement ps = conn.prepareStatement(lockStatement);
+ ps.setInt(1, id);
+ ResultSet rs = ps.executeQuery();
+ if (logger.isDebugEnabled()) {
+ logger.debug("blobBytes.length=" + blobData.length);
+ }
+ if (rs.next()) {
+ Blob dbBlob = (Blob) rs.getBlob(1);
+ if (dbBlob != null) {
+ //update blob
+ ps = conn.prepareStatement(statement);
+ dbBlob.setBytes(1, blobData);
+ ps.setBlob(1, dbBlob);
+ ps.setInt(2, id);
+ rs.close();
+ ps.close();
+ if (!"true".equals(PropertiesFile.getConstantValue("lokahi.broker.autocommit")))
+ conn.commit();
+ }
+ }
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } finally {
+ if (conn != null)
+ conn.setAutoCommit(true);
+ connBean.returnConn(conn);
+ }
+ }
+ }
+
+ public String connectionReport() {
+ return ConnBean.connectionUsageReport();
+ }
+
+ public T getObject(Class<T> c, String statement, boolean cache, Object... params) throws SQLException {
+ if (logger.isDebugEnabled())
+ logger.debug("Returning object "+c.getName()+":"+params[0]+" using statment "+statement);
+ T o = null;
+ ResultSet r;
+ Connection conn = null;
+ PreparedStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = getPreparedStatement(conn, statement, params, false);
+ if (logger.isDebugEnabled() && stmt instanceof DelegatingPreparedStatement) {
+ logger.debug("Stmt: "+((DelegatingPreparedStatement)stmt).getInnermostDelegate());
+ }
+ r = (ResultSet) stmt.executeQuery();
+ if (r != null && r.next()) {
+ o = fillObject(c, r);
+ r.close();
+ } else {
+ if (logger.isDebugEnabled()) {
+ logger.debug("R is null! ");
+ }
+ }
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } catch (TMCIllegalArgumentException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ } finally {
+ connBean.returnConn(conn);
+ }
+ return o;
+ }
+
+ public Collection<T> getObjects(Class<T> clazz, boolean cache, String statement, Object... params) throws SQLException {
+ Collection<T> c = new TMCSet<T>();
+ Connection conn = null;
+ ResultSet r;
+ PreparedStatement stmt;
+ try {
+ conn = connBean.getConn();
+ stmt = getPreparedStatement(conn, statement, params, true);
+ if (logger.isDebugEnabled() && stmt instanceof DelegatingPreparedStatement) {
+ logger.debug("Stmt: "+((DelegatingPreparedStatement)stmt).getInnermostDelegate());
+ }
+ r = (ResultSet) stmt.executeQuery();
+ if (r != null) {
+ while (r.next()) {
+ T o = fillObject(clazz, r);
+ if (o != null) c.add(o);
+ }
+ r.close();
+ } else {
+ if (logger.isDebugEnabled()) {
+ logger.debug("RESULTSET IS NULL");
+ }
+ }
+ stmt.close();
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ throw e;
+ } catch (TMCIllegalArgumentException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ } finally {
+ connBean.returnConn(conn);
+ }
+ return c;
+ }
+
+ protected PreparedStatement buildPreparedStatementParams(PreparedStatement csmt, boolean returns, int returnType, Object... params) throws SQLException {
+ int modifier = 1;
+ for (int i = 0; i < params.length; i++) {
+ int statemenLocation = i + modifier;
+ Object o = params[i];
+ if (o instanceof Integer) {
+ csmt.setInt(statemenLocation, (Integer) o);
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setInt(" + statemenLocation + ", " + o + ");");
+ }
+ } else if (o instanceof String) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setString(" + statemenLocation + ", " + o + ");");
+ }
+ csmt.setString(statemenLocation, (String) o);
+ } else if (o instanceof byte[]) {
+ ByteArrayInputStream bais = new ByteArrayInputStream((byte[]) o);
+ csmt.setBinaryStream(statemenLocation, bais, ((byte[]) o).length);
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setBinaryStream(" + statemenLocation + ", BYTEDATA, " + ((byte[]) o).length + ");");
+ }
+ }
+ }
+ return csmt;
+ }
+
+ protected CallableStatement getStatement(Connection conn, String statement, Object[] params, boolean isFunction) throws SQLException, TMCIllegalArgumentException {
+ return this.getStatement(conn, statement, params, isFunction, true, Types.INTEGER);
+ }
+
+ protected CallableStatement getStatement(Connection conn, String statement, Object[] params, boolean isFunction, boolean returns, int type) throws SQLException, TMCIllegalArgumentException {
+ statement = PropertiesFile.getConstantValue(STATEMENT_PREFACE + statement);
+ if ("".equals(statement) || statement == null)
+ throw new TMCIllegalArgumentException("Proper sql statement not found!");
+ StringBuffer stateStr = new StringBuffer(statement);
+ stateStr.append('(');
+ int numqMarks = params.length;
+ if (returns && !isFunction) {
+ numqMarks++;
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("numqMarks=" + numqMarks);
+ logger.debug("isFunction=" + isFunction);
+ logger.debug("returns=" + returns);
+ logger.debug("params.length=" + params.length);
+ }
+ for (int i = 1; i < numqMarks; i++) {
+ stateStr.append("?,");
+ }
+ if (numqMarks > 0) {
+ stateStr.append('?');
+ }
+ stateStr.append(")}");
+ if (isFunction) {
+ stateStr.insert(0, "{? = call ");
+ } else {
+ stateStr.insert(0, "{call ");
+ }
+ if (logger.isDebugEnabled()) {
+ logger.debug("Setting statementStr to " + stateStr);
+ }
+ CallableStatement csmt = conn.prepareCall(stateStr.toString());
+ csmt = this.buildParams(csmt, returns, type, params);
+ return csmt;
+ }
+
+ protected CallableStatement buildParams(CallableStatement csmt, boolean returns, int returnType, Object... params) throws SQLException {
+ int modifier = 1;
+ if (returns) {
+ modifier++;
+ }
+ for (int i = 0; i < params.length; i++) {
+ int statemenLocation = i + modifier;
+ Object o = params[i];
+ if (o instanceof Integer) {
+ csmt.setInt(statemenLocation, (Integer) o);
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setInt(" + statemenLocation + ", " + o + ");");
+ }
+ } else if (o instanceof String) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setString(" + statemenLocation + ", " + o + ");");
+ }
+ csmt.setString(statemenLocation, (String) o);
+ } else if (o instanceof byte[]) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("csmt.setBytes(" + statemenLocation + ", BYTEDATA);");
+ }
+ csmt.setBytes(statemenLocation, (byte[]) o);
+ }
+ }
+ if (returns) {
+ csmt.registerOutParameter(1, returnType);
+ }
+ return csmt;
+ }
+}
Propchange: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/common/database/MySqlBroker.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/controller/AdminBean.java
URL: http://svn.apache.org/viewvc/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/controller/AdminBean.java?view=diff&rev=451335&r1=451334&r2=451335
==============================================================================
--- incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/controller/AdminBean.java (original)
+++ incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/controller/AdminBean.java Fri Sep 29 09:16:38 2006
@@ -23,22 +23,24 @@
package org.apache.lokahi.core.controller;
-import oracle.jdbc.driver.OracleTypes;
-import oracle.sql.ARRAY;
-import oracle.sql.STRUCT;
-import org.apache.log4j.Logger;
-import org.apache.lokahi.core.api.instance.Instance;
-import org.apache.lokahi.core.common.database.ConnBean;
-import org.apache.lokahi.core.common.util.PropertiesFile;
-
import java.sql.CallableStatement;
import java.sql.Connection;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Hashtable;
import java.util.StringTokenizer;
import java.util.Vector;
+import oracle.jdbc.driver.OracleTypes;
+import oracle.sql.ARRAY;
+import oracle.sql.STRUCT;
+
+import org.apache.log4j.Logger;
+import org.apache.lokahi.core.api.instance.Instance;
+import org.apache.lokahi.core.common.database.ConnBean;
+import org.apache.lokahi.core.common.util.PropertiesFile;
+
public class AdminBean { //todo scrap this entire thing
static final Logger logger = Logger.getLogger(AdminBean.class);
@@ -98,8 +100,24 @@
}
Hashtable contHash = new Hashtable();
- CallableStatement csmt;
try {
+ if ("oracle".equals(PropertiesFile.getConstantValue("lokahi.broker.type")))
+ contHash = getAllAdminInfoOracleImpl(conn, contHash);
+ else
+ contHash = getAllAdminInfoStdImpl(conn, contHash);
+ } catch (SQLException e) {
+ if (logger.isInfoEnabled()) {
+ logger.info("Exception: " + e.getMessage());
+ }
+ contHash = null;
+ } finally {
+ if (fromDb) connBean.returnConn(conn);
+ }
+ return contHash;
+ } // end getAllAdminInfo
+
+ private Hashtable getAllAdminInfoOracleImpl(Connection conn, Hashtable contHash) throws SQLException {
+ CallableStatement csmt;
csmt = conn.prepareCall("{? = call " + schema_owner + "." + stored_proc + "}");
csmt.registerOutParameter(1, OracleTypes.ARRAY, "BI_LIST");
@@ -122,17 +140,35 @@
contHash.put(val1, val2);
}
} // while rs.next
- csmt.close();
- } catch (SQLException e) {
- if (logger.isInfoEnabled()) {
- logger.info("Exception: " + e.getMessage());
- }
- contHash = null;
- } finally {
- if (fromDb) connBean.returnConn(conn);
- }
- return contHash;
- } // end getAllAdminInfo
+ csmt.close();
+ return contHash;
+ }
+
+ private Hashtable getAllAdminInfoStdImpl(Connection conn, Hashtable contHash) throws SQLException {
+ PreparedStatement psmt;
+ psmt = conn.prepareStatement("select 'PRIMARY',primary_jvm,'BACKUP', backup_jvm, 'ALTERNATE', alternate_jvm from TMC_ADMIN where INSTANCE_ID=?;");
+
+ psmt.setInt(1, this.getInstance().getPk());
+ psmt.execute();
+
+ // returns rows with 2 fields
+ // let us build a hashtable out of this, with first field as hashtable key and 2nd as value for this key
+ // retrieve the array as an oracle array
+ ResultSet rs = psmt.getResultSet();
+ while (rs.next()) {
+ for (int i=0;i<rs.getMetaData().getColumnCount();i=i+2) {
+ Object attrs[] = { rs.getString(i), rs.getString(i+1)};
+ String val1 = (attrs[0] != null) ? (String) attrs[0] : null;
+ String val2 = (attrs[1] != null) ? (String) attrs[1] : "";
+ if (val1 != null) {
+ // overwrite the key if it already exists
+ contHash.put(val1, val2);
+ }
+ }
+ } // while rs.next
+ psmt.close();
+ return contHash;
+ }
/**
* This method changes the role of the machine:port supplied to primary/backup or alternate
@@ -200,14 +236,15 @@
csmt.execute();
csmt.close();
- conn.commit();
+ if (!"true".equals(PropertiesFile.getConstantValue("lokahi.broker.autocommit")))
+ conn.commit();
} catch (SQLException e) {
if (logger.isInfoEnabled()) {
logger.info("Exception: " + e.getMessage());
}
} finally {
if (fromDb) connBean.returnConn(conn);
- return;
+ return;
}
} // end changeJvmAdminRole
@@ -232,7 +269,3 @@
} // end split
} // end AdminBean
-
-
-
-
Modified: incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/gui/www/TMCStartupServlet.java
URL: http://svn.apache.org/viewvc/incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/gui/www/TMCStartupServlet.java?view=diff&rev=451335&r1=451334&r2=451335
==============================================================================
--- incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/gui/www/TMCStartupServlet.java (original)
+++ incubator/lokahi/lokahi/branches/mysql/src/java/org/apache/lokahi/core/gui/www/TMCStartupServlet.java Fri Sep 29 09:16:38 2006
@@ -19,6 +19,7 @@
package org.apache.lokahi.core.gui.www;
import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.lokahi.core.common.database.CachingBroker;
import org.apache.lokahi.core.common.database.ConnBean;
import org.apache.lokahi.core.common.database.DerbyBroker;
import org.apache.lokahi.core.common.util.PropertiesFile;
@@ -53,6 +54,10 @@
PropertiesFile.load(this.getClass().getClassLoader().getResourceAsStream(propsName));
PropertiesFile.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));
+ if (PropertiesFile.getConstantValue("lokahi.broker.implementation")!=null) {
+ CachingBroker.setMasterBrokerClassName(PropertiesFile.getConstantValue("lokahi.broker.implementation"));
+ }
+
// check for some specific init values that need non-standard action
ConnBean.initializePool(PropertiesFile.getConstantValue("tmc.database.uri"),
PropertiesFile.getConstantValue("tmc.database.user"),