List of usage examples for org.springframework.beans.factory.config ConfigurableBeanFactory getParentBeanFactory
@Nullable BeanFactory getParentBeanFactory();
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"); }