セッションがありますが、私はRunnableを実装して@Stateless豆に注入されたBeanのアイデンティティ」をスコープ:SessionContextを新しいスレッドに伝播する方法はありますか(WELD-001303の取得)?
@Stateless
@LocalBean
public class Test implements Runnable {
@Inject
Identity identity;
@Inject
Logger log;
@Override
public void run() {
log.warn("Test: " + this + " " + identity.getAccount().getId());
}
}
非同期のRunnable上で呼び出す豆もあります:
@Stateless
@LocalBean
public class BeanContextExecutor implements Executor {
@Asynchronous
@Override
public void execute(Runnable command) {
command.run();
}
}
そして最後に、呼び出しは次のようになります。
@Stateless
public class OtherBean {
@Inject
BeanContextExecutor executor;
...
executor.execute(command);
...
}
私は次のエラーを取得しています、これを実行している:
...
Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.SessionScoped
...
SessionContextをバックグラウンドスレッドに伝播する方法はありますか?
また、このRunnableをManagedExecutorServiceに送信して、ContextServiceでプロキシを作成してプロキシを送信しても、同じエラーが表示されるようにしました。
ありがとうございました!私は新しいスレッドのためのダミーセッションコンテキストを作成するためにBoundSessionContextを使用しても、手動でバックグラウンドスレッドで、その状態を利用可能にするために必要なセッションBeanをコピーする必要がありましたBeanContextExecutorで回避策として