Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import jakarta.ejb.ScheduleExpression;
import jakarta.ejb.TimerConfig;
import jakarta
.ejb.TimerService;
Bu arayüz yerine @Schedule anotasyonu da kullanılabilir. Açıklaması şöyle. Yani TimerService ile timer başlatıldıktan sonra @Timeout olarak işaretli metodumuz çağrılır
Bu sınıf ile birlikte kullanılan javax.ejb.TimerConfig nesnesi timer nesnesinin persistent olup olmadığını belirtmek için kullanılırthe timer service can be injected into any bean (except a stateful session bean) and the business logic should be placed in a method annotated with @Timeout. The timer can be initialized by a method annotated @PostConstruct of the beans or it can also be initialized just by calling a method.
Bu sınıfı bir EJB içine enjekte etmek için şöyle yaparız.
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.ScheduleExpression;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Singleton
@Startup
@TransactionManagement(TransactionManagementType.BEAN)
public class NightlyWorkTerminationEmailSender extends SchedulableService {
private final static String TIMER_ID = "WorkTerminationEmailNotificationServiceTimer";
@Resource
private TimerService timerService;
...
}
createCalendarTimer metodu
Belirtilen cron cümlesine göre timer başlatır. cron cümlesi tek seferlik veya periyodik bir iş olabilir.
Örneğin periyodik işi için ScheduleExpression şöyle olabilir.
ScheduleExpression result = new ScheduleExpression(); result.hour("12").dayOfMonth("1").minute("0").month("*");
Örnek
Şöyle yaparız.// get the configuration parameter from DB
Date notificationTime = ...;
Calendar calendar = Calendar.getInstance();
calendar.setTime(notificationTime);
// create schedule
ScheduleExpression schedule = new ScheduleExpression();
schedule.hour(calendar.get(Calendar.HOUR_OF_DAY)).minute(calendar.get(Calendar.MINUTE));
timerService.createCalendarTimer(schedule, new TimerConfig("MyTimer"
, false));
createTimer metodu - Periyodik TimerÖrnek
Şöyle yaparız
timerService.createTimer(0,1000, "Every second timer with no delay");
Hiç yorum yok:
Yorum Gönder