我是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注释,但是我需要添加到我的方法中吗?我认为/我希望我需要在某处进行额外配置,但不确定在哪里。
有人能指出我正确的方向吗?
谢谢,
埃里克
答案 0 :(得分:0)
如果你真的想使用jboss,我会尝试将传递给SchedulerFactoryBean的schedulerName属性与捆绑的调度程序之一进行匹配。捆绑的调度程序可以通过JNDI检索,我认为它的名字是“Quartz”。
看看org.springframework.scheduling.quartz.SchedulerFactoryBean #createScheduler,它首先尝试在静态SchedulerRepository中查找调度程序。