属性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。
答案 0 :(得分:4)
ServletListener类是否在web.xml中注册?
<listener>
<listener-class>mypackage.ServletListener</listener-class>
</listener>
从documentation:“此接口的实现接收有关它们所属的Web应用程序的servlet上下文更改的通知。要接收通知事件,必须配置实现类在Web应用程序的部署描述符中。“