我开发java web时候需要创建一个新的线程,在调用已经在spring配置文件注入的接口时候报空指针异常,代码:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我开发java web时候需要创建一个新的线程,在调用已经在spring配置文件注入的接口时候报空指针异常,代码:相关的知识,希望对你有一定的参考价值。

这是我写的新加线程的代码:
package com.travelsky.gg.warning;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.travelsky.gg.config.Server;
import com.travelsky.gg.ggexec.GGMainManager;
import com.travelsky.gg.ggframework.BaseAction;
import com.travelsky.gg.user.GGUser;
public class Mylistener extends BaseAction implements Runnable
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession();
GGMainManager ggMainManager;
public void run()
List ggList = null;
List serverList = null;
List infoInfo=null;
GGUser user = (GGUser)session.get("gguser");
try
//ggList = configManager.getGgConfigList(user);
serverList = configManager.getServList(user);
Thread.sleep(10000);
for(int i=0;i<serverList.size();i++)
Server server=(Server)serverList.get(i);
infoInfo=ggMainManager.infoAll(server);
System.out.println(infoInfo);



catch(Exception e)
e.printStackTrace();





执行到 serverList = configManager.getServList(user);时候报错
java.lang.NullPointerException
at com.travelsky.gg.warning.Mylistener.run(Mylistener.java:24)
at java.lang.Thread.run(Unknown Source)
ajax调用代码:
Mylistener mylistener=new Mylistener();
Thread mylisteners= new Thread(mylistener);
mylisteners.start();
return ;

configManager是不是父类的属性,通过spring注射完成初始化的?你在ajax调用的时候根本就没有初始化spring环境当然就报错喽。建议楼主考虑下这个线程的意义和运行场景,ajax是一种客户端处理技术,java线程通常都是服务器端的,两者的用法还是有区别的。 参考技术A ggMainManager没写set方法
所以spring没有注入进去对象就为空
参考技术B 多线程,放到另一个class中。追问

什么意思啊?我是用ajax创建的线程,起初我没有调用接口时候执行都是很成功的,但是调用接口后就在接口那句话出错了

以上是关于我开发java web时候需要创建一个新的线程,在调用已经在spring配置文件注入的接口时候报空指针异常,代码:的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程(十三)在现有的线程安全类中添加功能

Node.js 没有Web容器

MyEclipse做WEB项目时,修改Java不需要重启,创建一个新的Java类 却需要重启tomcat

java web开发中的Thread.currentThread()啥情况下会改变啊?

Node.js 特点

Java线程池的底层实现与使用