【发布时间】:2011-06-27 18:20:00
【问题描述】:
(带有 Glassfish 3.1 的 Java EE 6)
我有一个属性文件,我只想在启动时处理一次,所以我这样做了
public class Config implements ServletContextListener{
private static final String CONFIG_FILE_PATH = "C:\\dev\\harry\\core.cfg";
private static final String CONFIG_ATTRIBUTE_NAME = "config";
private long startupTime;
private ConfigRecord config;
@Override
public void contextInitialized(ServletContextEvent sce) {
this.startupTime = System.currentTimeMillis() / 1000;
this.config = new ConfigRecord(CONFIG_FILE_PATH); //Parse the property file
sce.getServletContext().setAttribute(CONFIG_ATTRIBUTE_NAME, this);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
//Nothing to do here
}
public ConfigRecord getConfig() {
return config;
}
public long getStartupTime() {
return startupTime;
}
}
在web.xml,我注册如下
<listener>
<listener-class>com.wf.docsys.core.servlet.Config</listener-class>
</listener>
现在我如何从托管 bean 访问 ConfigRecord config。我试试这个
@ManagedBean
@RequestScoped
public class DisplayInbound {
@EJB
private CoreMainEJBLocal coreMainEJBLocal;
@javax.ws.rs.core.Context
private ServletContext servletContext;
public void test(){
Config config = (Config) servletContext.getAttribute("config")
ConfigRecord configRecord = config.getConfig();
}
}
我认为它不起作用。得到NullPointerException。
【问题讨论】:
标签: jsf jakarta-ee java-ee-6 servlets