最近要在系统中做一个任务监控,即是,每次登录进去之后就能看到服务器上有哪些任务在运行,也可以看到自己提交的任务的进度。这样的话,每次提交完任务不用一直开着浏览器窗口了,随时都可以登录系统查看任务进度。
实现方式是这样的:
在主界面初始化函数中,增加一个
intervalID = setInterval(getTaskInfo,MINISECENDS);
其中MINISECENDS = 1000,表示每一秒钟执行一次getTaskInfo函数。
在getTaskInfo中,实现对后台所有程序的Servlet的访问,由于之前的设置,每个Servlet中都有一个HashTable<String,TaskType>用来存储提交的任务(上一篇日志有提到),因此,在这里的实现中,只需要每秒钟轮询一次每个HashTable,看看有没有任务,然后把任务的所有信息返回给前台,于是任务监控就做好了。
让我诧异的是,Servlet中的变量是常驻内存的,只要服务器没有重启过,任何时候访问Servlet中的HashTable都能找到之前提交过的所有任务信息。
实现方式是这样的:
在主界面初始化函数中,增加一个
intervalID = setInterval(getTaskInfo,MINISECENDS);
其中MINISECENDS = 1000,表示每一秒钟执行一次getTaskInfo函数。
在getTaskInfo中,实现对后台所有程序的Servlet的访问,由于之前的设置,每个Servlet中都有一个HashTable<String,TaskType>用来存储提交的任务(上一篇日志有提到),因此,在这里的实现中,只需要每秒钟轮询一次每个HashTable,看看有没有任务,然后把任务的所有信息返回给前台,于是任务监控就做好了。
让我诧异的是,Servlet中的变量是常驻内存的,只要服务器没有重启过,任何时候访问Servlet中的HashTable都能找到之前提交过的所有任务信息。