Skip to content

Configuring Atmosphere's Classes Creation and Injection

Jeanfrancois Arcand edited this page Oct 1, 2013 · 21 revisions

Starting with Atmosphere 2.1, it is possible to configure a AtmosphereObjectFactory and configure Atmosphere to use it. All you need to do is to define an init-param:

<init-param>
  <param-name>org.atmosphere.cpr.objectFactory</param-name>
  <param-value> << an implementation of AtmosphereObjectFactory >> </param-value>
</init-param>

For example, to use Spring, you can define:

public class SpringObjectFactory implements AtmosphereObjectFactory {

    @Override
    public <T> T newClassInstance(AtmosphereFramework framework, Class<T> tClass) throws InstantiationException, IllegalAccessException {
        return WebApplicationContextUtils.getWebApplicationContext(framework.getServletContext()).getBean(tClass);
    }
}

For Guice, you can do:

public class GuiceObjectFactory implements AtmosphereObjectFactory {
    @Override
    public <T> T newClassInstance(AtmosphereFramework framework, Class<T> tClass) throws InstantiationException, IllegalAccessException {
        com.google.inject.Injector injector = (com.google.inject.Injector)
                framework.getServletContext().getAttribute(com.google.inject.Injector.class.getName());
        if (injector == null)
            throw new IllegalStateException("No Guice Injector found in current ServletContext !");
        return injector.getInstance(tClass);
    }
}

Step by Step Tutorials

Concepts & Architecture

15 Minutes Tutorial

Advanced Topics

API

Known WebServer Issues

References

External Documentations

githalytics.com alpha

Clone this wiki locally