0

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

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

谁能建议如何做到这一点。谢谢。

4

2 回答 2

1

一种方法是从 ContextListener 调用代码,但在 WAR 文件中放置一个标志,以便在部署新的 WAR 文件时仅执行一次代码。

例如,您可以在 WAR 中放置一个具有特定名称的空文件,并在 ContextListener 的代码中执行以下操作:

if(file is present){
  do something, call DB etc
  delete(file)
}

另一种(也许更干净?)方法是将属性放在初始值为 false 的配置属性文件中,例如:

initialDeploymentCodeExecuted=false

然后检查此属性而不是整个文件。如果为假,则在执行的代码中将其更改为真。

于 2013-03-11T08:07:27.883 回答
0

上下文监听器怎么样?您可以在contextInitialized()方法中添加您的数据库清理代码。

于 2013-03-11T07:11:28.863 回答