ServletContextListener 不在部署时执行

ServletContextListener does not execute on deployment

我正在尝试在部署我的 war 文件时初始化一个流对象。

我编写了一个实现 ServletContextListener 的初始化程序 class,并向我的 web.xml 添加了一个监听器-class 标记。问题是当我向我的应用程序发出第一个请求时而不是在部署应用程序时发生 ContextInitialized 事件。

有没有更好的方法来初始化我的应用程序?

编辑:

public class Initializer implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    System.out.println("Context Destroyed");

}

@Override
public void contextInitialized(ServletContextEvent arg0) {
    System.out.println("Context Initialized");
}

}

来自web.xml:

<listener>
    <listener-class>thepackage.Initializer</listener-class>
</listener>

编辑 2: 找到解决方案并在下面发布。

问题是 Websphere Liberty 特有的。

将以下内容添加到 Websphere 服务器的 server.xml (~/wlp/usr/servers/{server-name}/server.xml):

<webContainer deferServletLoad="false"/>

更多信息:

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_servlet_load.html?cp=SSEQTP_8.5.5%2F1-3-11-0-3-2-20-0