Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> quartz job 
V
    Опции темы
Predator83
Дата 25.7.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Привет всем.

Есть следующие классы:
Код

package roomproject;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class MyJob implements Job{
  private static Log _log = LogFactory.getLog(MyJob.class);

  public MyJob() {
  }
  
  // Сюда вписываем какая бизнес логика должна выполняться
  public void execute(JobExecutionContext context)   throws JobExecutionException {
   _log.info("Hello World! - " + new java.util.Date());
  }
}





Код


package roomproject;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Calendar;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ExecuteLDAP
    extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=windows-1251";
  private boolean started = false;
  
  //Initialize global variables
  public void init() throws ServletException {      
  
  Log log = LogFactory.getLog(ExecuteLDAP.class);
  Scheduler sched = null;
  log.info("------- Initializing ----------------------");

  // First we must get a reference to a scheduler
  SchedulerFactory sf = new StdSchedulerFactory();
  try {
    sched = sf.getScheduler();

    log.info("------- Initialization Complete -----------");

    log.info("------- Scheduling Jobs -------------------");

    // computer a time that is on the next round minute
    Date runTime = TriggerUtils.getEvenMinuteDate(new Date());

    // define the job and tie it to our HelloJob class
    JobDetail job = new JobDetail("myJob", null, MyJob.class);

    // Trigger the job to run on the next round minute
    Trigger trigger = TriggerUtils.makeHourlyTrigger(); // fire every hour
      trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date()));  // start on the next even hour
  trigger.setName("myTrigger");
  
  
    log.info(job.getFullName() + " will run at: " + runTime);

    // Start up the scheduler (nothing can actually run until the
    // scheduler has been started)
    sched.start();

  log.info("------- Started Scheduler -----------------");

  // wait long enough so that the scheduler as an opportunity to 
  // run the job!
  log.info("------- Waiting 90 seconds... -------------");

      // wait 90 seconds to show jobs
      Thread.sleep(90L * 1000L); 
      // executing...
 

    // shut down the scheduler
    log.info("------- Shutting Down ---------------------");
    sched.shutdown(true);
    log.info("------- Shutdown Complete -----------------");
  } catch (Exception ex) {
    ex.printStackTrace();
  }

  }
  
       
  //Process the HTTP Get request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    
  }

  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    doGet(request, response);
  }

  //Clean up resources
  public void destroy() {
  }
}



В процессе работы валится на строке 
Код

JobDetail job = new JobDetail("myJob", null, MyJob.class);


Код

INFO: ------- Scheduling Jobs -------------------
25/7/2007 18:41:03 org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: roomproject.MyJob
    at roomproject.ExecuteLDAP.class$(ExecuteLDAP.java:28)
    at roomproject.ExecuteLDAP.init(ExecuteLDAP.java:45)
    at javax.servlet.GenericServlet.init(GenericServlet.java:211)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:750)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
25/7/2007 18:41:03 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet executeldap
java.lang.NoClassDefFoundError: roomproject.MyJob
    at roomproject.ExecuteLDAP.class$(ExecuteLDAP.java:28)
    at roomproject.ExecuteLDAP.init(ExecuteLDAP.java:45)
    at javax.servlet.GenericServlet.init(GenericServlet.java:211)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:750)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)


PM   Вверх
powerOn
Дата 25.7.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(Predator83 @  25.7.2007,  19:22 Найти цитируемый пост)
java.lang.NoClassDefFoundError: roomproject.MyJob

не видит класса roomproject.MyJob - значит он каким то образом не попал в класспаф.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Predator83
Дата 26.7.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Перенес код из сервлета в обычный класс. Снова валится на той строке но exception уже другой.
Привожу код класса и exception с логами.

Код

package roomproject;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Scanner {
  public Scanner() {
    
  }
  
  public void run() throws Exception {
      Log log = LogFactory.getLog(Scanner.class);

      log.info("------- Initializing ----------------------");

      // First we must get a reference to a scheduler
      SchedulerFactory sf = new StdSchedulerFactory();
      Scheduler sched = sf.getScheduler();

      log.info("------- Initialization Complete -----------");

      log.info("------- Scheduling Jobs -------------------");

      // computer a time that is on the next round minute
      Date runTime = TriggerUtils.getEvenMinuteDate(new Date());

      // define the job and tie it to our HelloJob class
      JobDetail job = new JobDetail("job1", "group1", roomproject.MyJob.class);

      // Trigger the job to run on the next round minute
      SimpleTrigger trigger = 
          new SimpleTrigger("trigger1", "group1", runTime);

      // Tell quartz to schedule the job using our trigger
      sched.scheduleJob(job, trigger);
      log.info(job.getFullName() + " will run at: " + runTime);  

      // Start up the scheduler (nothing can actually run until the 
      // scheduler has been started)
      sched.start();
      log.info("------- Started Scheduler -----------------");

      // wait long enough so that the scheduler as an opportunity to 
      // run the job!
      log.info("------- Waiting 90 seconds... -------------");
      try {
          // wait 90 seconds to show jobs
          Thread.sleep(90L * 1000L); 
          // executing...
      } catch (Exception e) {
      }

      // shut down the scheduler
      log.info("------- Shutting Down ---------------------");
      sched.shutdown(true);
      log.info("------- Shutdown Complete -----------------");
  }

  public static void main(String[] args) throws Exception {

      Scanner example = new Scanner();
      example.run();

  }

}




Exception

Код

26/7/2007 9:43:00 roomproject.Scanner run
INFO: ------- Initializing ----------------------
26/7/2007 9:43:04 org.quartz.simpl.SimpleThreadPool initialize
INFO: Job execution threads will use class loader of thread: main
26/7/2007 9:43:04 org.quartz.core.QuartzScheduler <init>
INFO: Quartz Scheduler v.1.6.0 created.
26/7/2007 9:43:04 org.quartz.simpl.RAMJobStore initialize
INFO: RAMJobStore initialized.
26/7/2007 9:43:04 org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
26/7/2007 9:43:04 org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler version: 1.6.0
26/7/2007 9:43:05 roomproject.Scanner run
INFO: ------- Initialization Complete -----------
26/7/2007 9:43:06 roomproject.Scanner run
INFO: ------- Scheduling Jobs -------------------
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;
    at org.quartz.JobDetail.<init>(JobDetail.java:85)
    at roomproject.Scanner.run(Scanner.java:47)
    at roomproject.Scanner.main(Scanner.java:81)



Добавлено через 2 минуты и 18 секунд
JobDetail.java:85 показывает строку:

Код

  // Constructors
  public JobDetail() { }

PM   Вверх
powerOn
Дата 26.7.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 28
Всего: 159



Цитата(Predator83 @  26.7.2007,  10:24 Найти цитируемый пост)
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;


Это значит что версия библиотеки не совпадает с необходимой. Скачай common-collections более новой версии где класс SetUtils имеет метод orderedSet.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Predator83
Дата 26.7.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Да там действительно была проблема в библиотеке.
Спасибо.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.