属性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应用程序的部署描述符中配置实现类。”