1
我有EJB bean並且有一個類RemoveInactiveUsersTask extends TimerTask當我調用更新數據庫中用戶狀態的方法時。沒有活動的上下文範圍在EJB服務
這是我班的示例代碼:
@Singleton
@Named
@ApplicationScoped
public class UsersStatusManager implements Serializable {
@SuppressWarnings("CdiInjectionPointsInspection")
@Inject
private EntityManager entityManager;
...
}
這是我的錯誤:
Exception in thread "Timer-2" javax.ejb.EJBException: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.RequestScoped
我用JSF與CDI和Seam 3. 方法當然與@Transactional註釋的一切都很好,直到我在定時器中使用它。 我試圖使用非託管的EntityManager,但後來我有交易需要的例外。
任何想法如何我可以解決這個問題?
那麼'RemoveInactiveUsersTask'類是什麼樣的?我懷疑你的某個EJB有一個請求範圍 - 如果你這樣做,並且你試圖在一個單獨的線程中運行它 - 它將不起作用,因爲那裏沒有可用的請求上下文。 – dratewka 2013-05-12 14:02:55