如何在部署之前执行java程序

时间:2013-03-11 06:52:24

标签: java deployment jetty

每次在Jetty服务器中部署war文件之前,我都需要执行java代码。我需要的是,每次部署新战争时,我都需要运行一个java代码来清理我的数据库并在部署之前添加一些记录。

我可以在应用程序启动时编写它,但在部署时它是一次性过程。

任何人都可以建议如何做到这一点。感谢。

2 个答案:

答案 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()方法添加数据库清理代码。