gpt4 book ai didi

java - 在Tomcat部署之前运行java方法启动数据库

转载 作者:行者123 更新时间:2023-11-28 22:25:01 25 4
gpt4 key购买 nike

我正在开发一个具有 HSQLDB 持久性的 Web 项目。我的数据库实例处于服务器模式,因此,我需要运行 cmd 脚本/Java 方法来访问我的模式。

Tomcat 是我用来在端口 8080 上进行 war 的容器。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 在项目部署之前运行这个主要方法,而不是手动运行这个脚本。

最佳答案

来自 here :

您可以在 onApplicationEvent 中运行 main 的内容,例如:

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

这将触发每个事件,可能是应用程序启动或重新部署,并且发生在您的应用程序处理请求之前。

您还可以连接您的属性。

如果服务器已经在运行,并且不能仅在此范围内运行,则存在一些困难。

关于java - 在Tomcat部署之前运行java方法启动数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com