Example usage for org.springframework.beans.factory.config ConfigurableBeanFactory getParentBeanFactory

List of usage examples for org.springframework.beans.factory.config ConfigurableBeanFactory getParentBeanFactory

Introduction

In this page you can find the example usage for org.springframework.beans.factory.config ConfigurableBeanFactory getParentBeanFactory.

Prototype

@Nullable
BeanFactory getParentBeanFactory();

Source Link

Document

Return the parent bean factory, or null if there is none.

Usage

From source file:org.red5.server.war.RootContextLoaderServlet.java

/**
 * Main entry point for the Red5 Server as a war
 *///from  www  .j  a v a2 s.  c  om
// Notification that the web application is ready to process requests
@Override
public void contextInitialized(ServletContextEvent sce) {
    if (null != servletContext) {
        return;
    }
    instance = this;
    System.setProperty("red5.deployment.type", "war");

    myClassloader = getClass().getClassLoader();

    servletContext = sce.getServletContext();
    String prefix = servletContext.getRealPath("/");

    servletContext.setAttribute("root.classloader", myClassloader);

    initRegistry(servletContext);

    long time = System.currentTimeMillis();

    logger.info("RED5 Server (http://www.osflash.org/red5)");
    logger.info("Root context loader");
    logger.debug("Path: " + prefix);

    try {
        // instance the context loader
        ContextLoader loader = createContextLoader();
        applicationContext = (ConfigurableWebApplicationContext) loader
                .initWebApplicationContext(servletContext);
        logger.debug("Root context path: " + applicationContext.getServletContext().getContextPath());

        ConfigurableBeanFactory factory = applicationContext.getBeanFactory();

        // register default
        factory.registerSingleton("default.context", applicationContext);

        // get the main factory
        parentFactory = (DefaultListableBeanFactory) factory.getParentBeanFactory();

        // create a wrapper around our primary context
        BeanFactoryReference beanfactoryRef = new ContextBeanFactoryReference(applicationContext);

        // set it in the root servlet context
        servletContext.setAttribute("bean.factory.ref", beanfactoryRef);

        // set a remoting codec factory for AMF use
        servletContext.setAttribute("remoting.codec.factory", parentFactory.getBean("remotingCodecFactory"));

        server = (Server) parentFactory.getBean("red5.server");

        clientRegistry = (ClientRegistry) factory.getBean("global.clientRegistry");

        globalInvoker = (ServiceInvoker) factory.getBean("global.serviceInvoker");

        globalStrategy = (MappingStrategy) factory.getBean("global.mappingStrategy");

        global = (GlobalScope) factory.getBean("global.scope");
        logger.debug("GlobalScope: " + global);
        global.setServer(server);
        global.register();
        global.start();

        globalResolver = new ScopeResolver();
        globalResolver.setGlobalScope(global);

        logger.debug("About to grab Webcontext bean for Global");
        Context globalContext = (Context) factory.getBean("global.context");
        globalContext.setCoreBeanFactory(parentFactory);
        globalContext.setClientRegistry(clientRegistry);
        globalContext.setServiceInvoker(globalInvoker);
        globalContext.setScopeResolver(globalResolver);
        globalContext.setMappingStrategy(globalStrategy);

        logger.debug("About to grab Webcontext bean for ROOT");
        Context webContext = (Context) factory.getBean("web.context");
        webContext.setCoreBeanFactory(parentFactory);
        webContext.setClientRegistry(clientRegistry);
        webContext.setServiceInvoker(globalInvoker);
        webContext.setScopeResolver(globalResolver);
        webContext.setMappingStrategy(globalStrategy);

        WebScope scope = (WebScope) factory.getBean("web.scope");
        scope.setServer(server);
        scope.setParent(global);
        scope.register();
        scope.start();

        // grab the scope list (other war/webapps)
        IRemotableList remote = (IRemotableList) Naming
                .lookup("rmi://localhost:" + rmiPort + "/subContextList");
        logger.debug("Children: " + remote.numChildren());
        if (remote.hasChildren()) {
            logger.debug("Children were detected");
            for (int i = 0; i < remote.numChildren(); i++) {
                logger.debug("Enumerating children");
                WebSettings settings = remote.getAt(i);
                registerSubContext(settings.getWebAppKey());
            }
            logger.debug("End of children...");
        }

    } catch (Throwable t) {
        logger.error(t);
    } finally {
        timer = new Timer();
        checkScopeList = new CheckScopeListTask();
        timer.scheduleAtFixedRate(checkScopeList, 1000, 30000);
    }

    long startupIn = System.currentTimeMillis() - time;
    logger.info("Startup done in: " + startupIn + " ms");

}

From source file:org.red5.server.war.WarLoaderServlet.java

/**
 * Main entry point for the Red5 Server as a war
 *//* w w w  .  j a va 2  s .  c  o  m*/
// Notification that the web application is ready to process requests
@Override
public void contextInitialized(ServletContextEvent sce) {
    if (null != servletContext) {
        return;
    }
    System.setProperty("red5.deployment.type", "war");

    servletContext = sce.getServletContext();
    String prefix = servletContext.getRealPath("/");

    long time = System.currentTimeMillis();

    logger.info("RED5 Server (http://www.osflash.org/red5)");
    logger.info("WAR loader");
    logger.debug("Path: " + prefix);

    try {
        // instance the context loader
        contextLoader = createContextLoader();
        applicationContext = (ConfigurableWebApplicationContext) contextLoader
                .initWebApplicationContext(servletContext);
        logger.debug("Root context path: " + applicationContext.getServletContext().getContextPath());

        ConfigurableBeanFactory factory = applicationContext.getBeanFactory();

        // register default
        factory.registerSingleton("default.context", applicationContext);

        // get the main factory
        parentFactory = (DefaultListableBeanFactory) factory.getParentBeanFactory();

    } catch (Throwable t) {
        logger.error("", t);
    }

    long startupIn = System.currentTimeMillis() - time;
    logger.info("Startup done in: " + startupIn + " ms");

}