⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portalstartuplistener.java.svn-base

📁 portal越来越流行了
💻 SVN-BASE
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.pluto.driver;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.pluto.OptionalContainerServices;import org.apache.pluto.PortletContainer;import org.apache.pluto.PortletContainerException;import org.apache.pluto.PortletContainerFactory;import org.apache.pluto.RequiredContainerServices;import org.apache.pluto.driver.config.AdminConfiguration;import org.apache.pluto.driver.config.DriverConfiguration;import org.apache.pluto.driver.config.DriverConfigurationException;import org.springframework.web.context.WebApplicationContext;/** * Listener used to start up / shut down the Pluto Portal Driver upon startup / * showdown of the servlet context in which it resides. * <p/> * Startup Includes: * <ol> * <li>Instantiation of the DriverConfiguration</li> * <li>Registration of the DriverConfiguration</li> * <li>Instantiation of the PortalContext</li> * <li>Registration of the PortalContext</li> * <li>Instantiation of the ContainerServices</li> * <li>Registration of the ContainerServices</li> * </ol> * * @version $Revision$ $Date$ * @since Sep 22, 2004 */public class PortalStartupListener implements ServletContextListener {    /**     * Internal logger.     */    private static final Log LOG = LogFactory.getLog(            PortalStartupListener.class);    /**     * The KEY with which the container is bound to the context.     */    private static final String CONTAINER_KEY = AttributeKeys.PORTLET_CONTAINER;    /**     * The KEY with which the driver configuration is bound to the context.     */    private static final String DRIVER_CONFIG_KEY = AttributeKeys.DRIVER_CONFIG;    /**     * The KEY with which the admin configuration is bound to the context.     */    private static final String ADMIN_CONFIG_KEY = AttributeKeys.DRIVER_ADMIN_CONFIG;    // ServletContextListener Impl ---------------------------------------------    /**     * Receives the startup notification and subsequently starts up the portal     * driver. The following are done in this order:     * <ol>     * <li>Retrieve the ResourceConfig File</li>     * <li>Parse the ResourceConfig File into ResourceConfig Objects</li>     * <li>Create a Portal Context</li>     * <li>Create the ContainerServices implementation</li>     * <li>Create the Portlet Container</li>     * <li>Initialize the Container</li>     * <li>Bind the configuration to the ServletContext</li>     * <li>Bind the container to the ServletContext</li>     * <ol>     *     * @param event the servlet context event.     */    public void contextInitialized(ServletContextEvent event) {        LOG.info("Starting up Pluto Portal Driver. . .");        ServletContext servletContext = event.getServletContext();        WebApplicationContext springContext = null;                try {        	springContext = (WebApplicationContext)        		servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);        	        } catch (RuntimeException ex) {        	String msg = "Problem getting Spring context: " + ex.getMessage();        	LOG.error(msg, ex);        	throw ex;        }             LOG.debug(" [1a] Loading DriverConfiguration. . . ");        DriverConfiguration driverConfiguration = (DriverConfiguration)                springContext.getBean("DriverConfiguration");        driverConfiguration.init(servletContext);        LOG.debug(" [1b] Registering DriverConfiguration. . .");        servletContext.setAttribute(DRIVER_CONFIG_KEY, driverConfiguration);        LOG.debug(" [2a] Loading Optional AdminConfiguration. . .");        AdminConfiguration adminConfiguration = (AdminConfiguration)                springContext.getBean("AdminConfiguration");        if (adminConfiguration != null) {            LOG.debug(" [2b] Registering Optional AdminConfiguration");            servletContext.setAttribute(ADMIN_CONFIG_KEY, adminConfiguration);        } else {            LOG.info("Optional AdminConfiguration not found. Ignoring.");        }        initContainer(servletContext);        LOG.info("********** Pluto Portal Driver Started **********\n\n");    }    /**     * Recieve notification that the context is being shut down and subsequently     * destroy the container.     *     * @param event the destrubtion event.     */    public void contextDestroyed(ServletContextEvent event) {        ServletContext servletContext = event.getServletContext();        if (LOG.isInfoEnabled()) {            LOG.info("Shutting down Pluto Portal Driver...");        }        destroyContainer(servletContext);        destroyAdminConfiguration(servletContext);        destroyDriverConfiguration(servletContext);        if (LOG.isInfoEnabled()) {            LOG.info("********** Pluto Portal Driver Shut Down **********\n\n");        }    }    /**     * Initializes the portlet container. This method constructs and initializes     * the portlet container, and saves it to the servlet context scope.     *     * @param servletContext the servlet context.     */    private void initContainer(ServletContext servletContext) {        WebApplicationContext springContext = (WebApplicationContext)                servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);        // Retrieve the driver configuration from servlet context.        DriverConfiguration driverConfig = (DriverConfiguration)                servletContext.getAttribute(DRIVER_CONFIG_KEY);        try {            LOG.info("Initializing Portlet Container. . .");            LOG.debug(" [1] Loading RequiredContainerServices. . .");            RequiredContainerServices required =                    (RequiredContainerServices) springContext.getBean("RequiredContainerServices");            LOG.debug(" [2] Loading OptionalContainerServices. . .");            OptionalContainerServices optional =                    (OptionalContainerServices) springContext.getBean("OptionalContainerServices");            // Create portlet container.            LOG.debug(" [3] Creating portlet container...");            PortletContainerFactory factory =                    PortletContainerFactory.getInstance();            PortletContainer container = factory.createContainer(                driverConfig.getContainerName(), required, optional            );            // Initialize portlet container.            LOG.debug(" [4] Initializing portlet container...");            container.init();            // Save portlet container to the servlet context scope.            servletContext.setAttribute(CONTAINER_KEY, container);            LOG.info("Pluto portlet container started.");        } catch (DriverConfigurationException ex) {            LOG.error("Unable to retrieve driver configuration "                    + "due to configuration error: " + ex.getMessage(), ex);        } catch (PortletContainerException ex) {            LOG.error("Unable to start up portlet container: "                    + ex.getMessage(), ex);        }    }    // Private Destruction Methods ---------------------------------------------    /**     * Destroyes the portlet container and removes it from servlet context.     *     * @param servletContext the servlet context.     */    private void destroyContainer(ServletContext servletContext) {        if (LOG.isInfoEnabled()) {            LOG.info("Shutting down Pluto Portal Driver...");        }        PortletContainer container = (PortletContainer)                servletContext.getAttribute(CONTAINER_KEY);        if (container != null) {            try {                container.destroy();                if (LOG.isInfoEnabled()) {                    LOG.info("Pluto Portal Driver shut down.");                }            } catch (PortletContainerException ex) {                LOG.error("Unable to shut down portlet container: "                        + ex.getMessage(), ex);            } finally {                servletContext.removeAttribute(CONTAINER_KEY);            }        }    }    /**     * Destroyes the portal driver config and removes it from servlet context.     *     * @param servletContext the servlet context.     */    private void destroyDriverConfiguration(ServletContext servletContext) {        DriverConfiguration driverConfig = (DriverConfiguration)                servletContext.getAttribute(DRIVER_CONFIG_KEY);        if (driverConfig != null) {            try {                driverConfig.destroy();                if (LOG.isInfoEnabled()) {                    LOG.info("Pluto Portal Driver Config destroyed.");                }            } catch (DriverConfigurationException ex) {                LOG.error("Unable to destroy portal driver config: "                        + ex.getMessage(), ex);            } finally {                servletContext.removeAttribute(DRIVER_CONFIG_KEY);            }        }    }    /**     * Destroyes the portal admin config and removes it from servlet context.     *     * @param servletContext the servlet context.     */    private void destroyAdminConfiguration(ServletContext servletContext) {        AdminConfiguration adminConfig = (AdminConfiguration)                servletContext.getAttribute(ADMIN_CONFIG_KEY);        if (adminConfig != null) {            try {                adminConfig.destroy();                if (LOG.isInfoEnabled()) {                    LOG.info("Pluto Portal Admin Config destroyed.");                }            } catch (DriverConfigurationException ex) {                LOG.error("Unable to destroy portal admin config: "                        + ex.getMessage(), ex);            } finally {                servletContext.removeAttribute(ADMIN_CONFIG_KEY);            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -