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