Tôi cần tạo Bộ hẹn giờ khoảng thời gian được đặt tự động chạy một lần một tuần. Tôi không muốn nó bắt đầu dựa trên đầu vào của người dùng, nhưng tôi muốn nó được tạo khi ứng dụng được triển khai đến máy chủ. Mỗi ví dụ mà tôi đã thấy có một lớp khác bắt đầu hẹn giờ. Tôi không muốn sử dụng một bean điều khiển thông báo để tạo bộ đếm thời gian vì kiểm toán chỉ nên truy vấn cơ sở dữ liệu trong một khoảng thời gian nhất định và không dựa trên các hành động gửi tin nhắn.Làm thế nào để bắt đầu hẹn giờ EJB khi triển khai?
Tôi đã bao gồm ví dụ về Bộ hẹn giờ. Trong ví dụ bên dưới, bộ hẹn giờ sẽ kích hoạt sau mỗi 10 phút. Là một thử nghiệm, tôi muốn bộ đếm thời gian kích hoạt sau mỗi 10 phút để tôi có thể kiểm tra bộ hẹn giờ.
@Stateless
public class TimerTest implements
TimerTestLocal, TimerTestRemote{
@Resource
private TimerService timerService;
private Logger log = Logger.getLogger(TimerTest.class);
private long interval = 1000 * 60 * 10;
private static String TIMER_NAME = "AuditTimer";
public void scheduleTimer() throws NamingException {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
//cal.set(Calendar.HOUR_OF_DAY, 23);//run at 11pm
//cal.set(Calendar.MINUTE, 00);
//cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm");
log.debug("schedule for: " + sdf.format(cal.getTime()));
timerService.createTimer(cal.getTime(), interval, TIMER_NAME);
}
public void cancelTimer() {
for(Object obj : timerService.getTimers())
{
Timer timer = (Timer)obj;
if(timer.getInfo().equals(TIMER_NAME))
timer.cancel();
}
}
@Timeout
public void timerEvent(Timer timer) {
log.debug("timer fired");
}
}
Vì vậy, có cách nào để tôi có thể bắt đầu hẹn giờ này khi ứng dụng được triển khai không? Tôi không nghĩ rằng đó là một ý tưởng tốt để đặt việc tạo ra các bộ đếm thời gian trong một phương pháp @PostConstruct vì bộ nạp lớp trên máy chủ.
Điều đó hiệu quả. Cảm ơn. – scheibk