2011-02-10 13 views
3

定期的にタスクを実行し、Jettyコンテナを使用しているシンプルなGroovletを作成したいと思います。このタスクを達成する最も簡単な方法は何ですか?私はQuartzを使うべきだと思っていますが、Jettyとの統合方法がわかりません。タスクを開始および停止するためのコントロールパネルを作成する必要がありますか?私が見ることができる簡単な例はありますか?Jettyでスケジュールされたタスク

答えて

2

ジョブ設定ファイル "jobconf.xml"またはジョブを設定する必要があるプロパティファイルを作成する必要があります。このファイルは、アプリケーションのクラスパスまたはjettyのいずれかに追加する必要があります。

<web-app> 
<servlet> 
<servlet-name>QuartzInitializer</servlet-name> 
<display-name>Quartz Initializer Servlet</display-name> 
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
<init-param> 
<param-name>config-file</param-name> 
<param-value>quartz.properties</param-value> 
</init-param> 
<init-param> 
<param-name>shutdown-on-unload</param-name> 
<param-value>true</param-value> 
</init-param> 

<init-param> 
<param-name>start-scheduler-on-load</param-name> 
<param-value>true</param-value> 
</init-param> 

</servlet> 

<servlet> 
<servlet-name>first</servlet-name> 
<servlet-class>com.v2sol.StartQuartz</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>first</servlet-name> 
<url-pattern>/fst</url-pattern> 
</servlet-mapping> 

<servlet> 
<servlet-name>one</servlet-name> 
<servlet-class>com.v2sol.ExcelDBServlet</servlet-class> 
<init-param> 
<param-name>cronExpr</param-name> 
<param-value>0,30 * * ? * MON-FRI</param-value> 
</init-param> 
</servlet> 

<servlet-mapping> 
<servlet-name>one</servlet-name> 
<url-pattern>/excel</url-pattern> 
</servlet-mapping> 


</web-app> 

と使用スケジューラをサーブレットに:

System.out.println("Initializing Scheduler PlugIn for Jobs!"); 
super.init(config); 
ServletContext ctx = config.getServletContext(); 
Scheduler scheduler = null; 
StdSchedulerFactory factory = (StdSchedulerFactory) 
ctx.getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY); 

try { 
scheduler = factory.getScheduler(); 
JobDetail jd = new JobDetail("job1", "group1",ExcelJob.class); 
CronTrigger cronTrigger = new CronTrigger("trigger1","group1"); 
String cronExpr = null; 
cronExpr = getInitParameter("cronExpr"); 
System.out.println(cronExpr); 
cronTrigger.setCronExpression(cronExpr); 
scheduler.scheduleJob(jd, cronTrigger); 
System.out.println("Job scheduled now .."); 

} catch (Exception e){ 
e.printStackTrace(); 
} 
0

クォーツスケジューラを作成し、アプリケーションコンテキストに配置します。 Groovletにアクセスすると、新しいタスクを実行して実行中のものを操作できます。

5

クォーツよりも単純な解決策がにある

は、次のようなあなたのweb.xmlおよびサーブレットのparamsにQuartzInitializerを追加する必要がありますJDKによって提供されるTimerおよびTimerTaskクラスを使用します。さまざまなスケジューリングオプションを提供するわけではありませんが、一定の間隔でタスクを実行したいだけなら、十分なはずです。

コンソールを起動してタスクを開始する必要がある場合は、自分で書き込むか、Timerへのアクセスを提供するJMX Beanを作成し、JMXコンソールを使用して呼び出す必要があります。

関連する問題