EclipseLink と JBoss Weld を使用して JavaEE 6 環境を実行しています。EntityManager については、現在 @ConversationScoped スコープを使用しており、JSF インタラクションに対して非常にうまく機能します。
ここで、データの自動チェック (期限のチェックなど) のために @Schedule メソッドを含めたいと考えています。ただし、自動通話が会話を作成していないように見えるため、これが可能かどうかはわかりません。これが現在のアプローチです。
@Stateless
public class Scheduler
@Inject
private CampaignService campaignService;
// CampaignService is @ApplicationScoped and uses an EntityManager
@Schedule(second="*/3", ...)
public void checkDeadlines(){
campaignService.getAll() // fetches all campaigns from EntityManager
...
}
}
ただし、EntityManager が @ConversationScoped である限り、インジェクションは機能しません。(ContextNotActiveException)
JSFを呼び出す以外に会話を「作成」する可能性はありますか? または、 How to use CDI-@SessionScoped without a http-session のように、カスタムスコープを作成する唯一の可能性はありますか?