vgritsenko 2003/12/14 10:20:58
Modified: java/src/org/apache/xindice/server XindiceServlet.java
Log:
Close couple of TODOs in servlet
Revision Changes Path
1.25 +19 -23
xml-xindice/java/src/org/apache/xindice/server/XindiceServlet.java
Index: XindiceServlet.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/server/XindiceServlet.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- XindiceServlet.java 13 Dec 2003 00:24:14 -0000 1.24
+++ XindiceServlet.java 14 Dec 2003 18:20:58 -0000 1.25
@@ -101,17 +101,17 @@
public void destroy() {
try {
- // When the servlet engine goes down we need to close the
- // database instance.
- // TODO: make sure we're handling threads properly in this case.
- if (database != null) {
- database.close();
+ // When the servlet engine goes down we need to close the
database instance.
+ // By the time destroy() is called, no more client requests can
come in,
+ // so no need to worry about multithreading.
+ if (this.database != null) {
+ this.database.close();
+ log.info("Database successfully closed");
}
-
- log.info("Database successfully closed");
} catch (Exception e) {
- log.error("Error in destroy", e);
+ log.error("Error closing database", e);
}
+ this.database = null;
}
/**
@@ -135,8 +135,7 @@
}
/**
- * TODO: verify that if is an error occured, the database will be closed
- * propertly
+ * Initializes database
*/
public void init(ServletConfig servletConfig) throws ServletException {
@@ -168,8 +167,8 @@
//
if (!new File(dbRoot).isAbsolute()) {
- // Stupid hack but spec compliant.
- // If getRealPath() returns null the war archive
has not been unpacked.
+ // Stupid hack but spec compliant:
+ // If getRealPath() returns null the war archive has not
been unpacked.
String realPath =
servletConfig.getServletContext().getRealPath("/WEB-INF");
// Let's see if the property was specified.
@@ -197,7 +196,7 @@
//
// We need to use this method to be consistent between
deployments (embed, standalone, etc)
- // and let the Database object maintain the set of
Databases.
+ // and let the Database object maintain the set of Databases.
//
this.database =
Database.getDatabase(rootCollectionConfiguration);
}
@@ -244,15 +243,10 @@
}
log.info("Database successfully started");
- } catch (RuntimeException e) {
- if (log.isFatalEnabled()) {
- log.fatal("ignored exception", e);
- }
- throw new ServletException("Error while handling the
configuration", e);
} catch (Exception e) {
- if (log.isFatalEnabled()) {
- log.fatal("ignored exception", e);
- }
+ log.fatal("Failed to initialize database, throwing
ServletException", e);
+ // Make sure to close database if it was opened already.
+ destroy();
throw new ServletException("Error while handling the
configuration", e);
}
}
@@ -264,6 +258,8 @@
* configuration file</li>
* <li>use the default configuration stored in the <tt>Xindice</tt>
class</li>
* </ul>
+ *
+ * <br/>
* TODO: we should probably try to load from the file system if we can't
load it this way.
*/
public Configuration loadConfiguration(ServletConfig servletConfig) {