Beispiel #1
0
  static {
    initLogger();

    BeanFactoryLocator beanFactoryLocator = ContextSingletonBeanFactoryLocator.getInstance();
    BeanFactoryReference beanFactoryReference = beanFactoryLocator.useBeanFactory("ctx");
    beanFactory = beanFactoryReference.getFactory();
  }
Beispiel #2
0
  /**
   * Used to lookup parent spring ApplicationContext. This allows a parent spring ApplicatonContet
   * to be provided in the same way you would configure a parent ApplicationContext for a spring
   * WebAppplicationContext
   *
   * @param servletContext
   * @return
   * @throws BeansException
   */
  protected ApplicationContext loadParentContext(ServletContext servletContext)
      throws BeansException {

    ApplicationContext parentContext = null;
    String locatorFactorySelector =
        servletContext.getInitParameter(ContextLoader.LOCATOR_FACTORY_SELECTOR_PARAM);
    String parentContextKey =
        servletContext.getInitParameter(ContextLoader.LOCATOR_FACTORY_KEY_PARAM);

    if (parentContextKey != null) {
      // locatorFactorySelector may be null, indicating the default
      // "classpath*:beanRefContext.xml"
      BeanFactoryLocator locator =
          ContextSingletonBeanFactoryLocator.getInstance(locatorFactorySelector);
      if (logger.isDebugEnabled()) {
        logger.debug(
            "Getting parent context definition: using parent context key of '"
                + parentContextKey
                + "' with BeanFactoryLocator");
      }
      parentContext = (ApplicationContext) locator.useBeanFactory(parentContextKey).getFactory();
    }

    return parentContext;
  }
  protected ComponentManager() {
    beanFactory =
        (ApplicationContext)
            ContextSingletonBeanFactoryLocator.getInstance(BEAN_REF_CONTEXT_XML)
                .useBeanFactory(ROOT_BEAN_FACTORY_NAME)
                .getFactory();

    logger.warn("<<< ComponentService (Spring) started >>>");
  }
Beispiel #4
0
 public static ApplicationContext getApplicationContext(String selector, String factoryKey) {
   if (selector == null) selector = "configurations/default-spring-context.xml";
   if (factoryKey == null) factoryKey = "spring-context.xml";
   BeanFactoryReference reference =
       ContextSingletonBeanFactoryLocator.getInstance(
               System.getProperty("spring.configuration", selector))
           .useBeanFactory(factoryKey);
   BeanFactory beanFactory = reference.getFactory();
   return (ApplicationContext) beanFactory;
 }
Beispiel #5
0
 public static Object getBean(String selector, String factoryKey, String name, Class type) {
   if (selector == null) selector = "configurations/default-spring-context.xml";
   if (factoryKey == null) factoryKey = "spring-context.xml";
   BeanFactoryReference reference =
       ContextSingletonBeanFactoryLocator.getInstance(
               System.getProperty("spring.configuration", selector))
           .useBeanFactory(factoryKey);
   BeanFactory beanFactory = reference.getFactory();
   return beanFactory.getBean(name, type);
 }
  /** {@inheritDoc} */
  public void configureWebApp() throws Exception {
    log.debug("Configuring Jetty webapp");

    // Get context
    WebAppContext context = getWebAppContext();

    // If app is already started...
    if (context.isStarted()) {
      log.debug("Cannot configure webapp after it is started");
      return;
    }

    // Get WEB_INF directory
    Resource webInf = context.getWebInf();
    if (webInf != null && webInf.isDirectory()) {
      // Get properties file with virtualHosts and context path
      Resource config = webInf.addPath("red5-web.properties");
      if (config.exists()) {
        log.debug("Configuring red5-web.properties");
        // Load configuration properties
        Properties props = new Properties();
        props.load(config.getInputStream());

        // Get context path and virtual hosts
        String contextPath = props.getProperty("webapp.contextPath");
        String virtualHosts = props.getProperty("webapp.virtualHosts");

        // Get hostnames
        String[] hostnames = virtualHosts.split(",");
        for (int i = 0; i < hostnames.length; i++) {
          hostnames[i] = hostnames[i].trim();
          if (hostnames[i].equals("*")) {
            // A virtual host "null" must be used so requests for
            // any host will be served.
            hostnames = null;
            break;
          }
        }

        // Set virtual hosts and context path to context
        context.setVirtualHosts(hostnames);
        context.setContextPath(contextPath);
        LoaderBase.setRed5ApplicationContext(contextPath, new JettyApplicationContext(context));
      }
    } else if (webInf == null) {
      // No WEB-INF directory found, register as default application
      log.info(
          "No WEB-INF directory found for "
              + context.getContextPath()
              + ", creating default application.");
      BeanFactoryLocator bfl = ContextSingletonBeanFactoryLocator.getInstance("red5.xml");
      BeanFactoryReference bfr = bfl.useBeanFactory("red5.common");

      // Create WebScope dynamically
      WebScope scope = new WebScope();
      IServer server = (IServer) bfr.getFactory().getBean(IServer.ID);
      scope.setServer(server);
      scope.setGlobalScope(server.getGlobal("default"));

      // Get default Red5 context from context loader that is JettyLoader in this case
      ApplicationContext appCtx = JettyLoader.getApplicationContext();
      ContextLoader loader = (ContextLoader) appCtx.getBean("context.loader");
      appCtx = loader.getContext("default.context");

      // Create context for the WebScope and initialize
      Context scopeContext = new Context();
      scopeContext.setContextPath("/");
      scopeContext.setClientRegistry((IClientRegistry) appCtx.getBean("global.clientRegistry"));
      scopeContext.setMappingStrategy((IMappingStrategy) appCtx.getBean("global.mappingStrategy"));
      scopeContext.setServiceInvoker((IServiceInvoker) appCtx.getBean("global.serviceInvoker"));
      scopeContext.setScopeResolver((IScopeResolver) appCtx.getBean("red5.scopeResolver"));

      // The context needs an ApplicationContext so resources can be
      // resolved
      GenericWebApplicationContext webCtx = new GenericWebApplicationContext();
      webCtx.setDisplayName("Automatic generated WebAppContext");
      webCtx.setParent(appCtx);
      webCtx.setServletContext(ContextHandler.getCurrentContext());
      scopeContext.setApplicationContext(webCtx);

      // Store context in scope
      scope.setContext(scopeContext);

      // Use default ApplicationAdapter as handler
      scope.setHandler(new ApplicationAdapter());

      // Make available as "/<directoryName>" and allow access from all
      // hosts
      scope.setContextPath(context.getContextPath());
      scope.setVirtualHosts("*");

      LoaderBase.setRed5ApplicationContext(
          context.getContextPath(), new JettyApplicationContext(context));

      // Register WebScope in server
      scope.register();
    }
  }