如何配置JBoss / Quartz来运行Spring作业?

时间:2011-07-22 03:40:34

标签: spring jboss quartz-scheduler

我是JBoss的新手,多年来一直使用tomcat。我有一个Spring 3.0.x应用程序,我需要定期运行一个作业。在过去,我只是创建我的作业类作为常规POJO,然后创建我的作业/触发器作为Spring的CronTriggerBean传递一个MethodInvokingJobDetailFactoryBean作为我的jobDetail。

例如:

  <bean id="session.manage.UserSessionPurgeAction.trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="cronExpression" value="0 */5 * * * ? *" />
            <property name="jobDetail">
                    <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                      <property name="name"><idref bean="session.manage.UserSessionPurgeAction" /></property>
                      <property name="group" value="cleanup" />
                            <property name="targetObject" ref="session.manage.UserSessionPurgeAction" />
                            <property name="targetMethod" value="execute" />
                            <property name="concurrent" value="false" />
                    </bean>
            </property>
    </bean>

在这个新项目中,系统架构师已经要求在JBoss 6下运行Spring应用程序。我知道JBoss内置了一个石英调度程序,所以我不知道如何打包/声明我的工作使它正在使用JBoss的调度程序,而不是像过去那样将它构建到应用程序中。

我在网上搜索过,但似乎无法找到我需要的必要胶水信息。我知道javax.ejb中有一个@Schedule注释,但是我需要添加到我的方法中吗?我认为/我希望我需要在某处进行额外配置,但不确定在哪里。

有人能指出我正确的方向吗?

谢谢,

埃里克

1 个答案:

答案 0 :(得分:0)

如果你真的想使用jboss,我会尝试将传递给SchedulerFactoryBean的schedulerName属性与捆绑的调度程序之一进行匹配。捆绑的调度程序可以通过JNDI检索,我认为它的名字是“Quartz”。

看看org.springframework.scheduling.quartz.SchedulerFactoryBean #createScheduler,它首先尝试在静态SchedulerRepository中查找调度程序。