java 代码
package com.b2b.common.web.listener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.hsqldb.Server;
import com.cpic.b2b.common.util.StringUtils;
public class HsqlDBlistener implements ServletContextListener {
protected Logger logger = Logger.getLogger(getClass());
private Server server=new Server();
private String path;
private String dbName;
private int port=-1;
public void contextInitialized(ServletContextEvent sce) {
logger.info(" ============= HsqlListener initialize...");
getInitParam(sce);
// 启动数据库
startServer();
}
/**
* 得到数据库路径
* @param sce
* @return
*/
private String getDbPath(ServletContextEvent sce) {
path = sce.getServletContext().getInitParameter("hsql.dbPath");
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('\\', '/'));
}
return path;
}
/**
* 启动服务
* @param dbPath
* @param dbName
* @param port
*/
private void startServer() {
getServer();
server.start();
logger.info(" ============= hsqldb started...");
// 等待Server启动
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 停止服务
*/
private void stopServer() {
getServer();
server.stop();
logger.info(" ============= hsqldb stopped...");
// 等待Server关闭
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 得到服务
* @param dbPath
* @param dbName
* @param port
*/
private void getServer() {
server.setDatabaseName(0, dbName);
server.setDatabasePath(0, path + dbName);
if (port != -1)
server.setPort(port);
server.setSilent(true);
server.setTrace(true);
}
/**
* 得到初始化的参数
* @param sce
*/
private void getInitParam(ServletContextEvent sce) {
//得到路径
getDPath(sce);
//得到数据库名称
getDName(sce);
// 数据库访问端口
getDPort(sce);
}
private int getDPort(ServletContextEvent sce) {
try {
port = Integer.parseInt(sce.getServletContext().getInitParameter("hsql.port"));
} catch (Exception e) {
e.printStackTrace();
}
return port;
}
/**
* 获取数据库名称
* @param sce
*/
private String getDName(ServletContextEvent sce) {
// 数据库文件名
dbName = sce.getServletContext().getInitParameter("hsql.dbName");
if (StringUtils.isEmpty(dbName)) {
logger.info(" ============= Can't get hsqldb.dbName from web.xml Context Param");
return "";
}
return dbName;
}
/**
* 获取路径
* @param sce
* @return
*/
private String getDPath(ServletContextEvent sce) {
// 获得数据库文件访问路径
path = getDbPath(sce);
if (!path.endsWith("/"))
path = path + "/";
if (StringUtils.isEmpty(path)) {
logger.info(" ============= Can't get hsqldb.path from web.xml Context Param");
logger.debug("hsqldb_path:" + path);
return "";
}
return path;
}
public void contextDestroyed(ServletContextEvent sce) {
logger.info(" ============= HsqlListener destroyed...");
getInitParam(sce);
Connection conn = null;
try {
Class.forName("org.hsqldb.jdbcDriver");
conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:"+port+"/"+dbName+"", "sa", "");
Statement stmt = conn.createStatement();
stmt.executeUpdate("SHUTDOWN;");
logger.info(" ============= hsqldb shutdown...");
} catch (Exception e) {
e.printStackTrace();
}
stopServer();
}
}
web.xml
<context-param>
<param-name>hsql.dbPath</param-name>
<param-value>{webapp.root}/WEB-INF/dbms/db</param-value>
</context-param>
<context-param>
<param-name>hsql.dbName</param-name>
<param-value>message</param-value>
</context-param>
<context-param>
<param-name>hsql.port</param-name>
<param-value>9898</param-value>
</context-param>
<listener>
<listener-class>com.b2b.common.web.listener.HsqlDBlistener</listener-class>
</listener>
spring 数据库配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}">
</property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
jdbc.properties
jdbc.driverClassName=org.hsqldb.jdbcDriver
#jdbc.url=jdbc:hsqldb:hsql:src/DB/message;shutdown=true
jdbc.url=jdbc:hsqldb:hsql://localhost:9898/message
#jdbc.url=jdbc:hsqldb:res:/DB/message
jdbc.username=sa
jdbc.password=
</bean>
分享到:
相关推荐
-- Use a URL like 'jdbc:hsqldb:hsql://localhost:9001' if you want to connect to a ... --> 通过以上配置,Tomcat服务器就可以支持JMS了。 本篇文章提供了在Tomcat下应用JMS的详细实现方法和配置步骤,...
- 将HSQL数据库文件放置于此文件夹中,以便定时器可以访问并使用这些数据。 4. **替换JAR包** - 替换`WEB-INF/lib`目录下的`fr-server-6.5.jar`和`fr-third-6.5.jar`两个JAR包。 5. **查看定时器管理界面** - ...
在web.xml中配置ZK的servlet和监听器,主要是`<listener>`和`<servlet>`元素,它们分别是用于会话销毁时的清理工作和加载ZUML页面的DHtmlLayoutServlet。初始化参数`<init-param>`用于设置更新URI。 通过这个简明...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
wrf转mp4播放器1.1.1
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
国网台区终端最新规范
《基于YOLOv8的智慧农业水肥一体化控制系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
GSDML-V2.33-LEUZE-AMS3048i-20170622.xml
微信小程序项目课程设计,包含LW+ppt
微信小程序项目课程设计,包含LW+ppt
终端运行进度条脚本
幼儿园预防肺结核教育培训课件资料
python,python相关资源
《基于YOLOv8的智慧校园电动车充电桩状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
deepseek 临床之理性软肋.pdf
SM2258XT量产工具(包含16种程序),固态硬盘量产工具使用
RecyclerView.zip
水务大脑让水务运营更智能(23页)
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。