https://blogs.oracle.com/arungupta/entry/beanmanager_obtain_contextual_reference_to
javax.enterprise.inject.spi.BeanManager
を使うと、Beanのコンテキストリファレンスをプログラムで取得できます。移植可能な拡張モジュールがコンテナと直接対話できるようにすることが主目的ではありますが、Java EEコンポーネントが利用することも可能です。BeanManager
:を取得する方法は3つあります。- @Injectを使う
@Inject BeanManager bm;
- getBeanManager()を使う
BeanManager bm = CDI.current().getBeanManager();
- JNDI Lookupを使う
BeanManager bm = null; try { InitialContext context = new InitialContext(); bm = (BeanManager)context.lookup("java:comp/BeanManager"); } catch (NamingException | NullPointerException ex) { Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex); ex.printStackTrace(out); }
BeanManagerには他にも多くの有用なメソッドがあります。例えばコンテキストのリファレンスや注入可能なリファレンス、非コンテキストのインスタンスを取得するメソッドがあります。javadocを読んでみて下さい。Set<Bean<?>> beans = bm.getBeans(Greeting.class);
BeanManager (Java(TM) EE 7 Specification APIs)完全なサンプルソースコードは以下から入手できます。
http://docs.oracle.com/javaee/7/api/javax/enterprise/inject/spi/BeanManager.html
glassfish~svn - Revision 62396: /branches/arun/javaee7-samples/samples/cdi/beanmanagerアプリケーションでどんなふうにBeanManagerを使いますか?
https://svn.java.net/svn/glassfish~svn/branches/arun/javaee7-samples/samples/cdi/beanmanager/
0 件のコメント:
コメントを投稿