如何在tomcat服务器上安排一个任务每X小时运行一次?
How can I schedule a task to run every X hours on my tomcat server?
我有一个网页在javascript主要有一个导出到excel功能。
例如,我如何安排该函数每2小时运行并保存在服务器上的特定文件夹中?
因为这听起来像是你已经构建了所有的东西,只是想让它自动化,这里有一个想法:
- 设置每2小时运行一次Quartz作业。例子
- 使用Rhino在JVM中运行JavaScript。例子。OTOH,你可以将JS代码翻译成Java,然后在没有Rhino的情况下本地运行。
- 获取JS方法的输出并将其保存到服务器。
new Timer().schedule(new TimerTask(){
@Override
public void run()
{
//export Excel here
}
}, 0, 1000*60*60*2);
如果您希望调度由客户端控制,那么您可以使用元刷新标记或简单的settimeout js调用。
如果你想在服务器上控制调度,你可以在服务器上创建一个TimerTask。
我会创建一个warpper类,不仅会创建TimerTask,但管理它'他们(如果例如一个计时器应该创建每个用户或处置的用户请求)
一个简单的方法是使用Timer.scheduleAtFixedRate()方法。这是在您出于某种原因不想导入任何第三方库的情况下。不过,其中一些还是相当不错的!
Timer timer = new Timer("TEST", true);
timer.scheduleAtFixedRate(new TestTimer(), INITIAL_DELAY, INTERVAL_PERIOD);
在这里你定义了你的TestTimer (TestTimer扩展了TimerTask)来导出Excel, INITIAL_DELAY是它应该第一次触发的时间,INTERVAL_PERIOD是它应该再次尝试导出到Excel的时间。见https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 当使用Watchify时,Browserify+Babelify Gulp任务没有终止
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- gulp Iconify任务抛出错误TypeError:Path必须是字符串.收到false
- IE在将字符串转换为日期时从日期中删除4小时
- 如果助手不在,如何从Grunt中的代码中调用任务
- WinJS(WP8.1):从后台任务更新辅助磁贴
- 如何使用gump任务将html转换为javascript字符串
- 在等待异步任务时永久循环
- 调整屏幕大小时更改属性值
- 将直流图表库中的折线图缩放限制为小时
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- 让谷歌数据图表有一个24小时x轴
- Jqgrid 24小时格式的日期列
- 如何在dhtmlxgantt中保存任务
- 如果在过去两个小时内没有记录,返回0,javascript逻辑
- 任务根据小时时间轴网格进行相应调整
- 如何在tomcat服务器上安排一个任务每X小时运行一次?