CDI: получить ссылку на beanManager через статический метод

Я использую Weld+ Paxcdi на Java. Я могу получить ссылку на beanManager, используя

@Inject
BeanManager beanManager;

Однако ясно, что я могу использовать этот способ только в объектах, которые управляются контейнером CDI. Как я могу получить ссылку на beanmanager в объекте, который был создан new?

1 ответ

Решение

Я предполагаю, что вопрос относится к OSGi, так как иначе было бы бессмысленно использовать Pax CDI.

Pax CDI создает отдельный контейнер CDI и, следовательно, отдельный менеджер компонентов для каждого пакета компонентов. По этой причине не совсем очевидно, каким должен быть текущий менеджер bean-компонентов.

Начиная с Pax CDI 1.0.0.RC1, CDI.current() возвращает значимое значение при вызове из OsgiServiceProvider метод, если целью метода является точка внедрения в вызывающем классе. CDI.current() иначе не определено.

Pax CDI 0.x основан на CDI 1.0 и поэтому не поддерживает CDI.current(),

Другие вопросы по тегам