(refs #106)Don't use DbStarter because GitBucket does not use tcp server and it also create connection for each transaction.

This commit is contained in:
takezoe
2013-10-02 03:31:01 +09:00
parent 4afbfcb016
commit aef3c5c121

View File

@@ -1,9 +1,9 @@
package servlet package servlet
import java.io.File import java.io.File
import java.sql.Connection import java.sql.{DriverManager, Connection}
import org.apache.commons.io.FileUtils import org.apache.commons.io.FileUtils
import javax.servlet.ServletContextEvent import javax.servlet.{ServletContext, ServletContextListener, ServletContextEvent}
import org.apache.commons.io.IOUtils import org.apache.commons.io.IOUtils
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import util.Directory._ import util.Directory._
@@ -108,19 +108,17 @@ object AutoUpdate {
} }
/** /**
* Start H2 database and update schema automatically. * Update database schema automatically in the context initializing.
*/ */
class AutoUpdateListener extends org.h2.server.web.DbStarter { class AutoUpdateListener extends ServletContextListener {
import AutoUpdate._ import AutoUpdate._
private val logger = LoggerFactory.getLogger(classOf[AutoUpdateListener]) private val logger = LoggerFactory.getLogger(classOf[AutoUpdateListener])
override def contextInitialized(event: ServletContextEvent): Unit = { override def contextInitialized(event: ServletContextEvent): Unit = {
event.getServletContext.setInitParameter("db.url", s"jdbc:h2:${DatabaseHome}") event.getServletContext.setInitParameter("db.url", s"jdbc:h2:${DatabaseHome}")
super.contextInitialized(event)
logger.debug("H2 started")
logger.debug("Start schema update") logger.debug("Start schema update")
defining(getConnection()){ conn => defining(getConnection(event.getServletContext)){ conn =>
try { try {
defining(getCurrentVersion()){ currentVersion => defining(getCurrentVersion()){ currentVersion =>
if(currentVersion == headVersion){ if(currentVersion == headVersion){
@@ -145,4 +143,14 @@ class AutoUpdateListener extends org.h2.server.web.DbStarter {
logger.debug("End schema update") logger.debug("End schema update")
} }
def contextDestroyed(sce: ServletContextEvent): Unit = {
// Nothing to do.
}
private def getConnection(servletContext: ServletContext): Connection =
DriverManager.getConnection(
servletContext.getInitParameter("db.url"),
servletContext.getInitParameter("db.user"),
servletContext.getInitParameter("db.password"))
} }