/*** 该类的职责是在WebApp启动时自动开启HSQL服务.

* 依然使用Server方式,不受AppServer的影响.

*

*@authorfrank

*@authorcalvin*/publicclassHsqlListenerimplementsServletContextListener {protectedstaticLog logger=LogFactory.getLog(HsqlListener.class);privatefinalstaticString DEFAULT_DB_PATH="{user.home}/springside/db";publicvoidcontextInitialized(ServletContextEvent sce) {

logger.info("HsqlListener initialize

");

String dbName=Config.getString("metawork.hsql.dbName");intport=-1;try{

port=Integer.parseInt(Config.getString("metawork.hsql.port"));

}catch(Exception e) {

}if(StringUtils.isEmpty(dbName)) {

logger.error("Cant' get hsqldb.dbName from web.xml Context Param");return;

}

String path=null;try{

path=getDbPath(sce);

}catch(URISyntaxException e) {//TODO Auto-generated catch blocke.printStackTrace();

}

File dbDir=newFile(path);if(!dbDir.exists()) {

logger.info("Create Path:"+path);if(!dbDir.mkdirs()) {

logger.error("Can not create DB Dir for Hsql:"+dbDir);return;

}

}if(!path.endsWith("/"))

path=path+"/";

startServer(path, dbName, port);

}privateString getDbPath(ServletContextEvent sce)throwsURISyntaxException {

String path=Config.getString("metawork.hsql.dbPath");if(StringUtils.isEmpty(path)) {

path=DEFAULT_DB_PATH;

}if(path.startsWith("{user.home}")) {

path=path.replaceFirst("\\{user.home\\}", System.getProperty("user.home").replace('\\','/'));

}if(path.startsWith("{webapp.root}")) {

path=path.replaceFirst("\\{webapp.root\\}", sce

.getServletContext().getRealPath("/").replace('\\','/'));

}if(path.startsWith("{classpath}")) {

path=path.replaceFirst("\\{classpath\\}",this.getClass().getClassLoader().getResource("").toURI().toString().replace("file:/",""));

}returnpath;

}privatevoidstartServer(String dbPath, String dbName,intport) {

Server server=newServer();

server.setDatabaseName(0, dbName);

server.setDatabasePath(0, dbPath+dbName);if(port!=-1)

server.setPort(port);

server.setSilent(true);

server.start();

logger.info("hsqldb started

");//等待Server启动try{

Thread.sleep(800);

}catch(InterruptedException e) {//do nothing}

}publicvoidcontextDestroyed(ServletContextEvent sce) {

String dbName=Config.getString("metawork.hsql.dbName");

Connection conn=null;try{

Class.forName("org.hsqldb.jdbcDriver");

conn=DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:"+Config.getString("metawork.hsql.port")+"/"+dbName,"sa","");

Statement stmt=conn.createStatement();

stmt.executeUpdate("SHUTDOWN;");

}catch(Exception e) {//do nothing}

}

}

hsql导入mysql_在测试过程中使用HSQL数据库相关推荐

  1. 八爪鱼怎样导入mysql_网页数据如何导出到数据库 - 八爪鱼采集器

    本教程将为大家讲解如何将采集好的数据导出到数据库中 目前八爪鱼只支持导出到Mysql和SqlServer中,支持本地采集和云采集,教程将以云采集的数据为示例为大家讲解. 注:导出前需要先建好数据库和数 ...

  2. 浏览器直接连接mysql_在IE中直接连接SQL数据库_MySQL

    使用ODC文档 使用一个ODC文档可以很轻松在IE浏览器中连接到SQL SERVER数据库的表,ODC文档示例如下: xmlns:odc="urn:schemas-microsoft-com ...

  3. dta导入mysql_使用dta 实用工具优化数据库

    dta 实用工具提供了一个命令提示符可执行文件,可以用来优化数据库.该实用工具使您能够在批处理文件和脚本中使用数据库引擎优化顾问的功能.dta 实用工具使用跟踪文件.跟踪表和 Transact-SQL ...

  4. c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

    向数据库的一张表中添加数据,可以采用单个添加,即一条数据.一条数据的添加:也可以采用批量导入,依次将好些条数据写入数据库的一张表中.文本借助实例<添加系列信息>讲解一种向数据库批量导入数据 ...

  5. python批量导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  6. 从某次测试过程中,得到的MySQL性能优化的建议,和定位问题的方法

    MySQL版本5.5 某次测试优化过程中碰到的问题和解决问题的方法,方案.以供各位参考. 一,表结构的优化 问题1,表与字段使用不同的字符集会导致索引失效 我在自己的机器上,没试出来.可能与记录数太少 ...

  7. mapinfo图层导入奥维_(通信技能分享)怎样把谷歌地球上画的路线图导入到测试软件中!...

    对于我们外场的工作人员来说,路线图很重要,但是有些我们没有去过现场,测试过程中又不好看手机看地图,今天我们就来学习一下如何通过谷歌地图画线路图,然后做成tab图层导入测试软件里面去. 1.我们需要先画 ...

  8. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  9. 如何将数据库的数据导入到csv文件中

    如何将数据库的数据导入到csv文件中 2011-01-13 20:23 set colsep ,     -- separate columns with a comma set pagesize 0 ...

  10. 导出Windows服务器下的Oracle数据库并导入到Linux服务器下的Oracle数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 1.Windows Oracle数据库 操作系统:Windows Server 2008 R2 IP地址:192.16 ...

最新文章

  1. 计算机科技协会竞选书,加入计算机协会申请书
  2. DataRow复制一行到另一个DataTable
  3. 数据库连接字符串.udl
  4. 配置解决中文乱码的过滤器
  5. kryoserializer java_使用Kryo序列化任意Java对象(获取IllegalAccess...
  6. 剑指offer51 构建乘积数组(图解)
  7. veket linux软件下载6,veket linux官方
  8. 视频|每日CeBIT:沃森机器人走进生活、三星无线很便利
  9. java数组深拷贝和浅拷贝_java List复制:浅拷贝与深拷贝
  10. RaspberryPi(一)
  11. 基于斥力-张力模型的网络拓扑布局算法(php代码)
  12. 评委输入的密码如果不正确,当错误的次数达到5次时,该评委的账号会被锁定.如何解锁呢?
  13. python 货币换算库,货币转换python代码你知道怎么写吗?
  14. “熊猫烧香”源码启示录
  15. 湖南省工业技师学院计算机证,湖南省工业技师学院
  16. CTF古典密码:移位密码
  17. 项目文档模板_用于启动项目文档的模板
  18. springboot springcloud 启动优化、性能优化
  19. 微信小程序跳转h5链接(web-view)
  20. 机器学习基础---pr曲线的绘制

热门文章

  1. C语言统计素数并求和
  2. idea配置Translation插件为有道翻译引擎
  3. 软件工程first homework
  4. 3D打印切片软件支撑算法研究
  5. php在线画图,详细介绍HTML5简易在线画图工具的实现案例
  6. 单片机程序框架设计与实现
  7. Proteus仿真51单片机
  8. 全国计算机三级网络技术题库南开,计算机三级上机-适用于三级网络技术数据库等(南开100题).doc...
  9. Java新手小白入门篇 Java面向对象(一)
  10. 高德地图通过经纬度获取地区城市