0

war ファイルがサーバーにデプロイされる前に、毎回 Java コードを実行する必要がありJettyます。私の必要性は、新しい戦争を展開するたびに、データベースをクリーンアップし、展開前にいくつかのレコードを追加する Java コードを実行する必要があることです。

これはアプリケーションの起動時に記述できますが、展開が行われるときに 1 回限りのプロセスです。

誰でもこれを行う方法を提案できますか。ありがとう。

4

2 に答える 2

1

これを行う方法は、ContextListener からコードを呼び出すことですが、新しい WAR ファイルがデプロイされているときにコードを 1 回だけ実行するために、WAR のファイルにフラグを置きます。

たとえば、空のファイルをWARに特定の名前で配置し、ContextListenerのコードで次のようにすることができます。

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

もう 1 つの (よりクリーンな?) 方法は、次のような初期値 false で構成プロパティ ファイルにプロパティを配置することです。

initialDeploymentCodeExecuted=false

次に、ファイル全体ではなく、このプロパティを確認します。false の場合に実行されるコードで true に変更します。

于 2013-03-11T08:07:27.883 に答える
0

コンテキストリスナーはどうですか?contextInitialized()メソッドに db クリーンアップ コードを追加できます。

于 2013-03-11T07:11:28.863 に答える