2011-02-08 6 views
1

私は1週間これを苦労しています。 Jboss5.1.x、EJB3.0、quartz1.8を使用しています。 文書に私を参照する人がいますが、no1が実際に手がかりを覚えているか、わかりません。サーバーのデプロイ時にQuartzを起動する方法がありません

EJB BeanでJavaコードを起動してクォーツをスケジュールする方法はありますか? 私はすでに石英スケジューラを初期化してループする方法を理解していましたが、実際にアプリケーションデプロイメントのスケジューラのINITメソッドをどのように呼び出すのですか?

最初にQuartzをスケジュールするinitメソッドを呼び出すためにJBOSSスケジューラが必要な場合は、Quartzは役に立たない!私はちょうどJbossスケジューラを続けるだろう。

誰にでも解決策がありますか?

ありがとう、 ray。

答えて

0

はい、しかし私が望んでいたのは、私のクォーツを展開することです。私が使用しているソリューションが見つかりました

@Service(objectName = "..") 
@Management(...) 

このクラスは、プロジェクトが展開されるとすぐに起動します。

0

あなたの質問は分かりませんが、静的変数にQuartzスケジューラファクトリを保存して、静的初期化子または静的メソッドで初期化することはできませんか?何かのように:

public static Scheduler sched; 

public static void init(ServletContext servletContext) throws SchedulerException { 
    if (sched == null || !sched.isStarted()) { 
     String quartzPropertiesLocation = UtilityClass.getYourQuartzConfig(); 
     try { 
      log.info(new File(quartzPropertiesLocation).getCanonicalPath()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(quartzPropertiesLocation); 
     sched = schedFact.getScheduler(); 
     sched.getContext().put(ServletContext.class.getName(), servletContext); 
     sched.start(); 
    } 
} 
関連する問題