求助! 有谁做过定时器的, 时间可以自由设定的,急啊~

feixianking 2006-03-31 09:22:39
我要实现定时发邮件的功能, 时间要可以设置为每周的某一天发送邮件,有哪位仁兄做过类似的,提供来参考一下啊~~
...全文
317 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
freizl 2006-04-01
  • 打赏
  • 举报
回复
kaukiyou(小全)
推荐的开源工具很好用,推荐。
btw:spring is action有一章节介绍如何结合spring使用它。
Net8Java 2006-03-31
  • 打赏
  • 举报
回复
如果你是用的linux服务器,建议你用linux的定时器
可查阅这里!http://www.rhutech.net/article/info/1202-1.htm
写得很详细
图门的世界 2006-03-31
  • 打赏
  • 举报
回复
呵呵
其实也不应该叫配置文件,就是一个属性文件而已,**.properties文件.
每次重新读取就ok了
terry_yip 2006-03-31
  • 打赏
  • 举报
回复
改变web.xml当然要重启,因为那是tomcat的配置文件,用来生成JSP运行所需的很多环镜变量的,所以要重启TOMCAT来更新这些新的环镜变量,但是如果是一个程序,读取一次XML文件中的内容,只要把XML中的内容改了,然后那个程序中的方法重新读一次就行了。

feixianking 2006-03-31
  • 打赏
  • 举报
回复
哦,我在web.xml里面配置的都要重启才行
echomyf(ECHO) 你的配置文件是什么写的? 能否给看一下
图门的世界 2006-03-31
  • 打赏
  • 举报
回复
不用的,你每次读取配置文件,不用重起tomcat,当然,保存在数据库里边也不错
feixianking 2006-03-31
  • 打赏
  • 举报
回复
修改配置文件 在TOMCAT下,好像还要重启TOMCAT才能生效的吧?
我想用数据库来保存定时器的时间~
kaukiyou 2006-03-31
  • 打赏
  • 举报
回复
由一个叫quartz的开源工具。定制很灵活。
图门的世界 2006-03-31
  • 打赏
  • 举报
回复
那你可以写一个界面啊,然后界面上用户输入执行时间,你直接修改配置文件就可以了,然后再激活定时器,重新读取配置文件的执行时间.
laughsmile 2006-03-31
  • 打赏
  • 举报
回复
你也可写一个bat文件:
set classpath=.....
set path=%path%;%JAVA_HOME%\bin
java yourClassName 执行此java文件发送mail
然后在计划任务中定义,这个也很方便.

或者你自己写一个页面,修改上面程序的执行参数也可
feixianking 2006-03-31
  • 打赏
  • 举报
回复
echomyf(ECHO)
谢谢你回复
读配置文件的方法,在时间设置上不是很灵活
我想要实现的是可以让用户自由设置 时间(即提供一个页面给用户)的~~
interpb 2006-03-31
  • 打赏
  • 举报
回复
mark
图门的世界 2006-03-31
  • 打赏
  • 举报
回复
以前是通过配置文件读的运行时间,你也可以考虑这样做,可能会好一点.
图门的世界 2006-03-31
  • 打赏
  • 举报
回复
这是我以前写的,你可以参考一下

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class MailSchedulerDemo {

private Log log = LogFactory.getLog(this.getClass());

private static long ONE_WEEK = 7 * 24 * 60 * 60 * 1000;

private ScheduleTimerTask task;

private Timer timer;

public MailSchedulerDemo() {
timer = new Timer(true);
}

public boolean run() {
boolean success = true;

sendMail();
return success;
}

private void sendMail() {
// 发送邮件
}

public void start() {
task = new ScheduleTimerTask(this);
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 10);
c.set(Calendar.MINUTE, 24);
c.set(Calendar.SECOND, 0);
c.set(2006, 2, 31);// 就是今天,以后就是每周五10点24运行,发邮件部分你就自己写吧.
timer.schedule(task, c.getTime(), ONE_WEEK);
}

public void stop() {
timer.cancel();
}

class ScheduleTimerTask extends TimerTask {

private MailSchedulerDemo subscription;

public ScheduleTimerTask(MailSchedulerDemo s) {
subscription = s;
}

public void run() {
subscription.run();
}
}

}
feixianking 2006-03-31
  • 打赏
  • 举报
回复
还有哪位高人有其他的方法呢~
feixianking 2006-03-31
  • 打赏
  • 举报
回复
谢谢各位了~

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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