Ayrıca, birkaç satır kod yazmanızı sağlayan CDI.current() kullanarak BeanManager'a da erişebilirsiniz. Örnek JNDI kullanarak CDI.current kullanma here
()
BeanManager bm = CDI.current().getBeanManager();
alınan:
BeanManager bm = null;
try {
InitialContext context = new InitialContext();
bm = (BeanManager) context.lookup("java:comp/BeanManager");
} catch (Exception e) {
e.printStackTrace();
}
Şimdi BeanManager bir tip tabanlı arama birini yaparak sizin CDI fasulye erişebilir var veya isim tabanlı bir arama.
Tipi tabanlı:
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);
Adı tabanlı
Bean bean = bm.getBeans("crudService").iterator().next();
CreationalContext ctx = bm.createCreationalContext(bean);
CrudService crudService = bm.getReference(bean, bean.getClass(), ctx);
için tam bir örnek:
//get reference to BeanManager
BeanManager bm = CDI.current().getBeanManager();
Bean<CrudService> bean = (Bean<CrudService>) bm.getBeans(CrudService.class).iterator().next();
CreationalContext<CrudService> ctx = bm.createCreationalContext(bean);
//get reference to your CDI managed bean
CrudService crudService = (CrudService) bm.getReference(bean, CrudService.class, ctx);
GÜNCELLEME - Eğer CDI 1.1 kullanıyorsanız bu şimdi bir satır elde edilebilir :
CrudService crudService = CDI.current().select(CrudService.class).get();
http://dominikdorn.com/2010/04/cdi-weld-manual-bean-lookup/ – Sebi
adresinde iyi bir kod örneği buldum @ManagedBean adlı bir A (value = "MyManagedBean") POJO, JNDI'ye bakılabilir. InitialContext.doLookup ile ("java: app/myapp/MyManagedBean"); javax.annotation.ManagedBean API'sini görebilmeniz için –
'javax.annotation.ManagedBean' ifadesinin tam olarak ne olduğunu merak ettim: http://stackoverflow.com/a/32420123/1341535 –