JAVA 定时器 quartz 问题 急...
以前没用过这个..
现在 问题是 scheduler 里面值为空..
初始化 ServletConfig cfg ,
之后 调用 super.init(cfg);在往后的代码就不执行了..为什么?
不知道 是哪里 出问题了. 麻烦帮忙看一下...
=================InitScheduleServlet.java==============
package quartz;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobListener;
import org.quartz.Scheduler;
import org.quartz.ee.servlet.QuartzInitializerServlet;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.*;
public class InitScheduleServlet extends QuartzInitializerServlet {
private static final long serialVersionUID = 1L;
Log log = LogFactory.getLog(InitScheduleServlet.class);
@SuppressWarnings("unused")
private boolean performShutdown = true;
private Scheduler scheduler = null;
public void init(ServletConfig cfg) throws ServletException {
try{
super.init(cfg);//问题好像在这里
run(cfg);
}catch(Exception e){
System.out.println("出错信息:"+e.toString());// 错误信息 我粘到最下面了.
e.printStackTrace();
}
}
}
public void run(ServletConfig cfg) {
System.out
.println("Quartz Initializer Servlet loaded, initializing Scheduler...");
ServletContext servletContext = cfg.getServletContext();
StdSchedulerFactory factory;
try {
String shutdownPref = cfg.getInitParameter("shutdown-on-unload");
String ownStore = cfg.getInitParameter("ownStore");
String basejobStore = cfg.getInitParameter("databaseStore");
if (shutdownPref != null) {
performShutdown = Boolean.valueOf(shutdownPref).booleanValue();
}
if (ownStore.equalsIgnoreCase("true")) {
factory = new StdSchedulerFactory(basejobStore);
scheduler = factory.getScheduler();
} else {
factory = null;
}
String startOnLoad = cfg
.getInitParameter("start-scheduler-on-load");
if (Boolean.valueOf(startOnLoad).booleanValue()) {
scheduler.start();
System.out.println("Scheduler has been started...");
} else {
System.out
.println("Scheduler has not been started. Use scheduler.start()");
}
String factoryKey = cfg
.getInitParameter("servlet-context-factory-key");
if (factoryKey == null) {
factoryKey = QUARTZ_FACTORY_KEY;
}
System.out
.println("Storing the Quartz Scheduler Factory in the servlet context at key: "
+ factoryKey);
servletContext.setAttribute(factoryKey, factory);
servletContext.setAttribute("scheduler", scheduler);
} catch (Exception e) {
System.out.println("Quartz Scheduler failed to initialize: "
+ e.toString());
e.printStackTrace();
}
}
}
======================web.xml===============
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>ManageTask</servlet-name>
<servlet-class>quartz.view.ManageTask</servlet-class>
</servlet>
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>quartz.InitScheduleServlet</servlet-class>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ownStore</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>databaseStore</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>12</load-on-startup>
</servlet>
=======================quartz.properties================
org.quartz.scheduler.instanceName = Sched1
org.quartz.scheduler.instanceId = 1
org.quartz.scheduler.rmi.export = false;
org.quartz.scheduler.rmi.proxy = false;
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.useProperties = true
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.DataSource = myDS
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
#org.quartz.dataSource.myDS.driver = com.microsoft.sqlserver.jdbc.SQLServerDrive
org.quartz.dataSource.myDS.URL =
#数据库链接配置这里没有错的...
jdbc:oracle:thin:@**.**.**.**:1521:ora1
org.quartz.dataSource.myDS.user = ***
org.quartz.dataSource.myDS.password = ***
org.quartz.dataSource.myDS.maxConnections = 10
==============报错信息=============
- Quartz Scheduler v.1.6.0 created.
- Using thread monitor-based data access locking (synchronization).
出错信息:javax.servlet.ServletException: Failure occured during job recovery.
javax.servlet.ServletException: Failure occured during job recovery.
at org.quartz.ee.servlet.QuartzInitializerServlet.init(QuartzInitializerServlet.java:182)
at quartz.InitScheduleServlet.init(InitScheduleServlet.java:30)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:903)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
at org.apache.commons.digester.Rule.end(Rule.java:276)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:488)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)