2011-07-22 21 views
0

我是JBoss的新手,多年來一直使用tomcat。我有一個Spring 3.0.x應用程序,我需要定期運行一個作業。在過去,我只是簡單地創建我的工作類作爲常規POJO,然後創建我的作業/觸發器,因爲Spring的CronTriggerBean將MethodInvokingJobDetailFactoryBean作爲我的jobDetail傳遞。如何配置JBoss/Quartz來運行Spring作業?

例:

<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

你不需要 - 只要像你一樣使用捆綁在你的應用程序中的石英,它就能正常工作。 – skaffman

+0

當您嘗試按原樣運行應用程序時,是否遇到任何問題? – abalogh

+0

@abalogh:沒有。 – skaffman

回答

0

如果你真的想使用JBoss的一個,我會嘗試通過匹配用捆綁的調度之一的SchedulerFactoryBean的schedulerName財產。捆綁的調度程序可以通過JNDI獲取,我認爲它的名字是「Quartz」。

查看org.springframework.scheduling.quartz.SchedulerFactoryBean#createScheduler,它首先嚐試在靜態SchedulerRepository中查找調度器。

+0

感謝您的提示。我正在研究這個問題,但是直接提出的問題是,如果我能夠在容器級別配置調度表,或者如果我仍然需要在我的應用程序中配置觸發器,並且只需對控制器中的所有觸發器進行開/關控制容器。你知道在JBoss中調用spring bean是否有修改/設置觸發器的能力? –

+0

我沒有使用內置調度程序。您確定可以通過JNDI或可能的quartz SchedulerRepository訪問它。因此,您應該能夠以彈簧方式添加觸發器。我不知道它看起來像從jboss控制檯或其他容器工具中操縱它們。 – mrembisz

相關問題