Spring MVC注解注入,使用quartz定时执行报空指针异常

shuytu 2014-08-21 10:08:25
在java web 项目中采用的Spring Mvc注解方式实现,通过页面跳转到ZhuanCunKsdmbs.do可以很好的执行,但是配置定时执行后(采用quartz),一直报空指针异常,显示ksdmbService为空。代码如下

(1)KsdmbController类中的方法

@Resource
private KsdmbService ksdmbService;

@RequestMapping("/ZhuanCunKsdmbs.do")
public void ZhuanCunKsdmbs() throws Exception{
//ModelAndView mav=new ModelAndView();
Connection conn=null;
Statement sta=null;
ResultSet rs=null;
try{
conn=BaseDao.getConnection();
sta=conn.createStatement();
rs=sta.executeQuery("select ksdm,ksmc,pydm from GY_KSDM");
while(rs.next()){
Ksdmb ksdmb=new Ksdmb(Long.parseLong(rs.getString(1)), rs.getString(2), rs.getString(3));
//使用保存或更新方法
this.ksdmbService.saveOrUpdateKsdmb(ksdmb);
}
//mav.setViewName("success");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
//mav.setViewName("error");
}finally{
BaseDao.closeAll(rs, sta, conn);
}
//return mav;
}

public KsdmbService getKsdmbService() {
return ksdmbService;
}

public void setKsdmbService(KsdmbService ksdmbService) {
this.ksdmbService = ksdmbService;
}

(2)TimeConfig.xml定时执行代码

<bean id="ksdmb"
class="org.mnis.web.KsdmbController">
</bean>

<bean id="ksdmbDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="ksdmb" />
</property>
<property name="targetMethod">
<value>ZhuanCunKsdmbs</value>
</property>
</bean>

<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="ksdmbDetail" />
</property>
<property name="cronExpression">
<value>0 0/1 * * * ?</value><!-- 每分钟执行一次 -->
<!-- <value>0 0/30 * * * ?</value> --><!-- 每30分钟执行一次 -->
<!-- 0 0/15 * * * ? --><!-- 每15分钟执行一次 -->
<!-- 0 0 0/1 * * ? --><!-- 每小时执行一次 -->
</property>
</bean>

<bean id="start"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger" />
</list>
</property>
</bean>

(3) web.xml

<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/TimeConfig.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

(4)报错
java.lang.NullPointerException
at org.mnis.service.KsdmbService.saveOrUpdateKsdmb(KsdmbService.java:30)
at org.mnis.web.KsdmbController.ZhuanCunKsdmbs(KsdmbController.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
...全文
6557 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果那个不好用 参考一下这个 我这个是正常好用的 这么久了 该沉了把。。
  • 打赏
  • 举报
回复
这个是 你用定时器的时候是quartz进行反射的 并不是正常调用的 所以是没有service注入的 怎么注入的 你参考一下这个吧 http://blog.csdn.net/jackylovesjava/article/details/50044271
some people 2016-05-26
  • 打赏
  • 举报
回复
同问题啊!楼主有解决吗?
蒂鸥维毅 2015-08-09
  • 打赏
  • 举报
回复
我也出现了同样的问题,请问你是如何解决的???

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧