我正在开发一个具有HSQLDB持久性的Web项目。我的数据库实例处于服务器模式,因此,我需要运行cmd脚本/ Java方法来访问我的架构。
Tomcat是我用来在端口8080上放弃战争的容器.Gradle是我的构建系统。
目前我在部署应用程序之前使用以下main
方法在运行时正确访问我的数据库:
public static void main(String[] args) throws IOException, ServerAcl.AclFormatException {
final String URL = "file:~/db/cursago";
String user = "user";
String password = "password";
HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0",URL+";user="+user+";password="+password);
p.setProperty("server.dbname.0","cursago");
Server server = new Server();
server.setProperties(p);
server.setLogWriter(null);
server.setErrWriter(null);
server.start();
System.out.println("Database is running with path: " + URL);
System.out.println("Username: " + user+", Password: " + password);
}
我想知道是否有一种方法可以让Tomcat / Gradle / IntelliJ IDEA在项目部署之前运行此主要方法,而不是手动运行此脚本。
答案 0 :(得分:0)
来自here:
您可以在main
中运行onApplicationEvent
的内容,例如:
public class ApplicationListenerBean implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
final String URL = "file:~/db/cursago";
String user = "user";
String password = "password";
HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0",URL+";user="+user+";password="+password);
p.setProperty("server.dbname.0","cursago");
Server server = new Server();
server.setProperties(p);
server.setLogWriter(null);
server.setErrWriter(null);
server.start();
System.out.println("Database is running with path: " + URL);
System.out.println("Username: " + user+", Password: " + password);
}
}
这将触发每个事件,可以是应用程序启动或重新部署,并在应用程序处理请求之前发生。
您也可以连接您的房产。
如果服务器已在运行并且无法仅在此范围内运行,则存在一些困难。