我的應用程序有一個調度程序,需要每10秒運行一次以從數據庫中提取新記錄。我已經執行了ejb調度程序服務,通過以下this guide運行正常。沒有客戶端可以使用hit()方法,它只能作爲調度程序運行。EJB調度程序服務無狀態與單例
辛格爾頓唯一途徑,
@Singleton
@Startup
public class DataFetcherService {
@Schedule(second="*/10", minute="*", hour="*", persistent=true)
public void hit() {
//do some stuff
fetchData();
}
public void fetchData() {
//Fetch new records from the database through DAO objects
}
}
有沒有,如果我用@Stateless代替@辛格爾頓有什麼區別?請建議
更新:無狀態的方法,
@Singleton
@Startup
public class DataFetcherService {
@EJB
DataFetcherBean dataFetcherBean;
@Schedule(second="*/10", minute="*", hour="*", persistent=true)
public void hit() {
dataFetcherBean.fetchData();
}
}
@Stateless
public class DataFetcherBean {
public void fetchData() {
//Fetch new records from the database through DAO objects
}
}
'@Lock(LockType.WRITE)'。 – Tiny
NBW,我已更新該帖子。你可以看看嗎?我有2個問題:上述方法(容器管理類型)有問題嗎?我們可以用無狀態註釋替換單例嗎? – Hello
@Hello - 更新我的回答對您的問題和變化。 – NBW