Java EE 6: Как внедрить ServletContext в управляемый компонент

(Java EE 6 с Glassfish 3.1)

У меня есть файл свойств, который я хочу обработать только один раз во время запуска, поэтому я сделал это

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>

Как мне получить доступ конфигурация ConfigRecord из управляемого bean-компонента. Я пробую это

@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 .

5
задан Thang Pham 27 June 2011 в 18:25
поделиться