非CDIクラスから CDI bean を取得
http://d.hatena.ne.jp/Kazuhira/20150519/1432044528
https://stackoverflow.com/questions/8166187/can-i-and-how-lookup-cdi-managed-beans-using-javax-naming-contextlookup-in-ej
BeanManager bm = null; try { InitialContext context = new InitialContext(); bm = (BeanManager) context.lookup("java:comp/BeanManager"); } catch (Exception e) { e.printStackTrace(); } Bean<CrudService> bean = (Bean<CrudService>) bm.getBeans(CrudService.class).iterator().next(); CreationalContext<CrudService> ctx = bm.createCreationalContext(bean); CrudService crudService = (CrudService) bm.getReference(bean, CrudService.class, ctx);
CDI を最初に初期化する(EJBの@Startupのように) 要 CDI 1.1
@ApplicationScoped public class JbpmServiceBean { @Inject @Singleton private RuntimeManager runtimeManager; // WORKAROUND: Init RuntimeManager outside of transaction public void init(@Observes @Initialized(ApplicationScoped.class) Object init) { System.out.println("JbpmServiceBean was successfully initialized on start-up!"); }