org.qi4j.library.servlet.lifecycle

## Class AbstractQi4jServletBootstrap

- java.lang.Object
- - org.qi4j.library.servlet.lifecycle.AbstractQi4jServletBootstrap

- All Implemented Interfaces:
    EventListener, javax.servlet.ServletContextListener, ApplicationAssembler

      public abstract class AbstractQi4jServletBootstrap
      extends Object
      implements javax.servlet.ServletContextListener, ApplicationAssembler

  Abstract ServletContextListener implementing ApplicationAssembler. Extends this class to easily bind a Zest Application activation/passivation to your webapp lifecycle. The `Application` is set as a `ServletContext` attribute named using a constant. In your servlets, filters, whatever has access to the `ServletContext` use the following code to get a handle on the `Application`:

        org.qi4j.api.structure.Application application;

        application = ( Application ) servletContext.getAttribute( Qi4jServletSupport.APP_IN_CTX );

        // Or, shorter:

        application = Qi4jServletSupport.application( servletContext );

  Rembember that the servlet specification states: In cases where the container is distributed over many virtual machines, a Web application will have an instance of the ServletContext for each JVM. Context attributes are local to the JVM in which they were created. This prevents ServletContext attributes from being a shared memory store in a distributed container. When information needs to be shared between servlets running in a distributed environment, the information should be placed into a session, stored in a database, or set in an Enterprise JavaBeans component.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Qi4j` | `api`
    `protected Application` | `application`
    `protected ApplicationDescriptor` | `applicationModel`
    `protected Energy4Java` | `qi4j`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractQi4jServletBootstrap()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `afterApplicationActivation(Application app)`
    `protected void` | `afterApplicationPassivation(Application app)`
    `protected void` | `beforeApplicationActivation(Application app)`
    `protected void` | `beforeApplicationPassivation(Application app)`
    `void` | `contextDestroyed(javax.servlet.ServletContextEvent sce)`
    `void` | `contextInitialized(javax.servlet.ServletContextEvent sce)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.qi4j.bootstrap.ApplicationAssembler

      `assemble`

- - ### Field Detail

    - #### api

          protected Qi4j api

    - #### qi4j

          protected Energy4Java qi4j

    - #### applicationModel

          protected ApplicationDescriptor applicationModel

    - #### application

          protected Application application

  - ### Constructor Detail

    - #### AbstractQi4jServletBootstrap

          public AbstractQi4jServletBootstrap()

  - ### Method Detail

    - #### contextInitialized

          public final void contextInitialized(javax.servlet.ServletContextEvent sce)

      Specified by:
        `contextInitialized` in interface `javax.servlet.ServletContextListener`

    - #### beforeApplicationActivation

          protected void beforeApplicationActivation(Application app)

    - #### afterApplicationActivation

          protected void afterApplicationActivation(Application app)

    - #### contextDestroyed

          public final void contextDestroyed(javax.servlet.ServletContextEvent sce)

      Specified by:
        `contextDestroyed` in interface `javax.servlet.ServletContextListener`

    - #### beforeApplicationPassivation

          protected void beforeApplicationPassivation(Application app)

    - #### afterApplicationPassivation

          protected void afterApplicationPassivation(Application app)