2013-03-24 8 views
7

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

答えて

4

ContextListeners、あなたはまた、起動時にweb.xmlの負荷のサーブレットを持つことができます。

<servlet> 
    <servlet-name>mytask</servlet-name> 
    <servlet-class>servlets.MyTaskServlet</servlet-class> 
    ... 
    <load-on-startup>1</load-on-startup> 
</servlet> 

このサーブレットは、たとえば、このlinkを参照、あなたが望むあらゆる手段を使って、タスクを開始することができます。

しかし、あなたはそのアプローチを使用すべきではありません。

quartzまたは同様のツールのような実績のあるフレームワーク/ libを使用してください。 Webサーバーでのタスクの実行と同期には多くの問題や問題があります。これらのツールがすでに満たされて解決された間違いを繰り返すのではなく、実績のあるツールを使用する方が優れています。把握するのに少し時間がかかるかもしれませんが、多くの頭痛を避けるでしょう。

Jbossには、タスクのスケジューリングと管理のためのツールがあります。決して使用されないのでおすすめできません。

1

web.xmlに設定されているServletContextListenerを使用してください。 contextInitializedメソッドでタイマーを起動するコードを記述します。

2

チェックアウトQuartz Scheduler。定義された間隔で火を発するのにCronTriggerを使うことができます。たとえば、5分ごとに次のようになります。

"0 0/5 * * * ?"

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

非常に明確な例がhereです。

6

Webアプリケーションがクライアントにサービスを提供する前にコードを実行したい場合は、ServletContextListenerが必要です。

< リスナー> web.xmlファイル内の要素を入れてWEB-INF /クラスに

をクラスを入れて、あなたのリスナークラス

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) { 

} 
} 

を作成します。

<listener> 
    <listener-class> 
    com.test.MyServletContextListener 
    </listener-class> 
</listener> 

これが役立ちます。

[その他
+0

contextInitializedメソッド内にHttpサーバーの開始コードを追加できますか – Hema

関連する問題