You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2006/11/10 16:45:08 UTC

svn commit: r473373 - /jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java

Author: dpfister
Date: Fri Nov 10 07:45:08 2006
New Revision: 473373

URL: http://svn.apache.org/viewvc?view=rev&rev=473373
Log:
JCR-633 DerbyPersistenceManager only usable for embedded databases

Modified:
    jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java

Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java?view=diff&rev=473373&r1=473372&r2=473373
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/persistence/db/DerbyPersistenceManager.java Fri Nov 10 07:45:08 2006
@@ -27,24 +27,28 @@
  * <code>DerbyPersistenceManager</code> is a JDBC-based
  * <code>PersistenceManager</code> for Jackrabbit that persists
  * <code>ItemState</code> and <code>NodeReferences</code> objects in an
- * embedded Derby database using a simple custom serialization format and a
+ * embedded or standalone Derby database using a simple custom serialization format and a
  * very basic non-normalized database schema (in essence tables with one 'key'
  * and one 'data' column).
  * <p/>
  * It is configured through the following properties:
  * <ul>
  * <li><code>url</code>: the database url of the form
- * <code>"jdbc:derby:[db];[attributes]"</code></li>
+ * <code>"jdbc:derby:[//host:port/][db];[attributes]"</code></li>
  * <li><code>schemaObjectPrefix</code>: prefix to be prepended to schema objects</li>
  * <li><code>driver</code>: the FQN name of the JDBC driver class
- * (default: <code>"org.apache.derby.jdbc.EmbeddedDriver"</code>)</li>
+ * (default: <code>"org.apache.derby.jdbc.EmbeddedDriver"</code>); Use
+ * <code>"org.apache.derby.jdbc.ClientDriver"</code> when using a standalone database</li>
  * <li><code>schema</code>: type of schema to be used
  * (default: <code>"derby"</code>)</li>
- * <li><code>user</code>: the database user (default: <code>""</code>)</li>
- * <li><code>password</code>: the user's password (default: <code>""</code>)</li>
+ * <li><code>user</code>: the database user (default: <code>null</code>)</li>
+ * <li><code>password</code>: the user's password (default: <code>null</code>)</li>
  * <li><code>externalBLOBs</code>: if <code>true</code> (the default) BINARY
  * values (BLOBs) are stored in the local file system;
  * if <code>false</code> BLOBs are stored in the database</li>
+ * <li><code>shutdownOnClose</code>: if <code>true</code> (the default) the
+ * database is shutdown when the last connection is closed;
+ * set this to <code>false</code> when using a standalone database</li>
  * </ul>
  * See also {@link SimpleDbPersistenceManager}.
  * <p/>
@@ -65,6 +69,11 @@
     private static Logger log = LoggerFactory.getLogger(DerbyPersistenceManager.class);
 
     /**
+     * Flag indicating whether this derby database should be shutdown on close.
+     */
+    protected boolean shutdownOnClose;
+
+    /**
      * Creates a new <code>SimpleDbPersistenceManager</code> instance.
      */
     public DerbyPersistenceManager() {
@@ -72,8 +81,15 @@
         schema = "derby";
         driver = "org.apache.derby.jdbc.EmbeddedDriver";
         schemaObjectPrefix = "";
-        user = "";
-        password = "";
+        shutdownOnClose = true;
+    }
+
+    public boolean getShutdownOnClose() {
+        return shutdownOnClose;
+    }
+
+    public void setShutdownOnClose(boolean shutdownOnClose) {
+        this.shutdownOnClose = shutdownOnClose;
     }
 
     //------------------------------------------< DatabasePersistenceManager >
@@ -103,12 +119,14 @@
         connection.setAutoCommit(true);
         connection.close();
 
-        // now it's safe to shutdown the embedded Derby database
-        try {
-            DriverManager.getConnection(url);
-        } catch (SQLException e) {
-            // a shutdown command always raises a SQLException
-            log.info(e.getMessage());
+        if (shutdownOnClose) {
+            // now it's safe to shutdown the embedded Derby database
+            try {
+                DriverManager.getConnection(url);
+            } catch (SQLException e) {
+                // a shutdown command always raises a SQLException
+                log.info(e.getMessage());
+            }
         }
     }
 }