fyp1984 发表于 2013-8-14 21:50:42

springMVC配置quartz的问题

遇到一个头疼的问题,根据网上资料配置了个quatarz定时任务,当触发 save 方法保存数据时,getSession()方法执行失败,发现是
        public static HttpServletRequest getRequest() {
                logger.info("SpringMvc下获取request……");
                HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                                .getRequestAttributes()).getRequest();
                return request;
        }

中RequestContextHolder.getRequestAttributes()为null


这个问题咋解决?

fyp1984 发表于 2013-8-14 22:08:09

Quartz线程不是一个HTTP请求,不包含request对象,在Quartz的Job类中无法取得ServletContext,
所以无法取得ApplicationContext,Job类中的Spring注解都是无效的。

GIN 发表于 2013-8-15 09:15:36

嗯 定时任务不是请求线程 没有请求上下文的

fyp1984 发表于 2013-8-15 10:12:19

GIN 发表于 2013-8-15 09:15 static/image/common/back.gif
嗯 定时任务不是请求线程 没有请求上下文的

因此就无法使用Hibernate自带的 session.save()方法来保存数据了

GIN 发表于 2013-8-15 10:45:24

fyp1984 发表于 2013-8-15 10:12 static/image/common/back.gif
因此就无法使用Hibernate自带的 session.save()方法来保存数据了

嗯 这个因为开了openSessionInview 所以session的创建是在请求开始时 如果要用Hibernate的保存 可能需要自己用hibernate的factory再open一个session出来

fyp1984 发表于 2013-8-19 16:01:48

GIN 发表于 2013-8-15 10:45 static/image/common/back.gif
嗯 这个因为开了openSessionInview 所以session的创建是在请求开始时 如果要用Hibernate的保存 可能需要 ...

为了解决这个问题,觉得还是用jdbc更简单一些
页: [1]
查看完整版本: springMVC配置quartz的问题