在weblogic中设置启动时自动定时执行的任务 分享

一.Timer与TimerTask组合起来用于实现定时执行任务的功能
  1.TimerTask:定义要执行的任务,你需要自己定义一个继承自该类的子类,并把要执行的任务实现在run接口中,如下所示:
  import java.util.*;
  
  public class MyTask extends TimerTask
  {
   public void run()
   {
  //你的任务
   System.out.println( "Running the task" );
   }
  }.
  实际上TimerTask实现了java.lang.Runnable 接口
  2.Timer:通过schedule方法定时调用TimerTask设定的任务
   包含方法:
   (1).Timer()
   以常规方式运行task
   (2).Timer(boolean)
   true时表示使用后台线程。只要剩下的程序继续运行,后台线程就会执行。
   (3).public void cancel()
   终止Timer的功能执行,但不会对正在执行的任务有影响。当执行cancel方法后将不能再用其分配任务。
   (4).public void schedule(TimerTask task,Date time)
   task被安排在time指定的时间执行,如果时间为过去时则任务立刻执行。
   (5).public void schedule(TimerTask task, Date firstTime, long period)
   task被安排在time指定的时间执行,执行后将每隔period(毫秒)反复执行。
   (6).public void schedule(TimerTask task, long delay)
   task被安排在delay(毫秒)指定的时间后执行。
   (7).public void schedule(TimerTask task,long delay, long period)
   task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。 (8).public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
   task被安排在firstTime指定的时间执行。执行后将每隔period(毫秒)反复执行。根据该任务第一次执行的时间来指定反复执行时延长的时间段。如果一个任务被延时了,被安排在后面执行的任务就被相应的缩短等待时间以“接上”被延时的任务
   (9).public void scheduleAtFixedRate(TimerTask task,long delay,long period)
   task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。同上。
  注意每个 Timer 对象在同一时间只能执行一个任务
  以下是一个例子:
  
  import java.util.*;
  import java.io.*;
  
  
  public class doTask extends TimerTask {
   String index;
   Timer myTimer = new Timer();
   public doTask(String index) {
   this.index = index;
   }
  
   public void run() {
   System.out.println(index);
   }
  
   public static void main(String args[]) {
   doTask myTask1 = new doTask("First task");
   myTask1.start(0,3);
   doTask myTask2 = new doTask("Second task");
   myTask2.start(0,1);
  
   try{
   Thread.sleep(6000);
   }
   catch(InterruptedException e){
   }
  
   myTask1.end();
   myTask2.end();//程序结束时用cancel()结束Timer
  
   }
  
   public void start(int delay, int internal) {
   myTimer.schedule(this, delay * 1000, internal * 1000); //利用timer.schedule方法
   }
   public void end(){
   myTimer.cancel();
   }
  }
  
  输出:
  First task
  Second task
  Second task
  Second task
  First task
  Second task
  Second task
  Second task
  
  
  二.要使该class能在weblogic启动后自动执行,需要一个实现T3StartupDef接口的class
  import java.util.Hashtable;
  import weblogic.common.T3StartupDef;
  import weblogic.common.T3ServicesDef;
  public class startuptest implements T3StartupDef {
  
  public void setServices(T3ServicesDef services) {}
  
  public String startup(String name, Hashtable args) throws Exception {
   doTask.main();
  
  return "Startup completed successfully";
  }
  }
  在weblogic中添加该任务以便在weblogic启动后自动执行,启动weblogic,在Console 左边的mydomain—> Deployment—>Startup & Shutdown里点击“Configure a new Startup Class...”
  Name随便填,ClassName填PackageName.ClassName(该class必须实现startup接口)
  Deployment Order:指定Startup class的启动顺序,当存在多个Startup class时Order小的先执行
  Create就可以了,如果运行时提示class找不到,那需要在commEnv.cmd文件的WEBLOGIC_CLASSPATH中追加该class的路径
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值