java定时任务TimerTask问题(在线等)
我用TimerTask做个定时任务,但我用的是SSH框架,也就是里面的一些属性是注入的,但这里我就无法解决
先发下我原代码
package com.common;import java.util.Timer;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class MyListener implements ServletContextListener { private Timer timer = null; public void contextInitialized(ServletContextEvent event) { timer = new Timer(true); //设置任务计划,启动和间隔时间 //86400000为1天毫秒数 timer.schedule(new MyTask(), 0, 5000); } public void contextDestroyed(ServletContextEvent event) { timer.cancel(); } }package com.common;import java.util.Date;import java.util.TimerTask;import com.user.dao.MaxLshDao;import com.user.service.MaxLshService;public class MyTask extends TimerTask { private MaxLshService maxLshService; public MaxLshService getMaxLshService() { return maxLshService; } public void setMaxLshService(MaxLshService maxLshService) { this.maxLshService = maxLshService; } public void run() { System.out.println("call at " + (new Date())); /*ShopInUserDao SIUService=new ShopInUserDao(); SIUService.findEndRentDate();*/ } }
//spring配置文件里的内容 <!--任务到期短信提示--> <bean id="testService" class="com.fbty.wms.utils.TestService"> <property name="messageService" ref="messageService" /> <property name="wmsJdbcDao" ref="wmsJdbcDao" /> </bean> <!--注入--> <bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testService" /> <property name="targetMethod" value="doCheck"></property> </bean><!-- 触发器 --> <bean id="testThread" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testJob" /> <property name="cronExpression" value="0 0 0 * * ? " /> </bean><!-- 定时器工厂 --><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testThread"></ref> </list> </property> </bean>//这个就是TestService里的doCheck方法 /** * Description: 到期警示告警短信自动扫描<br> * @throws ServiceException * @throws RemoteException * @throws MalformedURLException */ public void doCheck() throws MalformedURLException, RemoteException, ServiceException { System.out.println("开始计时,每隔一分钟提示一次……"); //里面内容就省略了,整个流程重点是配置文件。仅做参考。。 }
[解决办法]
楼主的方法只能计时一次,所以每次都要重新启动
public void run() {
System.out.println("call at " + (new Date()));
timer.schedule(new MyTask(), 0, 5000);
}
[解决办法]
我是不理解上面的一些回答。
ServletContextListener 实例是不是spring创建的?应该是web服务器或应用服务器初始化创建的。
7楼的方法测试了没有啊。
[解决办法]
完蛋了 暑假实习刚接触过
现在又忘了
帮顶 ...
[解决办法]
看下你的 Spring容器注入的 时期是不是比 MyListener早 看看 web.xml配置吧
把MyListener 放在Spring 的监听器之后
[解决办法]
7楼正解。 你自己new的task和spring框架有毛关系。
[解决办法]
学习学习 :mark ……