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