属性repository返回null

public class BaseServlet extends HttpServlet {
    protected MyPersistentManager getPersistentManager(){
        return (MyPersistentManager) getServletContext().getAttribute("repository");
    }
//...
}


我在这里设置:

public class ServletListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
        /*
        load data
         */
        ServletContext servletContext = sce.getServletContext();
        MyPersistentManager persistentManager = new MyPersistentManager();
        servletContext.setAttribute("repository", persistentManager);
    }
}


为什么未设置?似乎该上下文未初始化?我试图重置Tomcat,但是并不能解决问题。我正在使用Netbeans。

最佳答案

ServletListener类是否已在web.xml中注册?

<listener>
 <listener-class>mypackage.ServletListener</listener-class>
</listener>


documentation:“此接口的实现会接收有关它们所属的Web应用程序的Servlet上下文更改的通知。要接收通知事件,必须在Web应用程序的部署描述符中配置实现类。”

10-08 19:57