java – 如何在我的Web应用程序中启动和继续运行hsqldb在服务器
发布时间:2020-12-15 00:09:55 所属栏目:Java 来源:网络整理
导读:我不想在嵌入式模式下使用它,因为我可能允许其他外部应用程序访问它.而且我想在Tomcat加载我的应用程序的同时执行服务器的启动(或者只是在tomcat运行的时候).这样我就不必要求客户端用命令或脚本来手动运行hsqldb,然后才能将我的战争置于tomcat并运行它(以保
我不想在嵌入式模式下使用它,因为我可能允许其他外部应用程序访问它.而且我想在Tomcat加载我的应用程序的同时执行服务器的启动(或者只是在tomcat运行的时候).这样我就不必要求客户端用命令或脚本来手动运行hsqldb,然后才能将我的战争置于tomcat并运行它(以保持简单).
我可以通过从Java发送命令从main调用Server,但这将给我一个无休止的线程,我不知道如何处理.有没有更容易的测试方法来做到这一点? 解决方法
根据HSQLDB文档可能从Java代码启动数据库:
因此,当Web应用程序启动时,您可以使用servlet加载数据库.步骤如下: >创建一个Servlet“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.这是为了在Web应用程序启动时调用方法init(). <servlet> <servlet-name>InitDatabase</servlet-name> <servlet-class>bo.hsqltest.InitDatabase</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 这样做后,Web应用程序将在新的线程中启动HSQLDB.为了关闭数据库,当应用程序停止时,您可以覆盖InitServlet的destroy()方法.在方法destroy中,您必须执行命令“SHUTDOWN”作为正常的sql查询(通过JDBC). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |