Сам не пробовал, только предположение после прочтения 16.5. The Bean interface
главы Сварки документации
class ApplicationScopedBeans {
@Inject BeanManager beanManager;
public Set<Bean<?>> getApplicationScopedBeans() {
Set<Bean<?>> allBeans = beanManager.getBeans(Object.class, new AnnotationLiteral<Any>() {});
Set<Bean<?>> result = new HashSet<Bean<?>>();
for(Bean<?> bean : allBeans) {
if(bean.getScope().equals(ApplicationScoped.class)) {
result.add(bean);
}
}
return result;
}
}
ОБНОВЛЕНИЕ
Кполучить instance
из Bean
:
public Object getApplicationScopedInstance(Bean<?> bean) {
CreationalContext ctx = beanManager.createCreationalContext(bean);
Context appCtx = beanManager.getContext(ApplicationScoped.class);
return appCtx.get(bean, ctx);
}
ОБНОВЛЕНИЕ 2
Похоже, все вышеперечисленное пропускает весь смысл CDI:)
class ApplicationScopedBeans {
@Inject @ApplicationScoped Instance<Object> appScopedBeans;
}