User: user57
Date: 02/02/06 18:15:25
Modified: varia/src/main/org/jboss/jdbc HypersonicDatabase.java
HypersonicDatabaseMBean.java
Log:
o Added DirectoryBuilder, a simple util to help make directory paths by
cd()'ing
o Cleaned up HypersonicDatabase stuff, found out just how non-emembedeable
this stuff really is... what a pain.
o Now shows the directory path where the db is running from (mostly)
Revision Changes Path
1.10 +180 -197 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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- HypersonicDatabase.java 2002/01/20 15:13:34 1.9
+++ HypersonicDatabase.java 2002/02/07 02:15:24 1.10
@@ -1,9 +1,9 @@
/*
-* JBoss, the OpenSource EJB server
-*
-* Distributable under LGPL license.
-* See terms of license at gnu.org.
-*/
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
package org.jboss.jdbc;
@@ -18,203 +18,186 @@
import java.sql.SQLException;
import java.sql.Statement;
import javax.management.*;
+
+import org.jboss.util.DirectoryBuilder;
+import org.jboss.system.UnifiedClassLoader;
+import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.logging.Logger;
+
// our patched HSQLDB Server class
import org.hsqldb.Embedded_Server;
import org.hsqldb.util.Embedded_DatabaseManager;
-import org.jboss.system.UnifiedClassLoader;
-import org.jboss.system.ServiceMBeanSupport;
-import DatabaseManagerSwing;
/**
- * Integration with Hypersonic SQL (c). Starts a "patched" HSQLDB 1.61 Hypersonic
database in-VM.
+ * 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.9 $
+ *
+ * @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>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a>
+ * @version $Revision: 1.10 $
*/
-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;
- // 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
- log.warn("using jboss.system.home property");
- 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) {
- System.out.println("Starting HSQLDB");
- 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_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;
- 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");
- embeddedDBServer = null;
- dbRunner = null;
- dbMRunner = null;
- }
- // Protected -----------------------------------------------------
+public class HypersonicDatabase
+ extends ServiceMBeanSupport
+ implements HypersonicDatabaseMBean, MBeanRegistration
+{
+ /** HSQLDB patched server class. */
+ org.hsqldb.Embedded_Server embeddedDBServer;
+
+ /** Full path to db. */
+ File dbPath;
+
+ /** Database name will be appended to <em>jbossHome/db/hypersonic</em>. */
+ String name = "default";
+
+ /** Default port. */
+ int port = 1476;
+
+ /** Default silent. */
+ boolean silent = true;
+
+ /** Default trace. */
+ boolean trace = false;
+
+ public HypersonicDatabase() {
+ // empty
+ }
+
+ public void setDatabase(final String name) {
+ this.name = name;
+ }
+
+ public String getDatabase() {
+ return name;
+ }
+
+ public void setPort(final int port) {
+ this.port = port;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setSilent(final boolean silent) {
+ this.silent = silent;
+ }
+
+ public boolean getSilent() {
+ return silent;
+ }
+
+ public void setTrace(final boolean trace) {
+ this.trace = trace;
+ }
+
+ public boolean getTrace() {
+ return trace;
+ }
+
+ public String getName() {
+ return "Hypersonic";
+ }
+
+ public String getDatabasePath() {
+ return dbPath.toString();
+ }
+
+ public ObjectName getObjectName(MBeanServer server,
+ ObjectName name)
+ throws MalformedObjectNameException
+ {
+ return name == null ? new ObjectName(OBJECT_NAME) : name;
+ }
+
+ public ObjectName preRegister(MBeanServer server,
+ ObjectName name)
+ throws Exception
+ {
+ return getObjectName(server, name);
+ }
+
+ /**
+ * start of DatabaseManager accesible from the localhost:8082
+ */
+ public void startDatabaseManager() {
+ // Start DBManager in new thread
+ new Thread() {
+ public void run() {
+ try {
+ String[] args = { Integer.toString(port) };
+ org.hsqldb.util.Embedded_DatabaseManager.main(args);
+ }
+ catch (Exception e) {
+ log.error("Failed to start database manager", e);
+ }
+ }
+ }.start();
+ }
+
+ public void startService() throws Exception {
+ // Get DB directory
+ log.warn("using jboss.system.home property");
+ DirectoryBuilder dirb =
+ new DirectoryBuilder(System.getProperty("jboss.system.home"));
+ dbPath = dirb.cd("db").cd("hypersonic").cd(name).get();
+
+ // Start DB in new thread, or else it will block us
+ new Thread() {
+ public void run() {
+ try {
+ // Create startup arguments
+ String[] args = new String[] {
+ "-database", dbPath.toString(),
+ "-port", port + "",
+ "-silent", silent + "",
+ "-trace", trace + ""
+ };
+
+ // Start server
+ embeddedDBServer.main(args);
+ }
+ catch (Exception e) {
+ log.error("Failed to start database", e);
+ }
+ }
+ }.start();
+ }
+
+ /**
+ * 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 ...
+ *
+ * @author Peter Fagerlund [EMAIL PROTECTED]
+ */
+ 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");
+ }
+ catch (Exception e) {
+ log.error("Failed to shutdown database", e);
+ }
+
+ embeddedDBServer = null;
+ }
}
1.5 +18 -18
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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HypersonicDatabaseMBean.java 2002/01/03 04:00:55 1.4
+++ HypersonicDatabaseMBean.java 2002/02/07 02:15:25 1.5
@@ -1,5 +1,5 @@
/*
- * JBoss, the OpenSource EJB server
+ * JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
@@ -7,31 +7,31 @@
package org.jboss.jdbc;
+import org.jboss.system.ServiceMBean;
+
/**
- * <description>
+ * The management interface for the HypersonicDatabase bean.
*
- * @see <related>
- * @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
- * @version $Revision: 1.4 $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
+ * @version $Revision: 1.5 $
*/
public interface HypersonicDatabaseMBean
- extends org.jboss.system.ServiceMBean
+ extends ServiceMBean
{
- // Constants -----------------------------------------------------
- public static final String OBJECT_NAME = "jboss:service=Hypersonic";
+ String OBJECT_NAME = "jboss:service=Hypersonic";
- // Public --------------------------------------------------------
- public void setDatabase(String name);
- public String getDatabase();
+ void setDatabase(String name);
+ String getDatabase();
+ String getDatabasePath();
- public void setPort(int port);
- public int getPort();
+ void setPort(int port);
+ int getPort();
- public void setSilent(boolean silent);
- public boolean getSilent();
+ void setSilent(boolean silent);
+ boolean getSilent();
- public void setTrace(boolean trace);
- public boolean getTrace();
+ void setTrace(boolean trace);
+ boolean getTrace();
- public void startDatabaseManager();
+ void startDatabaseManager();
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development