首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@ApplicationScoped Bean在Wildfly 16上未急于实例化

@ApplicationScoped Bean在Wildfly 16上未急于实例化
EN

Stack Overflow用户
提问于 2020-03-04 18:48:25
回答 1查看 100关注 0票数 1

我有一个@ApplicationScoped bean,我希望在应用程序启动时实例化它(参见下面的示例代码)。我已经注册了servlet上下文初始化事件,但是init方法从未被调用过。FactoryLocator包含在我的war的WEB-INF/lib目录中的jar中。同样的代码在Wildfly 9上工作,但在升级到Wildfly 16后不再工作。

代码语言:javascript
运行
复制
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
import javax.servlet.ServletContext;

@ApplicationScoped
public class FactoryLocator {
    public FactoryLocator() {
        System.out.println("In the constructor.........................");
    }

    private void init(@Observes @Initialized(ApplicationScoped.class) ServletContext sc) {
        System.out.println("Invoking the event observer method..................");
        }
}

我发现的一种解决方法是将war的WEB-INF/lib/目录中的jars内容解压缩到war的WEB-INF/classes目录中。当我这样做时,我的FactorLocator bean被成功地实例化了。我不希望不得不这么做。

在对war的部署进行调试之后,我注意到在对war的lib目录中的所有bean进行(org.jboss.weld.bootstrap.BeanDeploymentModules:processBeanDeployments).处理之前,ServletContext已被初始化在处理完所有bean之前,war的模块并不知道所有的观察者。但是,在所有观察者都知道之前,ServletContextEvent就会被触发。

如果在知道所有观察者之前就创建了ServletContext,会发生这种情况吗?我已经调试了一个Wildfly QuickStart应用程序,直到处理完所有ServletContext部署并成功执行下面的代码后,才会创建bean。这种情况发生的顺序应该是有保证的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-02 18:24:13

以防其他人也看到了同样的问题。升级到Wildfly 21.0.1最终为我解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60524332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档