User: peter_f Date: 01/11/15 03:40:08 Modified: varia/src/main/org/jboss/jdbc HypersonicDatabase.java HypersonicDatabaseMBean.java Log: Minor fixes - cleaned up some -added preRegister() -added a crude read in of configuration (port, silent, trace) - added start of HSQLDB DatabaseMAnager, now accesible from localhost:8082 Revision Changes Path 1.7 +182 -180 contrib/varia/src/main/org/jboss/jdbc/HypersonicDatabase.java Index: HypersonicDatabase.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/jdbc/HypersonicDatabase.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- HypersonicDatabase.java 2001/10/15 15:09:41 1.6 +++ HypersonicDatabase.java 2001/11/15 11:40:08 1.7 @@ -12,145 +12,160 @@ import java.io.IOException; import java.io.File; import java.net.URL; +import java.util.Hashtable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; - import javax.management.*; - // our patched HSQLDB Server class import org.hsqldb.Embedded_Server; - +import org.hsqldb.util.Embedded_DatabaseManager; import org.jboss.system.URLClassLoader; import org.jboss.system.ServiceMBeanSupport; +import DatabaseManagerSwing; /** -* Integration with Hypersonic SQL (c). -* Starts a "patched" HSQLDB 1.61 Hypersonic database in-VM. -* http://sourceforge.net/projects/hsqldb/ -* -* @see HypersonicDatabaseMBean -* @author <a href="mailto:[EMAIL PROTECTED]">Rickard Öberg</a> -* @author <a href="mailto:[EMAIL PROTECTED]">Scott Stark</a>. -* @author <a href="mailto:[EMAIL PROTECTED]">Peter Fagerlund</a> -* @version $Revision: 1.6 $ -*/ -public class HypersonicDatabase -extends ServiceMBeanSupport -implements HypersonicDatabaseMBean, MBeanRegistration -{ - // Constants ----------------------------------------------------- - - // Attributes ---------------------------------------------------- - Thread runner; - //Process proc; // whats this ? - MBeanServer server; - - // does not call System.exit() at shutdown + * Integration with Hypersonic SQL (c). Starts a "patched" HSQLDB 1.61 Hypersonic database in-VM. + * http://sourceforge.net/projects/hsqldb/ + * @see HypersonicDatabaseMBean + * @author <a href="mailto:[EMAIL PROTECTED]">Rickard Öberg</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Scott Stark</a>. + * @author <a href="mailto:[EMAIL PROTECTED]">Peter Fagerlund</a> + * @version $Revision: 1.7 $ + */ +public class HypersonicDatabase extends ServiceMBeanSupport implements HypersonicDatabaseMBean, MBeanRegistration { + // Constants ----------------------------------------------------- + // Attributes ---------------------------------------------------- + // HSQLDB Thread + Thread dbRunner; + // HSQLDB DatabaseMAnager Thread + Thread dbMRunner; + // Mbean Server + MBeanServer server; + // HSQLDB patched server class org.hsqldb.Embedded_Server embeddedDBServer; - - String name = "jboss"; // Database name will be appended to "<db.properties location>/hypersonic/" - int port = 1476; // Default port - boolean silent = true; - boolean trace = false; - - // Static -------------------------------------------------------- - - // Constructors -------------------------------------------------- - public HypersonicDatabase() - { - } - - // Public -------------------------------------------------------- - // Settings - public void setDatabase(String name) - { - this.name = name; - } - - public String getDatabase() - { - return name; - } - - public void setPort(int port) - { - this.port = port; - } - - public int getPort() - { - return port; - } - - public void setSilent(boolean silent) - { - this.silent = silent; - } - - public boolean getSilent() - { - return silent; - } - - public void setTrace(boolean trace) - { - this.trace = trace; - } - - public boolean getTrace() - { - return trace; - } - - public ObjectName getObjectName(MBeanServer server, ObjectName name) - throws javax.management.MalformedObjectNameException - { - this.server = server; - return name == null ? new ObjectName(OBJECT_NAME) : name; - } - - public String getName() - { - return "Hypersonic"; - } - - public void startService() - throws Exception - { - embeddedDBServer = new org.hsqldb.Embedded_Server(); - - // Start DB in new thread, or else it will block us - runner = new Thread(new Runnable() - { - public void run() - { - try { - // Get DB directory - File jbossHomeDir = new File(System.getProperty("jboss.system.home")); - File dbName = new File(jbossHomeDir, "db"+File.separator+ - "hypersonic"+File.separator+ - name); - - // Create startup arguments - String[] args = new String[] - { - "-database", dbName.toString(), - "-port", port+"", - "-silent", silent+"", - "-trace", trace+"" - }; - - // Start server - embeddedDBServer.main(args); - - } catch (Exception e) {e.printStackTrace();} - } - }); - - // startup - runner.start(); + // this Object Name + ObjectName objectName; + // Jboss directory + File jbossHomeDir; + // full path to db + File dbName; + // Database name will be appended to "<db.properties location>/hypersonic/" + String name = "jboss"; + // Default port + int port = 1476; + // Default silent + boolean silent = true; + // Default trace + boolean trace = false; + + // Static -------------------------------------------------------- + // Constructors -------------------------------------------------- + public HypersonicDatabase() { + } + + // Public -------------------------------------------------------- + // Settings + public void setDatabase(String name) { + this.name = name; + } + + public String getDatabase() { + return name; + } + + public void setPort(int port) { + this.port = port; + } + + public int getPort() { + return port; + } + + public void setSilent(boolean silent) { + this.silent = silent; + } + + public boolean getSilent() { + return silent; + } + + public void setTrace(boolean trace) { + this.trace = trace; + } + + public boolean getTrace() { + return trace; + } + + public ObjectName getObjectName(MBeanServer server, ObjectName name) + throws javax.management.MalformedObjectNameException { + this.server = server; + return name == null ? new ObjectName(OBJECT_NAME) : name; + } + + public String getName() { + return "Hypersonic"; + } + + public ObjectName preRegister(MBeanServer server, ObjectName _name) + throws Exception { + objectName = getObjectName(server, _name); + this.server = server; + return objectName; + } + + // start of DatabaseManager accesible from the localhost:8082 + public void startDatabaseManager() { + // Start DBManager in new thread + dbMRunner = new Thread( + new Runnable() { + public void run() { + try { + String[] args = {Integer.toString(port)}; + org.hsqldb.util.Embedded_DatabaseManager.main(args); + //DatabaseManagerSwing.main(args); // Swing based not yet really ready + } catch (Exception e) { e.printStackTrace(); } + } + }); + // startup + dbMRunner.start(); + } + + + public void startService() throws Exception { + try { + // get our properties from MBeanServer->XML File + Object o = server.getAttribute(objectName, "Port"); + Integer i = new Integer(o.toString()); + port = i.intValue(); + o = server.getAttribute(objectName, "Silent"); + if (o.toString().compareTo("true") == 0) silent = true; else silent = false; + o = server.getAttribute(objectName, "Trace"); + if (o.toString().compareTo("true") == 0) trace = true; else trace = false; + } catch (Exception e) { + // do the right thing == use defaults + } + // Get DB directory + jbossHomeDir = new File(System.getProperty("jboss.system.home")); + dbName = new File(jbossHomeDir, "db" + File.separator + "hypersonic" + File.separator + name); + // Start DB in new thread, or else it will block us + dbRunner = new Thread( + new Runnable() { + public void run() { + try { + // Create startup arguments + String[] args = new String[] { + "-database", dbName.toString(), "-port", port + "", "-silent", silent + "", "-trace", trace + "" + }; + // Start server + embeddedDBServer.main(args); + } catch (Exception e) { e.printStackTrace(); } + } + }); + // startup + dbRunner.start(); /* synchronized (this) { @@ -158,60 +173,47 @@ try { Thread.yield(); wait(5000);} catch (Exception e) {e.printStackTrace();} } */ - log.info("HSQLDB started"); - - } - - /** - * @author Peter Fagerlund [EMAIL PROTECTED] - * - * We now close the connection clean by calling the - * serverSocket throught jdbc. The MBeanServer calls - * this method at closing time ... this gives the db - * a chance to write out its memory cashe ... - */ - public void stopService() - { - Connection connection; - Statement statement; - - String cmd = "SHUTDOWN"; - String jdbcDriver = "org.hsqldb.jdbcDriver"; - //String dbStrVersion_1_4 = "jdbc:HypersonicSQL:hsql://localhost:"+port; - String dbStrVersion_1_6 = "jdbc:hsqldb:hsql://localhost:"+port; - String user = "sa"; - String password = ""; - - try - { - new org.hsqldb.jdbcDriver(); - Class.forName(jdbcDriver).newInstance(); - connection=DriverManager.getConnection(dbStrVersion_1_6, user, password); - statement=connection.createStatement(); - statement.executeQuery(cmd); - - log.info("Database closed clean"); + + log.info("HSQLDB started"); + } + + /** + * @author Peter Fagerlund [EMAIL PROTECTED] We now close the connection clean by calling the + * serverSocket throught jdbc. The MBeanServer calls this method at closing time ... this gives the db + * a chance to write out its memory cashe ... + */ + public void stopService() { + Connection connection; + Statement statement; + String cmd = "SHUTDOWN"; + String jdbcDriver = "org.hsqldb.jdbcDriver"; + String dbStrVersion_1_6 = "jdbc:hsqldb:hsql://localhost:" + port; + String user = "sa"; + String password = ""; + try { + new org.hsqldb.jdbcDriver(); + Class.forName(jdbcDriver).newInstance(); + connection = DriverManager.getConnection(dbStrVersion_1_6, user, password); + statement = connection.createStatement(); + statement.executeQuery(cmd); + log.info("Database closed clean"); embeddedDBServer = null; - runner = null; + dbRunner = null; + dbMRunner = null; return; - - } catch(ClassNotFoundException cnfe) - { - log.error("ClassNotFound ", cnfe); - } catch(IllegalAccessException iae) - { - log.error("Illegal Access ", iae); - } catch(InstantiationException ie) - { - log.error("Instantiation ", ie); - } catch(SQLException sqle) - { - log.error("SQL error", sqle); - } - log.info("Database unable to close clean"); + } catch (ClassNotFoundException cnfe) { + log.error("ClassNotFound ", cnfe); + } catch (IllegalAccessException iae) { + log.error("Illegal Access ", iae); + } catch (InstantiationException ie) { + log.error("Instantiation ", ie); + } catch (SQLException sqle) { + log.error("SQL error", sqle); + } + log.info("Database unable to close clean"); embeddedDBServer = null; - runner = null; - } - - // Protected ----------------------------------------------------- + dbRunner = null; + dbMRunner = null; + } + // Protected ----------------------------------------------------- } 1.3 +3 -1 contrib/varia/src/main/org/jboss/jdbc/HypersonicDatabaseMBean.java Index: HypersonicDatabaseMBean.java =================================================================== RCS file: /cvsroot/jboss/contrib/varia/src/main/org/jboss/jdbc/HypersonicDatabaseMBean.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- HypersonicDatabaseMBean.java 2001/08/30 02:37:56 1.2 +++ HypersonicDatabaseMBean.java 2001/11/15 11:40:08 1.3 @@ -12,7 +12,7 @@ * * @see <related> * @author <a href="mailto:[EMAIL PROTECTED]">Rickard Öberg</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ */ public interface HypersonicDatabaseMBean extends org.jboss.system.ServiceMBean @@ -32,4 +32,6 @@ public void setTrace(boolean trace); public boolean getTrace(); + + public void startDatabaseManager(); }
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development