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

Reply via email to