[Java] BeanManager: Obtain Contextual Reference to Beans (TOTD #215)

Posted by Unknown Rabu, 24 Juli 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/arungupta/entry/beanmanager_obtain_contextual_reference_to

javax.enterprise.inject.spi.BeanManagerを使うと、Beanのコンテキストリファレンスをプログラムで取得できます。移植可能な拡張モジュールがコンテナと直接対話できるようにすることが主目的ではありますが、Java EEコンポーネントが利用することも可能です。

BeanManager:を取得する方法は3つあります。
  1. @Injectを使う
    @Inject BeanManager bm;
  2. getBeanManager()を使う
    BeanManager bm = CDI.current().getBeanManager();
  3. 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);
    }
インスタンスはスコープが@Dependent 、修飾子が@Defaultになっています。これを使って、注入が可能なBeanのリストをプログラムで取得できます。例えば以下のような感じです。
Set<Bean<?>> beans = bm.getBeans(Greeting.class);
BeanManagerには他にも多くの有用なメソッドがあります。例えばコンテキストのリファレンスや注入可能なリファレンス、非コンテキストのインスタンスを取得するメソッドがあります。javadocを読んでみて下さい。
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
https://svn.java.net/svn/glassfish~svn/branches/arun/javaee7-samples/samples/cdi/beanmanager/
アプリケーションでどんなふうにBeanManagerを使いますか?
TERIMA KASIH ATAS KUNJUNGAN SAUDARA
Judul: [Java] BeanManager: Obtain Contextual Reference to Beans (TOTD #215)
Ditulis oleh Unknown
Rating Blog 5 dari 5
Semoga artikel ini bermanfaat bagi saudara. Jika ingin mengutip, baik itu sebagian atau keseluruhan dari isi artikel ini harap menyertakan link dofollow ke https://apk-zipalign.blogspot.com/2013/07/java-beanmanager-obtain-contextual.html. Terima kasih sudah singgah membaca artikel ini.

0 komentar:

Posting Komentar

Trik SEO Terbaru support Online Shop Baju Wanita - Original design by Bamz | Copyright of apk zipalign.