У меня есть метод, который возвращает список элементов с именем findItemByPIdEndDate () и находится внутри класса MngtImpl.java. Теперь я хотел бы выполнять этот метод время от времени, скажем так, вот что я сделал до сих пор:
Это CronSchedule.java
import org.quartz.CronTrigger;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.JobDetail;
public class CronSchedule {
public CronSchedule ()throws Exception {
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler sched=sf.getScheduler();
JobDetail jd=new JobDetail("job1","group1",CronJob.class);
CronTrigger ct=new CronTrigger("cronTrigger","group2","0 * * * * ?");
sched.scheduleJob(jd,ct);
sched.start();
}
public static void main(String args[]){
try{
new CronSchedule(); //Class where cron is created
}catch(Exception e){}
}
}
Теперь с этим у меня проблемы. Этот класс вызывается из приведенного выше класса на основе временных ограничений (* в скобках) и выполняет метод класса MngtImpl.
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.rosa.MngtImpl;
public class CronJob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
MngtImpl pers = new MngtImpl();
pers.findItemByPIdEndDate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Вот метод, который я пытаюсь вызвать из приведенного выше класса. Этот метод находится внутри класса с именем MngtImpl.java
public List<Long> findItemByPIdEndDate() throws Exception {
List<Long> list = null;
try{
Session session = sessionFactory.getCurrentSession();
Query query = session.getNamedQuery("endDateChecker");
list = query.list();
}catch (HibernateException e){
throw new DataAccessException(e.getMessage());
}
return list;
}
Теперь вот что я хотел бы сделать. Мне нужно запустить этот метод выше, основанный на некотором количестве времени (которое я мог бы указать в любое время). Мне нужно создать бин внутри XML-файла фабрики бинов, который на самом деле создает экземпляр этого планировщика и вызывает этот метод, и я попытался сделать это, вызвав CronJob.java из CronScheldule.java, который вызывает метод из другого класса, и я создал бин, который может работать или нет
<bean id="cronSchedule" class="com.mypackage.CronSchedule">
</bean>
Но он не работает, как я ожидал, и довольно сложен, могу ли я получить некоторую помощь с кодом, пожалуйста? Спасибо
Я сталкиваюсь со следующим исключением:
java.lang.NullPointerException 11:10:46,410 ERROR [STDERR]
at com.packftc.RulesManager.exception(RulesManager.java:25) 11:10:46,410 ERROR [STDERR]
at org.drools.agent.RuleAgent$2.run(RuleAgent.java:442) 11:10:46,410 ERROR [STDERR]
at java.util.TimerThread.mainLoop(Unknown Source) 11:10:46,410 ERROR [STDERR]
at java.util.TimerThread.run(Unknown Source)
Это, очевидно, неправильный способ сделать это, я до сих пор пытался делать это как zilion: вот что я пытаюсь сделать простыми словами: я хочу выполнять метод findItemByPIdEndDate () из класса MngtImpl каждую минуту, скажем так. Метод работает правильно, я написал тест, и он проходит его. Так что мне теперь делать? Спасибо