.如何在quartz里使用request获取指定的文件路径


解决方法步骤如下:

    a.使用servlet监听器,在容器启动的时候,获取ServletContext并将其放到SchedulerContext里,代码如下:

public class QuartzListener implements ServletContextListener{

	public void contextDestroyed(ServletContextEvent arg0) 
	{
		//TODO
		
	}

	public void contextInitialized(ServletContextEvent servletContextEvent) 
	{
		 Scheduler sched = new StdSchedulerFactory().getScheduler(); 
 
		 sched.getContext().put("servletContext", servletContextEvent.getServletContext());   
			.......
	}

}


b.在job里获取ServletContext,然后通过ServletContext的API获取想要的值,以获取web目录的绝对路径为例:

public class FileDownload extends StatefulMethodInvokingJob
{

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException
	{
		try
		{
			//从SchedulerContext获取此前监听器放入的ServletContext
			ServletContext servletContext =(ServletContext)context.getScheduler().getContext().get("servletContext");
			String dir=servletContext.getRealPath("static/downloadfiles");
			......
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		
	}
	
}
别忘了配置监听,这个是基础就不再赘述了。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐