2013-05-12 40 views
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,但後來我有交易需要的例外。

任何想法如何我可以解決這個問題?

+0

那麼'RemoveInactiveUsersTask'類是什麼樣的?我懷疑你的某個EJB有一個請求範圍 - 如果你這樣做,並且你試圖在一個單獨的線程中運行它 - 它將不起作用,因爲那裏沒有可用的請求上下文。 – dratewka 2013-05-12 14:02:55

回答

4

異常是正確的,這裏沒有活動的請求上下文。你應該嘗試一個更小的範圍;例如依賴。

相關問題