每次在Jetty
服务器中部署war文件之前,我都需要执行一个java代码。我的需要是,每次部署新战争时,我都需要运行一个 java 代码来清理我的数据库并在部署前添加一些记录。
我可以在应用程序启动时编写它,但它是部署发生时的一次性过程。
谁能建议如何做到这一点。谢谢。
每次在Jetty
服务器中部署war文件之前,我都需要执行一个java代码。我的需要是,每次部署新战争时,我都需要运行一个 java 代码来清理我的数据库并在部署前添加一些记录。
我可以在应用程序启动时编写它,但它是部署发生时的一次性过程。
谁能建议如何做到这一点。谢谢。
一种方法是从 ContextListener 调用代码,但在 WAR 文件中放置一个标志,以便在部署新的 WAR 文件时仅执行一次代码。
例如,您可以在 WAR 中放置一个具有特定名称的空文件,并在 ContextListener 的代码中执行以下操作:
if(file is present){
do something, call DB etc
delete(file)
}
另一种(也许更干净?)方法是将属性放在初始值为 false 的配置属性文件中,例如:
initialDeploymentCodeExecuted=false
然后检查此属性而不是整个文件。如果为假,则在执行的代码中将其更改为真。
上下文监听器怎么样?您可以在contextInitialized()方法中添加您的数据库清理代码。