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

Reply via email to