ServletContext属性为空

问题描述:

属性repository返回nullServletContext属性为空

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。

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

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

documentation:此接口的“实现接收通知有关更改Web应用程序,他们是一部分的servlet上下文要接收通知事件,实现类必须在部署描述符中配置为网络应用程序。

+0

否。这应该解决它,是吗? – dantuch 2011-05-16 01:51:30

+0

是的。我已经添加了相关的文档链接。 – iruediger 2011-05-16 01:53:30

+0

非常感谢,现在所有作品:) – dantuch 2011-05-16 01:56:18