9

Webアプリケーションの起動時にメソッドを呼び出そうとしています。目的は、定義された間隔でいくつかの作業を行うタイマーを開始することです。jboss 7.1 Webアプリケーションの起動時に関数helloworldを呼び出すにはどうすればよいですか?

4

4 に答える 4

7

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>

お役に立てれば。

于 2013-03-24T01:25:43.273 に答える
5

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自体には、その目的のためのツールがいくつかあります。タスクのスケジューリングと管理です。使用したことがないのでお勧めできません。

于 2013-03-24T01:26:03.347 に答える
2

QuartzSchedulerをチェックしてください。CronTriggerを使用して、定義された間隔で発砲できます。たとえば、5分ごとは次のようになります。

"0 0/5 * * * ?"

アイデアは、実行するタスクであるインターフェースを実装し、 /Jobを使用してそれをスケジュールし、を構築して開始することです。SchedulerFactorySchedulerJobCronTrigger

ここに非常に明確な例があります。

于 2013-03-24T01:07:28.140 に答える
1

で構成されたを使用ServletContextListenerしますweb.xml。メソッドにタイマーを開始するコードを記述しcontextInitializedます。

于 2013-03-24T01:06:57.517 に答える