nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

JBoss ASで定期処理

EC-One ナレッジセンター レスキューサービス ブログ さんの方で見かけたトピック。035 jboss-5.1.0.GAでcronのような定期処理を実現という記事。

一番簡単な方法が紹介されていなかったので紹介。その方法というのはMDBコンパイルしてデプロイすればおしまい。cron形式で実行を指定できる。

http://community.jboss.org/wiki/QuartzSchedulerIntegration

以下コード例。

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;

import org.jboss.annotation.ejb.ResourceAdapter;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

@MessageDriven(
    activationConfig={
        @ActivationConfigProperty(propertyName="cronTrigger", propertyValue="0/30 * * * * ?")
    })
@ResourceAdapter("quartz-ra.rar")
public class QuartzJobMDB implements Job {
    public void execute(JobExecutionContext jobExecutionContext)
        throws JobExecutionException {
        System.out.println(new java.util.Date());
    }
}

単純なインターバル処理だったら前に書いたBeanShellでサクっと作っちゃってももちろん良い。