`

一个java嵌入数据库hsql 的web自启动部署

阅读更多
web.xml
============================================
<context-param>
  <param-name>hsql.dbPath</param-name>
  <param-value>/apps/db/</param-value>
 </context-param>
 <context-param>
  <param-name>hsql.dbName</param-name>
  <param-value>mydb</param-value>
 </context-param>
 <context-param>
  <param-name>hsql.port</param-name>
  <param-value>9999</param-value>
 </context-param>
 <listener>
  <listener-class>
   cn.scorpionsoft.distributor.HSQLDBStartListener
  </listener-class>
 </listener>
============================================
HSQLDBStartListener.java
package cn.scorpionsoft.distributor;
import org.hsqldb.Server;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/**
 * 自动开启 HSQLDB 服务
 *
 * @author 抽支烟
 *
 */
public class HSQLDBStartListener implements ServletContextListener {
 /**
  * 初始化
  */
 public void contextInitialized(ServletContextEvent sce) {
  String dbName = sce.getServletContext().getInitParameter("hsql.dbName");
  String path = sce.getServletContext().getInitParameter("hsql.dbPath");
  int port = -1;
  try {
   port = Integer.parseInt(sce.getServletContext().getInitParameter(
     "hsql.port"));
  } catch (Exception e) {
   port = 9999;
  }
  if (dbName == null || dbName.equals("")) {
   System.out
     .println("Cant' get hsqldb.dbName from web.xml Context Param");
   return;
  }
  File dbDir = new File(path);
  if (!dbDir.exists()) {
   if (!dbDir.mkdirs()) {
    System.out.println("Can not create DB Dir for Hsql:" + dbDir);
    return;
   }
  }
  if (!path.endsWith("/")) {
   path = path + "/";
  }
  File scriptFile = new File(path + dbName + ".script");
  File propertiesFile = new File(path + dbName + ".properties");
  if (propertiesFile.exists()) {
   this.startServer(path, dbName, port);
   
  } else {
   System.out
     .println("Connect failed:Connect Hsqldb error or database files not exits!");
  }
  
  
 }
 /**
  * 启动 Hsqldb 服务的方法。
  *
  * @param dbPath
  *            数据库路径
  * @param dbName
  *            数据库名称
  * @param port
  *            端口号
  */
 private void startServer(String dbPath, String dbName, int port) {
  Server server = new Server();// 它可是hsqldb.jar里面的类啊。
  server.setDatabaseName(0, dbName);
  server.setDatabasePath(0, dbPath + dbName);
  if (port != -1) {
   server.setPort(port);
  }
  server.setSilent(true);
  server.start();
  System.out.println("HSQLDB started...");
  
 }
/**
  * Listener 销毁方法,在 Web 应用终止的时候执行"shutdown"命令关闭数据库.
  */
 public void contextDestroyed(ServletContextEvent arg0) {
 
  Connection conn = null;
  try {
   Class.forName("org.hsqldb.jdbcDriver");
   conn = DriverManager.getConnection(
     "jdbc:hsqldb:hsql://localhost:9999/mydb", "sa", "");
   Statement stmt = conn.createStatement();
   stmt.executeUpdate("SHUTDOWN;");
  } catch (Exception e) {
   ;
  }
 }
}
3
0
分享到:
评论

相关推荐

    HSQL安装部署使用手册

    在你的`applicationcontext.xml`配置文件中,添加如下配置来创建一个基于Apache Commons DBCP的数据源,用于连接HSQL数据库: ```xml &lt;bean id="Hsql" class="org.apache.commons.dbcp.BasicDataSource"&gt; ...

    微型数据库HSQL

    HSQL是一个用java语言写的微型数据库,其大小在800k左右。麻雀虽小,但五脏俱全,数据库该有的功能他都有。同样是小型数据库,它要不ACCESS好的多,因为他有JDBC包,而且JDBC包和数据库实体是同一个文件,这就是说...

    hsql-file数据库的java简单调用实现

    2. **创建数据库文件**: 使用HSQLDB提供的命令行工具或者Java API创建一个新的数据库文件,例如`test.db`。 3. **启动数据库服务器**: 使用`hsqldb.server`脚本或Java类启动HSQLDB服务器,确保它监听适当的端口...

    HSQL数据库下载

    总的来说,HSQLDB作为一个轻量级的Java数据库,提供了高效、灵活且易于使用的解决方案,尤其适合于开发、测试和快速原型构建等场景。其小巧的体积、高性能以及与Java的紧密集成,使得HSQLDB在IT行业中得到了广泛应用...

    hsql数据库详细教程.pdf

    hsql 数据库详细教程 ...* Java 编程,需要一个支持Java 的数据库引擎。 * 需要支持SQL99 和SQL2003的大部分标准的数据库引擎。 hsql 数据库是一款功能强大且体积小的数据库引擎,适合小型应用程序和Java 编程。

    收集的全部HSQL DataBase资料(HSQL DataBase-关于Java 的纯数据库)

    HSQL Database,全称为HyperSQL Database,是一款轻量级、高性能、开源的SQL关系型数据库管理系统,特别适合于Java应用程序。这款数据库系统以其简洁的API、快速的性能和全面的SQL支持,在Java开发环境中得到了广泛...

    嵌入式数据库hsql

    HSQLDB is a relational database engine and a set of tools written in Java. The file index.html in this directory contains the list of directories with their contents. Documentation and license ...

    如何使用hsql数据库

    如何使用hsql数据库

    有关hsql处理文本数据库的笔记

    在命令行或通过Java API,你可以启动一个HSQL数据库引擎,并定义一个数据库模式。例如,你可以创建一个名为`cc`的模式来对应我们的`cc.csv`文件。 ```sql CREATE SCHEMA CC; USE CC; ``` 接下来,我们需要创建一个...

    用maven构建SpringMVC+JPA+Hibernate+Hsql+jetty的web项目

    6. Jetty:Jetty是一个开源的HTTP服务器和Servlet容器,它可以嵌入到Java应用程序中,无需单独部署服务器。这使得快速启动和停止Web应用成为可能,尤其适合于开发和测试环境。 在构建这个项目时,首先你需要在pom....

    HSQL数据库2.2.5

    1. 配置简单:HSQLDB可以通过简单的配置文件启动,也可以作为Java应用程序的一部分直接嵌入。 2. JDBC驱动:作为Java数据库,HSQLDB提供了JDBC驱动,可以方便地与Java应用进行集成。 七、总结 HSQLDB 2.2.5以其轻...

    Spring数据库访问(HSQL)(三)

    在本篇博文中,我们将深入探讨Spring...总的来说,这篇博文可能详细介绍了Spring与HSQL数据库的整合,包括配置、操作和测试等方面,为读者提供了一个清晰的实践指南,帮助他们更好地理解和运用Spring的数据访问功能。

    java开发操作数据库架包

    至于HSQL,这是一个轻量级的、纯Java的SQL数据库引擎,常用于测试和嵌入式应用。它的优点在于快速启动,内存模式下运行无需额外配置,适合单元测试和开发环境。HSQL支持多种数据库模式,包括单用户、多用户和网络...

    hsql数据库,体积最小的数据库,使用最方便的数据库

    hsql数据库,体积最小的数据库,使用最方便的数据库,不用安装,解压就能用,携带方便

    Spring数据库访问(HSQL)(四)

    HSQL数据库则是一个轻量级、高性能的开源关系型数据库,常用于测试和快速原型开发。 首先,我们需要理解Spring如何配置数据源。在Spring应用中,数据源是连接到数据库的关键组件。通常,我们可以通过XML配置或Java...

    Hsqldb-java-connection:在Java编程中使用Hsql(内存数据库)数据库

    总之,HSQLDB作为Java应用中的一个强大工具,提供了快速、轻量级的数据库解决方案,无论是开发、测试还是学习,都能发挥重要作用。通过理解并熟练掌握HSQLDB与Java的结合使用,开发者可以更高效地处理数据需求。

    java 数据库驱动大全

    hsqldb.jar HSQL数据库 ---------------------------------------------------------- mysql-connector-java-5.1.6-bin.jar Mysql数据库 ---------------------------------------------------------- sybase.jar ...

Global site tag (gtag.js) - Google Analytics