自动运行类出现错误
写了一个自动运行类,让tomcat启动之后自动调用。但是总运行不成功,高手帮看看,谢谢!
程序逻辑是这样的:
1、tomcat调用一个定时器;
2、定时器调用run方法;
3、run方法首先到表里去查是否还有没有提醒的内容;
4、如果有,则给相关的人员发送一条短信;
内容涉及三个表,能够保证需要的内容都存在。
另外,还想知道,在调试的时候如何把一些结果打印在屏幕上?
从tomcat的日志来看,服务器已经找到这个类,出现了"定时器已启动321" 等字样。但是里面的内容好像没有执行。
public class TimerListener implements ServletContextListener
{
private Timer timer = null;
public void contextInitialized(ServletContextEvent event)
{
int rate;
try
{
rate = 7*24*60*60*1000;
timer = new Timer(true);
event.getServletContext().log("定时器已启动321");
timer.scheduleAtFixedRate(new RemindTask(), 0, rate);
// timer.scheduleAtFixedRate(new TimedoTask(), 0, rate);
event.getServletContext().log("已经添加任务调度表321");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
event.getServletContext().log("定时器销毁244");
}
}
****************************************************************************
public class RemindTask extends TimerTask
{
public void run()
{
try
{
Connection conn = JdbcPool.getConnection();
Statement stmt = conn.createStatement();
String sqlstr= "select * from sys_mentioninfo where hasmention='no'";
ResultSet rs = stmt.executeQuery(sqlstr);
while(rs.next())
{
String mentiontime = rs.getString("mentiontime").substring(0,10);
SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd");
Date mentionTime = new java.util.Date();
mentionTime = formatter.parse(mentiontime); // 字符串转换为时间类型
Date currentTime = new Date();
String sourcetime = formatter.format(currentTime); //将日期时间格式化
long diffDays = (mentionTime.getTime()- currentTime.getTime())/(24*60*60*1000);
System.out.print(diffDays);
if(diffDays<=0)
{
stmt = conn.createStatement();
sqlstr="select loginname from sys_personauth where sdoi='" + rs.getString("sdoi") + "' and serialcode='" + rs.getString("serialcode") + "'";
ResultSet rs1= stmt.executeQuery(sqlstr);
if(rs1.next())
{
rs1.beforeFirst();
while(rs1.next())
{
stmt = conn.createStatement();
sqlstr = "insert into sys_duanxin(sender,receiver,content,sendtime,ifdo) values('SYSTEM','" + rs1.getString("loginname") + "','" + rs.getString("content") + "','" + sourcetime + "','no')";
stmt.executeUpdate(sqlstr);
}
}
else
{
throw new Exception("no record fit");
}
}
else
{
throw new Exception("days not fit");
}
}
}
catch(Exception ef)
{
ef.printStackTrace();
}
}
}