我是web開發新手我正在使用java servlets製作一些web服務,而且我陷入了這麼多問題怎麼辦?東西:(在使用Servlet後將mysql colum值重置爲默認值
我開發的,我需要MySQL表列中的值在一段時間內重置回默認值讓我們說,我們需要將計數器復位@每週日下午10:00中的應用。
有沒有像Java或MySQL的報警經理的任何東西,可以在後臺和觸發@特定時間運行的所有時間。
感謝,
我是web開發新手我正在使用java servlets製作一些web服務,而且我陷入了這麼多問題怎麼辦?東西:(在使用Servlet後將mysql colum值重置爲默認值
我開發的,我需要MySQL表列中的值在一段時間內重置回默認值讓我們說,我們需要將計數器復位@每週日下午10:00中的應用。
有沒有像Java或MySQL的報警經理的任何東西,可以在後臺和觸發@特定時間運行的所有時間。
感謝,
您還可以使用的mysql
這取決於MySQL版本,以及是否啓用與否
is there any thing like alarm manager in Java or mysql that can run all the time in background and trigger @ specific time.
看一個叫API,您的程序可以在其中安排作業,並在當時運行它。
使用方法execute(JobExecutionContext jobExecution)
用於觸發觸發器。
EG:
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
// Retrieve scheduler
Scheduler scheduler = null;
try {
scheduler = schedulerFactory.getScheduler();
}
catch (SchedulerException e) {
e.printStackTrace();
}
//this is a job
JobDetail job = new JobDetail("jobDetail", "jobDetailGroup", ImplementedJob.class);
SimpleTrigger trigger = new SimpleTrigger("Trigger Name","defaultGroup", DATE);
// schedule
scheduler.scheduleJob(job, trigger);
// start the scheduler
scheduler.start();
Java有一個良好的界面事件調度機制ScheduledExecutorService的。 你可以試試這個代碼
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
//every day to execute
long everyDayDelay = 24*60*60*1000;
//first time to execute, it can be your special date
//for example 5 seconds after launch
long timeToExecute = System.currentTimeMillis()+5*1000;
service.scheduleWithFixedDelay(new Task(), getTimeToLaunch(timeToExecute), everyDayDelay, TimeUnit.MILLISECONDS);
其中
//return difference between now and timeToExecute
public static long getTimeToLaunch(long timeToExecute){
long current = System.currentTimeMillis();
return timeToExecute - current;
}
class Task implements Runnable{
@Override
public void run() {
System.out.println("Run task!");
}
}
UPDATE:Class對執行SQL任務
public class SqlExecutionService1 {
public static final long everyDayDelay = 24*60*60*1000;
public SqlExecutionService1(){
ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
//every day to execute
//first time to execute
//for example 5 seconds after launch
long timeToExecute = System.currentTimeMillis()+5*1000;
service.scheduleWithFixedDelay(new SqlTask1(), getTimeToLaunch(timeToExecute), everyDayDelay, TimeUnit.MILLISECONDS);
}
private long getTimeToLaunch(long timeToExecute){
long current = System.currentTimeMillis();
return timeToExecute - current;
}
}
class SqlTask1 implements Runnable{
@Override
public void run() {
//your sql tasks
}
}
要創建這個類,你的應用服務器啓動時 - 使用方法init()在你的一個主要servlet中。 實施例 -
public class MainInitServlet extends HttpServlet {
public void init() {
new SqlExecutionService1();
}
}
的數據庫的數據應該是基礎爲計算,計算的不結果。在示例中不會成功修改。
我想這個事實將永遠是程序員和建築師之間的衝突。
嘿,想象一下,如果像Travian這樣的在線遊戲存在黃金超時計算錯誤,如果你修正了這個錯誤,遊戲者的黃金將被正確計算。但是如果你更新數據庫中的結果,你幾乎不得手動重新計算他所有的黃金時間。 –
我正在製作一個應用程序,其中用戶假設每天排名前20,項目或每週至20項,你們可以指出一個更好的方法來做到這一點。 –
@NixitPatel總是創造一個新的頂端是什麼問題?然後你可以通過當前日期獲得新的頂部。 –
我可以放第一個片段,我不認爲我們可以放入Servlet,從那裏我可以啓動調度程序任務,這樣它可以獨立於PC並僅依賴於服務器。 –
@NixitPatel可能是你可以創建一個特定的類,其中將創建調度器。我認爲你可以創建這個類,當你的應用程序服務器啓動。 –
你能告訴我那是哪一類嗎?我對此完全陌生。 –