Webアプリケーションの起動時にメソッドを呼び出そうとしています。目的は、定義された間隔でいくつかの作業を行うタイマーを開始することです。jboss 7.1 Webアプリケーションの起動時に関数helloworldを呼び出すにはどうすればよいですか?
4 に答える
Webアプリがクライアントにサービスを提供する前にコードを実行する場合は、ServletContextListenerが必要です。
リスナークラスを作成する
import javax.servlet.*;
public class MyServletContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent e) {
//Call your function from the event object here
}
public void contextDestroyed(ServletContextEvent e) {
}
}
クラスをWEB-INF/classesに配置します
< listener >要素をweb.xmlファイルに配置します。
<listener>
<listener-class>
com.test.MyServletContextListener
</listener-class>
</listener>
お役に立てれば。
ContextListeners以外に、起動時にweb.xmlにサーブレットをロードすることもできます。
<servlet>
<servlet-name>mytask</servlet-name>
<servlet-class>servlets.MyTaskServlet</servlet-class>
...
<load-on-startup>1</load-on-startup>
</servlet>
このサーブレットは、必要な手段を使用してタスクを開始できます。たとえば、このリンクを参照してください。
しかし、あなたはそのアプローチを使うべきではありません、私見。
クォーツまたは同様のツールのような実績のあるフレームワーク/ライブラリを使用します。Webサーバーでのタスクの実行と同期には多くの問題/問題があり、これらのツールがすでに満たして解決した間違いを繰り返すよりも、実績のあるツールを使用する方が適切です。把握するのに少し時間がかかるかもしれませんが、多くの頭痛を避けることができます。
Jboss自体には、その目的のためのツールがいくつかあります。タスクのスケジューリングと管理です。使用したことがないのでお勧めできません。
QuartzSchedulerをチェックしてください。CronTriggerを使用して、定義された間隔で発砲できます。たとえば、5分ごとは次のようになります。
"0 0/5 * * * ?"
アイデアは、実行するタスクであるインターフェースを実装し、 /Job
を使用してそれをスケジュールし、を構築して開始することです。SchedulerFactory
Scheduler
Job
CronTrigger
ここに非常に明確な例があります。
で構成されたを使用ServletContextListener
しますweb.xml
。メソッドにタイマーを開始するコードを記述しcontextInitialized
ます。