[jboss-svn-commits] JBL Code SVN: r19948 - labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 14 07:06:16 EDT 2008


Author: kevin.conner at jboss.com
Date: 2008-05-14 07:06:16 -0400 (Wed, 14 May 2008)
New Revision: 19948

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2Database.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2DatabaseMBean.java
Log:
Fix shutdown of H2 database: JBESB-1712

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2Database.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2Database.java	2008-05-14 11:06:06 UTC (rev 19947)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2Database.java	2008-05-14 11:06:16 UTC (rev 19948)
@@ -25,6 +25,7 @@
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.Statement;
 
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.system.server.ServerConfigLocator;
@@ -59,6 +60,9 @@
    /** JDBC in memory URL prefix: <code>jdbc:h2:mem:</code>. */
    private static final String JDBC_MEM_URL_PREFIX = JDBC_URL_PREFIX + "mem:";
    
+   /** JDBC flags */
+   private static final String DEFAULT_FLAGS = ";MVCC=TRUE;DB_CLOSE_ON_EXIT=FALSE" ;
+   
    /** Default data subdir: <code>h2</code>. */
    private static final String H2_DATA_DIR = "h2";
    
@@ -82,6 +86,9 @@
    /** Database password. */
    private String password = DEFAULT_PASSWORD;
    
+   /** Database flags */
+   private String flags = DEFAULT_FLAGS ;
+   
    /** Hold a connection for in memory h2. */
    private Connection connection;
 
@@ -172,6 +179,16 @@
    }
 
    /**
+    * @return the flags
+    * 
+    * @jmx.managed-attribute 
+    */
+   public String getFlags()
+   {
+      return flags;
+   }
+
+   /**
     * @param password
     * 
     * @jmx.managed-attribute 
@@ -199,6 +216,20 @@
       this.user = user;
    }
 
+   /**
+    * @param flags
+    * 
+    * @jmx.managed-attribute 
+    */
+   public void setFlags(String flags)
+   {
+      if (flags == null)
+      {
+          flags = DEFAULT_FLAGS;
+      }
+      this.flags = flags;
+   }
+
    // Lifecycle -----------------------------------------------------
    
    /**
@@ -244,11 +275,10 @@
        
        dbPath = new File(h2Dir, name);
 
-       final String dbURL = JDBC_URL_PREFIX + dbPath.toURI().toString();
+       final String dbURL = JDBC_URL_PREFIX + dbPath.toURI().toString() + flags ;
 
-       // Check wee have connectivity
-       final Connection connection = getConnection(dbURL);
-       connection.close() ;
+       // Check we have connectivity
+       connection = getConnection(dbURL);
    }
 
    /**
@@ -256,7 +286,7 @@
     */
    private void startInMemoryDatabase() throws Exception
    {
-       final String dbURL = JDBC_MEM_URL_PREFIX + name;
+       final String dbURL = JDBC_MEM_URL_PREFIX + name + flags ;
 
        // hold a connection so h2 does not close the database
        connection = getConnection(dbURL);
@@ -267,7 +297,15 @@
     */
    private void stopStandaloneDatabase() throws Exception
    {
-       // Nothing to do here
+       try
+       {
+           final Statement stmt = connection.createStatement() ;
+           stmt.execute("shutdown") ;
+       }
+       finally
+       {
+           connection = null;
+       }
        log.info("Database standalone closed clean");
    }
 

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2DatabaseMBean.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2DatabaseMBean.java	2008-05-14 11:06:06 UTC (rev 19947)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/dependencies/H2DatabaseMBean.java	2008-05-14 11:06:16 UTC (rev 19948)
@@ -68,4 +68,8 @@
    /** In memory mode */
    boolean isInMemoryMode() ;
    void setInMemoryMode(boolean b) ;
+   
+   /** The flags to use when connecting to the DB, default is "" */
+   String getFlags();
+   void setFlags(String flags);
 }




More information about the jboss-svn-commits mailing list