WARのデプロイ中にJavaメソッドを呼び出す方法
4 に答える
「デプロイ」の意味は明確ではありません。それはWARファイルがアプリサーバーに到着した瞬間ですか?たぶん、あなたはAntで何かを始めます。それはアプリが起動したときですか?たぶん、 ServletContextListenerでそれを行うことができます。
私が知っているJavaEEアプリサーバーにこれを組み込むためのメカニズムはないので、Antが適切でない場合は運が悪いです。あなたはあなたのためにそれをするために展開をする何かを必要とします。
そうするためのあなたの目的は何ですか?この方法は何をしますか?
複数のソリューションを利用できます。
- ServletContextListenerを使用して、起動イベントをリッスンし、適切なアクションを実行できます。
- 属性を持つServletを使用して同じことを行うことができます。
load-on-startup
サーブレットを にマップする必要はservlet-path
なく、起動アクションにのみ使用できます。 @Startup
Java EE 6 を使用している場合は、起動時にサービスをインスタンス化する アノテーションが付けられた EJB を使用できます。@PostConstruct
アノテーションは、インスタンス化後に実行するメソッドを宣言します。これは EJB シングルトンでのみ機能することに注意してください。
使用できますServletContextListener
この機能を Web アプリに組み込みたい場合は、 ServletContextListenerが適切な場所です。
ServletContextListenerインターフェースの実装は、実装が含まれる Web アプリケーションのサーブレット コンテキストの変更に関する通知を受け取ります。次のメソッドが ServletContextListener で定義されています。
public void contextInitialized(ServletContextEvent sce)
public void contextDestroyed(ServletContextEvent sce)
contextInitialized() メソッドは、Web アプリケーションがサービスの準備ができたときに呼び出され、contextDestroyed() メソッドは、Web アプリケーションがシャットダウンしようとしているときに呼び出されます。次のコードは、これらのメソッドを使用してアプリケーション イベントをログに記録する方法を示しています。
public void contextInitialized(ServletContextEvent e) {
e.getServletContext().log("Context initialized");
}
public void contextDestroyed(ServletContextEvent e) {
e.getServletContext().log("Context destroyed");
}
例を参照するか、監視ツールと同じように、コンテナ/サーバーを拡張して監視することができます。