Ответ 1
В соответствии с документацией HSQLDB можно запустить базу данных из Java-кода: http://hsqldb.org/doc/2.0/guide/listeners-chapt.html#listeners_appstart-sect. Таким образом, вы можете использовать сервлет для загрузки базы данных при запуске веб-приложения. Шаги должны быть следующими:
-
Создайте сервлет "InitDatabase" и поместите код для запуска базы данных по методу init()
@Override public void init() throws ServletException { super.init(); try { System.out.println("Starting Database"); HsqlProperties p = new HsqlProperties(); p.setProperty("server.database.0", "file:/opt/db/crm"); p.setProperty("server.dbname.0", "mydb"); p.setProperty("server.port", "9001"); Server server = new Server(); server.setProperties(p); server.setLogWriter(null); // can use custom writer server.setErrWriter(null); // can use custom writer server.start(); } catch (AclFormatException afex) { throw new ServletException(afex); } catch (IOException ioex) { throw new ServletException(ioex); } }
-
В вашем web.xml добавьте загрузку свойства при запуске и установите значение 1. Это для вызова метода init() при запуске веб-приложения.
<servlet> <servlet-name>InitDatabase</servlet-name> <servlet-class>bo.hsqltest.InitDatabase</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
После этого веб-приложение запустит HSQLDB в новом потоке. Для завершения работы базы данных при остановке приложения вы можете переопределить метод destroy() InitServlet. В методе destroy вы должны выполнить команду "SHUTDOWN" как обычный SQL-запрос (через JDBC).