package com.jinhe.tss.component.support.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.h2.tools.Server;
public class H2DBServer implements IH2DBServer{
protected Logger log = Logger.getLogger(this.getClass());
private Server server;
public static String URL = "jdbc:h2:mem:h2db;DB_CLOSE_DELAY=-1"; // Connection关闭时不停用H2 server
// public static String URL = "jdbc:h2:mem:h2db"; // 默认在Connection关闭时停用H2 server
public static String user = "sa";
public static String password = "123";
public static int PORT = 9081;
boolean isPrepareed = false;
Connection conn;
public H2DBServer() {
try {
log.info("正在启动H2 database...");
server = Server.createTcpServer(new String[] { "-tcpPort", (PORT++) + ""}).start(); // 此时H2数据库只起来了服务,没有实例
Class.forName("org.h2.Driver");
conn = DriverManager.getConnection(URL, user, password); // 在以URL取得连接以后,数据库实例h2db才创建完成
} catch (Exception e) {
log.info("启动H2 database出错:" + e.toString());
}
}
public void stopServer() {
if (server != null) {
log.info("正在关闭H2 database...");
try {
conn.close();
} catch (SQLException e) {
log.info("关闭H2 database连接出错:" + e.toString());
throw new RuntimeException(e);
}
server.shutdown();
log.info("关闭H2 database成功.");
}
}
public static void main(String[] args) {
H2DBServer h2 = new H2DBServer();
h2.stopServer();
}
public boolean isPrepareed() {
return isPrepareed;
}
public void setPrepareed(boolean isPrepareed) {
this.isPrepareed = isPrepareed;
}
}