代码如下
import hotlong.hotcrm.action.CRMClockAction;
import hotlong.hotcrm.model.SystemUsers;
import java.util.Date;
import java.util.TimerTask;
import org.apache.struts2.ServletActionContext;public class ColokTask extends TimerTask {
CRMClockAction ca=new CRMClockAction();
private int i=0;
public void run(){
SystemUsers su=(SystemUsers)ServletActionContext.getRequest().getSession().getAttribute("LoginUser");
try {
if(su!=null){
ca.clock();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("定时器运行失败");
}
}
}
action代码如下
public class CRMClockAction extends BaseAction{
public void clock()throws Exception{
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
}
}
我的意图就是想在run方法中判断session中的loginuser 变量是否为空 然后调用action 中 clock方法
但是无法实现
java.lang.NullPointerException
at hotlong.hotcrm.common.util.ColokTask.run(ColokTask.java:15)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
错误原因是在获取session变量时出错
不知道怎么回事 跪求答案 活着好的解决方法
import hotlong.hotcrm.action.CRMClockAction;
import hotlong.hotcrm.model.SystemUsers;
import java.util.Date;
import java.util.TimerTask;
import org.apache.struts2.ServletActionContext;public class ColokTask extends TimerTask {
CRMClockAction ca=new CRMClockAction();
private int i=0;
public void run(){
SystemUsers su=(SystemUsers)ServletActionContext.getRequest().getSession().getAttribute("LoginUser");
try {
if(su!=null){
ca.clock();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("定时器运行失败");
}
}
}
action代码如下
public class CRMClockAction extends BaseAction{
public void clock()throws Exception{
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
}
}
我的意图就是想在run方法中判断session中的loginuser 变量是否为空 然后调用action 中 clock方法
但是无法实现
java.lang.NullPointerException
at hotlong.hotcrm.common.util.ColokTask.run(ColokTask.java:15)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
错误原因是在获取session变量时出错
不知道怎么回事 跪求答案 活着好的解决方法
public class MyTaskTimer implements ServletContextListener {
private Timer timer = null; @Override
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
timer.cancel(); } @Override
public void contextInitialized(ServletContextEvent event) {
long a=2000;
timer = new Timer(true); timer.schedule(new DataService(event.getServletContext()),a);
}}之后在你的定时器里:
private static ServletContext context = null;
public DataService(ServletContext context1) {
this.context = context1; }这样你就可以用context.getAttribute(arg0)相关的方法了。