weblogic定时启动程序
2012-06-26(Tuesday) 00:00
有个需求是要求程序在每天晚上3点钟的时候自动调用一个Job执行。
解决方案:定制weblogic的启动类,用来运行Job执行。
STEP1,启动类StartupTask:
public class StartupTask implements T3StartupDef {
public String startup(String name, Hashtable args) throws Exception {
Callplsql.main(null);
return "Callplsql Startup successful completed";
}
public void setServices(T3ServicesDef t3ServicesDef) {
}
} Callplsql.java( 即是JOB类,是需要被调用的,要继承TimerTask )中的Main方法要有:
public static void main(String[] args) {
//任务执行间隔时间,默认24小时
long PERIOD_TIME=24*60*60*1000;
long delay=0;
//任务首次启动时间,默认零晨3点
Calendar end=Calendar.getInstance();
end.set(Calendar.HOUR_OF_DAY, 3);
end.set(Calendar.MINUTE, 0);
end.set(Calendar.SECOND, 0);
Calendar now=Calendar.getInstance();
delay=end.getTime().getTime()-now.getTime().getTime();
if(delay<=0){
delay=PERIOD_TIME+delay;
} System.out.println("当前时间:"+now.getTime());
System.out.println("首次启动SAP同步程序时间:"+end.getTime());
System.out.println("延时:"+delay+"毫秒启动SAP同步程序!");
// 待执行的任务
Timer time=new Timer();
Callplsql task=new Callplsql();
time.schedule(task,delay,PERIOD_TIME);
} 通过time.schedule每天零晨3:00循环调用JOB。
编译好StartupTask类后,要在weblogic控制台设置好启动类即可实现此需求。