jav*_*dev 6 java schedule timer ejb-3.0
我是J2EE6中@Schedule注释的新手
我想使用带有Glassfish 3.1的EJB 3.x运行一个作业.
javax.ejb.Schedule对我们来说似乎是个不错的选择,所以我们可以把我们的自定义时间想象成:
@Singleton
public class CustomTimer {
@EJB
SettingsFacade settingsFacade;
@Schedule(second="someSecondParameter", minute="someMinuteParameter",hour="someHourParameter", persistent=false)
public void executeTimer(){
//Code executing something against database using the settingsFacade
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我们希望从数据库中获取参数,因此它们每个月都会更改.对此有什么清洁解决方案?
小智 5
@Singleton
@Startup
public class ScheduleTimerService {
@Resource private TimerService timerService;
public void setTimerService(TimerService timerService) {this.timerService = timerService; }
@PostConstruct
private void postConstruct() {
timerService.createCalendarTimer(createSchedule());
}
@Timeout
public void timerTimeout(Timer timer) {
Add your code here to be called when scheduling is reached...
in this example: 01h:30m every day ;-)
}
private ScheduleExpression createSchedule(){
ScheduleExpression expression = new ScheduleExpression();
expression.dayOfWeek("Sun,Mon,Tue,Wed,Thu,Fri,Sat");
expression.hour("01");
expression.minute("30");
return expression;
}
}
| 归档时间: |
|
| 查看次数: |
10315 次 |
| 最近记录: |