免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1127 | 回复: 0
打印 上一主题 下一主题

hsqldb web server 自动启动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-18 21:22 |只看该作者 |倒序浏览
web.xml
============================================
  hsql.dbPath
  /apps/db/


  hsql.dbName
  mydb


  hsql.port
  9999


  
   cn.scorpionsoft.distributor.HSQLDBStartListener
  


============================================

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) {
   ;
  }
}
}



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8718/showart_425372.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP