是的,我会将列表存储
ServletContext为应用程序范围的属性。相反,从数据库中提取数据的效率可能较低,因为您仅每小时更新一次列表。
ServletContextListener为了使Quartz任务可以引用该
ServletContext对象,可能必须创建一个。将
ServletContext只能从JavaEE的相关类,如Servlet和侦听器检索。
编辑:在ServletContextListener中,当您创建作业时,可以通过将列表添加到JobDataMap将其传递到作业中。
public class MyServletContextListener implements ServletContextListener{ public void contextInitialized(ServletContextEvent event){ ArrayList list = new ArrayList(); //add to ServletContext event.getServletContext().setAttribute("list", list); JobDataMap map = new JobDataMap(); map.put("list", list); JobDetail job = new JobDetail(..., MyJob.class); job.setJobDataMap(map); //execute job } public void contextDestroyed(ServletContextEvent event){}}//Quartz jobpublic class MyJob implements Job{ public void execute(JobExecutionContext context){ ArrayList list = (ArrayList)context.getMergedJobDataMap().get("list"); //... }}


