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

如何配置JBoss/Quartz来运行Spring作业?,spring,jboss,quartz-scheduler,Spring,Jboss,Quartz Scheduler,我是JBoss新手,多年来一直在使用tomcat。我有一个Spring3.0.x应用程序,我需要在其中定期运行作业。在过去,我只需将我的作业类创建为常规POJO,然后将我的作业/触发器创建为Spring的CronTriggerBean,并将调用JobDetailFactoryBean的方法作为我的jobDetail传递 例: 在这个新项目中,系统架构师要求在JBoss6下运行Spring应用程序。我知道JBoss内置了一个quartz调度器,所以我不确定如何打包/声明我的作业,使其使用JBo

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

例:


在这个新项目中,系统架构师要求在JBoss6下运行Spring应用程序。我知道JBoss内置了一个quartz调度器,所以我不确定如何打包/声明我的作业,使其使用JBoss的调度器,而不是像我过去那样将其构建到应用程序中

我在网上搜索过,但似乎找不到我需要的必要信息。我知道javax.ejb中有@Schedule注释,但这就是我需要添加到方法中的全部内容吗?我认为/期望我需要在某处进行额外配置,但不确定在何处

谁能给我指一下正确的方向吗

谢谢


Eric

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


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

您不需要-只需像以前一样继续使用捆绑到应用程序中的quartz,它可以正常工作。当你尝试按原样运行你的应用程序时,是否遇到任何问题?@skaffman:你怎么知道的?:)@abalogh:因为我以前做过。我还没有用我当前的代码和嵌入式石英在jBoss下尝试过。但是我的架构师想要/坚持使用捆绑的JBossOne。不知道为什么。但这是强加给我的决定。因此,需要/希望找到一种参考方法。但是,如果我使用自己的调度程序,我不会期望出现问题。谢谢你的提示。我正在研究这一点,但立即出现的问题是,我是否能够在容器级别配置计划,或者我是否仍然需要在我的应用程序中配置触发器,并简单地对容器中的所有触发器进行开/关控制。你知道JBoss调用Springbeans中是否有修改/设置触发器的功能吗?我还没有使用内置的调度器。您当然可以通过JNDI或quartz ScheduleRepository访问它。因此,您应该能够以spring方式添加触发器。我不知道从jboss控制台或其他容器工具操作它们会是什么样子。
  <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>