首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

在Job中使用ServletContext的解决办法

2012-09-05 
在Job中使用ServletContext的解决方法因为quartz线程不是一个HTTP请求,不存在request对象,无法取得servlet

在Job中使用ServletContext的解决方法

因为quartz线程不是一个HTTP请求,不存在request对象,无法取得servletContext,但是可以通过定义一个静态变量:ServletContext context,通过在服务器启动的时候进行初始化(采用listener或者servlet)。

代码:

public class JobContextListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent servletcontextevent) {  // TODO Auto-generated method stub   } public void contextInitialized(ServletContextEvent servletcontextevent) {  // TODO Auto-generated method stub  JobContext.getInstance().setContext(servletcontextevent.getServletContext()); }}public class JobContext{ private final static JobContext instance = new JobContext(); private static ServletContext context;  private JobContext() { } public static JobContext getInstance() {  return instance; }  protected void setContext(ServletContext context2) {  context = context2; }  public ServletContext getContext() {  return context; }}

?
在web.xml中添加

<!-- 任务监听程序 --> <listener>  <listener-class>cms.module.quartz.JobContextListener</listener-class> </listener>

?

在Job类的excute方法中使用ServletContext scontext = JobContext.getInstance().getContext();即可取得ServletContext。

?

使用

ServletContext scontext = JobContext.getInstance().getContext();   ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(scontext);   quartzIndexPageService = (ISitePage)ctx.getBean("quartzIndexPageService");

?就可以取得spring注入的bean实例

热点排行