EJBプロセスからJSFアプリケーションに進捗状況を通知するCDIイベントが用意されています。コードはすべてが同期しているときにうまく動作します。@Asynchronous CDIイベントと@Named beanの@Observesメソッド
@Stateless
public class MySessionBean implements Serializable {
@Inject
@ProcessEvent
Event<ProcessEvent> processEvent; // Also tried to use BeanManager
@Asynchronous // This annotation breaks my code
public void runLongProcess() {
processEvent.fire(new ProcessEvent());
}
}
。
@Named
@ViewScoped
public class ManagedBean implements Serializable {
@EJB
MySessionBean sessionBean;
public void runProcess() {
sessionBean.runLongProcess();
}
@Asynchronous // This annotation doesn't work
public void onEvent(@Observes @ProcessEvent ProcessEvent event){
LOGGER.log(Level.INFO, "Event was received"); // Never called
}
}
私はrunLongProcess()
に@Asychronous
アノテーションを使用している場合、JSF @Observer
メソッドが呼び出されることはありません。
どうすればこの機能を実現できますか?
JSF 2.2 Glassfishの3.1 JEE 7 のJava 8 Omnifaces 2.3