Timer在发生空指针

q1054261752 2016-10-07 10:49:24

package cn.it.shop.util;

import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;

import javax.annotation.Resource;
import javax.servlet.ServletContext;

import org.springframework.stereotype.Component;

import cn.it.shop.model.Category;
import cn.it.shop.model.Product;
import cn.it.shop.service.CategoryService;
import cn.it.shop.service.ProductService;

/**
*
* @Title: ProductTimerTask.java
* @Package cn.it.shop.util
* @Description: TODO(完成首页商品数据的初始化操作)
* @version V1.0
*/
@Component("productTimerTask")
public class ProductTimerTask extends TimerTask {

//@Resource //这个本没有注释
private CategoryService categoryService;
@Resource
private ProductService productService;

//在监听器里边设置
private ServletContext application;

public void setApplication(ServletContext application) {
this.application = application;
}

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("----------run()-----------");

List<List<Product>> bigList = new ArrayList<List<Product>>();
// 2: 查询热点类别
for (Category temp : categoryService.queryByHot(true)) {
// 3: 通过热点类别查询推荐商品
bigList.add(productService.queryByCid(temp.getId()));
}
// 4: 存储到application内置对象中
application.setAttribute("bigList", bigList);
}

// public static void main(String[] args) {
// ProductTimerTask task = new ProductTimerTask();
// // 如果为true则以守护线程的方式执行
// new Timer(false).schedule(task, 0, 1000);
// }

}

人为重现错误,重新刷了一下,没有错误了,不知道为什么 “还有在这里。。。。。” 还一些错误,在大概记得
for (Category temp : categoryService.queryByHot(true)) { 这句null异常,下来又是一些错误,
后面根着
at cn.it.shop.util.ProductTimerTask.run(ProductTimerTask.java:46)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)


(注:我出去了一大会,回来就报错,不知为什么)
百度 .google一下也没找道为什么


//@Resource
private CategoryService categoryService;
Exception in thread "Timer-0" java.lang.NullPointerException

还有在这里。。。。。
at cn.it.shop.util.ProductTimerTask.run(ProductTimerTask.java:46)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
...全文
179 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
q1054261752 2016-10-07
  • 打赏
  • 举报
回复
这个任务线程是在 InitDataListener 监听器中被调用

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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