我遇到以下情况:我已经编写了一个CDI扩展,我希望以编程方式将其他bean注册到BeanManager
。我已经实现了扩展并在META-INF/services
文件夹中注册了。到目前为止一切正常,我可以跟踪调用此方法的容器:
public class TestCdiExtension implements Extension {
public void observeAfterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager manager) {
// Code goes here
}
}
我现在的问题是:要确定应注册哪些bean,我需要访问运行CDI的当前Web应用程序的ServletContext
。
据我所知,您可以在没有servlet环境的情况下完全使用CDI,因此没有硬链接。但是:我如何根据ServletContext
中的内容执行注册其他bean的工作?
是否正确使用扩展程序?这样做还有其他(更好的?)解决方案吗?