<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<!-- Id: -->
<chapter id="introduction">
  <title>Introduction to the JBoss Microcontainer</title>

  <para>The JBoss Microcontainer (MC) provides an environment to configure and
  manage POJOs (plain old java objects). It is designed to reproduce the
  existing JBoss JMX Microkernel but targetted at POJO environments. As such
  it can be used standalone outside the JBoss Application Server.</para>

  <para>The 2.0.x release provides a set of features to support POJO
  deployment in JBossAS-5.0.x, JBossESB, and the bootstrap of services used by
  standalone projects like embedded EJB3.</para>

  <para></para>

  <para>This document takes you through the design of the microcontainer
  including design decisions and future directions.
  </para>

  <sect1>
      <title>JBoss Microcontainer Highlights</title>
      <para>The primary focus of the MC is as a framework for
      building server kernels. It replaces the legacy JMX based kernel
      found in JBossAS4.x and earlier with a POJO based kernel that
      has been generalized to better support extensibility along the
      primary aspects required for a server type of environment: aop, metadata,
      class loading, deployments, state management, lifecycle/dependcies, configuration,
      and management. The use of the term server should not be correlated with
      large memory/cpu requirment environments of typical application/web servers.
      A server in the context of the MC is just a kernel for plugging POJO
      container models into. The MC can be configured for extremely lightweight
      application type setups like a junit testcase as well as full feature
      application servers.
      </para>

      <para>
          
      </para>
  </sect1>

  <sect1>
      <title>Information and Roadmaps</title>
      <para>A high level roadmap for the MC and status can be found in the
          wiki page <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMicrocontainerHighLevelRoadMap">JBossMicrocontainerHighLevelRoadMap</ulink>.
          A more detailed roadmap of the issues going into releases can be found
          in the   
          <ulink url="http://jira.jboss.com/jira/browse/JBMICROCONT?report=com.atlassian.jira.plugin.system.project:roadmap-panel">MC JIRA</ulink>
          project page.
      </para>
      <para>Design discussion occur in the <ulink url="http://www.jboss.com/index.html?module=bb&amp;op=main&amp;c=18">JBoss POJO Developers Forums</ulink>.
          This currently includes 3 sub-forums:
          <ulink url="http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;f=204">Design the new POJO MicroContainer</ulink>
          (the core MC projects independent of any particular usage),
          <ulink url="http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;f=208">Design of POJO Server</ulink>
          (discussions related to application server environments like JBossAS, JBossESB),
          <ulink url="http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;f=256">Design of OSGi Integration</ulink>
          (discussion of how a kernel/framework like OSGi should integrate with the MC). 
      </para>
  </sect1>

  <sect1 id="mc-modules">
      <title>An overview of the MC modules</title>
      <para>This section introduces the various MC modules</para>
      <sect2>
          <title>aop-mc-int</title>
          <para>Integration between the JBossAOP and MC projects</para>
      </sect2>
      <sect2>
          <title>container</title>
          <para>A better name would be joinpoint. This module contains:
          reflection, the integration point for manipulating class information at runtime,
          e.g. overriding annotations or obtaining an aop instance advisor.
          joinpoint, the joinpoint model including the join point factory.
          classadaptor, the integration and configuration spi.
          metadata, base metadata types and repository
          </para>
      </sect2>
      <sect2>
          <title>dependency</title>
          <para>Dependency management is handled by the controller. The
          controller is the core component for keeping track
          of contexts to make sure the configuration and lifecycle are
          done in the correct order including dependencies and
          classloading considerations. 
          </para>
      </sect2>
      <sect2>
          <title>deployers</title>
          <para>Deployers load components from various models, POJOs, JMX, Spring,
          Java EE, etc. into the MC runtime.  
          </para>
      </sect2>
      <sect2>
          <title>kernel</title>
          <para>The kernel defines the core kernel spi including, boostrap,
              configuration, POJO deployments, dependency, events, bean
              metadata, and bean registry.
          </para>
      </sect2>
      <sect2>
          <title>managed</title>
          <para>The managed module defines the base objects defining the
              management view of a component. 
          </para>
      </sect2>
      <sect2>
          <title>metatype</title>
          <para>The metatype module defines the base types found in the
              management view of a component.
          </para>
      </sect2>
      <sect2>
          <title>osgi-int</title>
          <para>This contains the integration classes that adapt the OSGi
              model onto the MC.
          </para>
      </sect2>
      <sect2>
          <title>spring-int</title>
          <para>This contains the integration classes that adapt the spring
              model onto the MC.
          </para>
      </sect2>
      
  </sect1>
</chapter>
