2015-01-12 3 views
2

을 발생하지 않습니다하지만 내 직업은 해고되지 않습니다.봄 석영 : 작업 내가 <strong>의 SchedulerFactoryBean</strong>를 사용하려면 내가 석영이와 봄 3.0</p> <p>을 사용하고

@Component 
public class PCSchedulerManager { 

    @Autowired 
    private Scheduler scheduler; 

    public void scheduleJob(final Map<String, Object> parameters, Class inputClass) throws PCSchedulerException { 

     try { 
      long currentTimeStamp = System.currentTimeMillis(); 

      JobDetail job = JobBuilder 
          .newJob(inputClass) 
          .withIdentity(inputClass.getName() + currentTimeStamp) 
          .build(); 
      job.getJobDataMap().putAll(parameters); 

      Trigger trigger = TriggerBuilder 
           .newTrigger() 
           .withIdentity(inputClass.getName() + currentTimeStamp) 
           .build(); 

      //Schedule a job with JobDetail and Trigger 
      scheduler.scheduleJob(job, trigger); 

     } catch (SchedulerException e) { 
      throw new PCSchedulerException(e); 
     } 
    } 
} 

나는 내가 알고

public class LoaderJob implements Job { 

    public void execute(JobExecutionContext jec) throws JobExecutionException { 
     System.out.println("Do your stuff here..."); 
    } 

} 

을 실행하기 위해 애 쓰고 작업을 참조하십시오 : 아래

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

    <bean id="quartzScheduler" 
     class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="autoStartup" value="true"/> 
     <property name="schedulerName" value="PCLoaderScheduler"/> 
    </bean> 

</beans> 

내 코드는 다음과 같습니다 내 XML 파일입니다 스케줄러는 서버가 시작될 때 시작됩니다. 하지만 그것은 내 일을 실행하지 않습니다. 내가 사용하는 경우

또한, 대신 Autowiring은의 아래 문이 봄 석영 스케줄러는 다음 작업이 성공적으로

scheduler = new StdSchedulerFactory().getScheduler(); 
scheduler.start(); 

을 해고입니다 ... 제가 뭘 잘못 알려 주시기 바랍니다

답변

1

Quartz 2와 Spring 3.0은 호환되지 않습니다. Spring을 3.1로 업데이트했습니다. 이제는 제대로 작동합니다.

1

작업에 의존성을 주입해야합니까? 그런 다음 QuartzJobBean

을 구현하고 executeInternal() 메서드를 재정의합니다.

또한 작업 실행 중에 예외가 발생하는지 확인하십시오.

+0

아니요. 작동하지 않았습니다. 또한, 나는 '직업'이 일하는 것을 기억합니다. 그러나 나는 약간의 실수를 저지르고있다. 뭘 몰라. – Bhuvan

+0

안녕하세요 당신이 어떤 해결책을 찾았습니까? – Raj

0

먼저이 설정을 구성 XML 파일에 추가하십시오. repeatInterval 및 startDelay 속성을 변경하는 방법에 유의하십시오. 또는 cron 표현식을 사용할 수도 있습니다. this link에서 그들에 대해 읽어보십시오.

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="triggers"> 
     <list>    
      <ref bean="cronTrgTest" /> 
     </list> 
     </property> 
    </bean> 

    <bean id="cronTrgTest" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="testJob" /> 
     <property name="repeatInterval" value="5000" /> 
     <property name="startDelay" value="1000" /> 
    </bean> 

    <bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
     <property name="targetObject" ref="cronTest" /> 
     <property name="targetMethod" value="test" /> 
    </bean> 

    <bean id="cronTest" class="com.mustafaergin.ws.cron.CronTest"> 
    </bean> 

그런 다음 대상 POJO를 구현하면 완료됩니다.

public class CronTest { 

    public void test() { 
     System.out.println("TEST"); 
    } 

} 

내가 전에 작성한 원본 문서는 here입니다.

+0

답변 제공에 대한 귀하의 조언을 주셔서 감사합니다. 대답에 중요한 부분을 포함 시켰습니다. – erginm

관련 문제