【发布时间】:2010-08-03 15:42:43
【问题描述】:
我在 Web 应用程序中运行计划作业,有时(无法重现)会导致以下异常:
[WebappClassLoader] 非法访问:此 Web 应用程序实例已被停止。无法加载 org.quartz.StatefulJob。最终的后续堆栈跟踪是由出于调试目的引发的错误以及试图终止导致非法访问的线程引起的,并且没有功能影响。 java.lang.IllegalStateException 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(Class.java:169) 在 org.quartz.JobDetail.class$(JobDetail.java:279) 在 org.quartz.JobDetail.isStateful(JobDetail.java:425) 在 org.quartz.simpl.RAMJobStore.triggerFired(RAMJobStore.java:1313) 在 org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:342) 13:41:00,083 错误 [STDERR] 线程“DefaultQuartzScheduler_QuartzSchedulerThread”中的异常 13:41:00,083 错误 [STDERR] java.lang.NoClassDefFoundError: org.quartz.StatefulJob 13:41:00,083 org.quartz.JobDetail.class$ 的错误 [STDERR](JobDetail.java:279) 13:41:00,083 org.quartz.JobDetail.isStateful 中的错误 [STDERR](JobDetail.java:425) 13:41:00,083 org.quartz.simpl.RAMJobStore.triggerFired 的错误 [STDERR](RAMJobStore.java:1313) 13:41:00,083 org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:342) 处的错误 [STDERR]
还有一个 NoClassDefFoundError。它说没有找到 org.quartz.StatefulJob。 以下是作业的安排方式:
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
if (!sched.isStarted()){
sched.start();
}
String konf = MyConfigClass.getRow(25).getKonfiguration();
Calendar cal = Calendar.getInstance();
cal.setTime(MyParser.stf.parse(konf));
String expression = "0 " + cal.get(Calendar.MINUTE) + " " + cal.get(Calendar.HOUR_OF_DAY) + " ? * MON-FRI";
CronTrigger ct = new CronTrigger(triggerName, group, jobName, group, expression);
if (sched.getTrigger(triggerName, Scheduler.DEFAULT_GROUP) != null) {
sched.rescheduleJob(triggerName, group, ct);
} else {
JobDetail jd = new JobDetail(jobName, group, MyJob.class);
sched.scheduleJob(jd, ct);
}
我不知道可能是什么问题。首先,我认为会话在作业执行之前就结束了,但我已经尝试过了,但事实并非如此。有趣的是,在这个异常之后,作业再次运行没有问题。
你有什么想法吗?
【问题讨论】:
-
我添加了一些细节以缩小可能出现的问题。
标签: java jboss quartz-scheduler