[jboss-cvs] JBossAS SVN: r87622 - in projects/jboss-osgi/trunk: build/docbook/en/modules and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 21 08:25:02 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-04-21 08:25:01 -0400 (Tue, 21 Apr 2009)
New Revision: 87622

Added:
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch01-introduction.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch02-getting-started.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch03-framework-integration.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch04-developer-guide.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch05-provided-bundles.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch06-provided-examples.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch07-references.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/ch08-getting-support.xml
Removed:
   projects/jboss-osgi/trunk/build/docbook/en/modules/devguide.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/frameworkintegration.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/gettingstarted.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/gettingsupport.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/introduction.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/providedservices.xml
   projects/jboss-osgi/trunk/build/docbook/en/modules/references.xml
Modified:
   projects/jboss-osgi/trunk/build/docbook/en/master.xml
   projects/jboss-osgi/trunk/bundle/common/src/main/java/org/jboss/osgi/common/log/LogServiceTracker.java
   projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/microcontainer/package.html
   projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/http/bundle/EndpointService.java
   projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/log/LogServiceTestCase.java
   projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/microcontainer/bundle/MBeanTestService.java
   projects/jboss-osgi/trunk/testsuite/example/src/test/resources/example/http/example-http.bnd
Log:
Add docbook chapter on provided examples

Modified: projects/jboss-osgi/trunk/build/docbook/en/master.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/master.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/master.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -10,12 +10,13 @@
 
   <toc/>
 
-  <xi:include href="modules/introduction.xml"/>
-  <xi:include href="modules/gettingstarted.xml"/>
-  <xi:include href="modules/frameworkintegration.xml"/>
-  <xi:include href="modules/devguide.xml"/>
-  <xi:include href="modules/providedservices.xml"/>
-  <xi:include href="modules/references.xml"/>
-  <xi:include href="modules/gettingsupport.xml"/>
+  <xi:include href="modules/ch01-introduction.xml"/>
+  <xi:include href="modules/ch02-getting-started.xml"/>
+  <xi:include href="modules/ch03-framework-integration.xml"/>
+  <xi:include href="modules/ch04-developer-guide.xml"/>
+  <xi:include href="modules/ch05-provided-bundles.xml"/>
+  <xi:include href="modules/ch06-provided-examples.xml"/>
+  <xi:include href="modules/ch07-references.xml"/>
+  <xi:include href="modules/ch08-getting-support.xml"/>
   
 </book>
\ No newline at end of file

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch01-introduction.xml (from rev 87606, projects/jboss-osgi/trunk/build/docbook/en/modules/introduction.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch01-introduction.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch01-introduction.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,299 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapIntroduction">
+
+  <title>Introduction</title>
+  
+  <sect1 xml:id="SecWhatIsOsgi">
+    <title>What is OSGi</title>
+    
+    <para>The <ulink url="http://www2.osgi.org/Release4/HomePage">Open Services Gateway Initiative (OSGi)</ulink>, 
+    specifications define a standardized, component-oriented, computing environment for networked services that is the foundation 
+    of an enhanced service-oriented architecture.</para>
+  
+    <para>The OSGi specification defines two things:</para>
+  
+    <itemizedlist>
+      <listitem>A set of services that an OSGi container must implement</listitem>
+      <listitem>A contract between the container and your application</listitem>
+    </itemizedlist>
+  
+    <para>Developing on the OSGi platform means first building your application using OSGi APIs, then deploying it in an OSGi container.</para>
+    
+    <para>The <ulink url="http://www.jboss.org/community/docs/DOC-13273">JBossOSGi Project</ulink> project has two distinct goals</para>
+    
+    <orderedlist>
+      <listitem>Provide an integration platform for 3rd party OSGi Frameworks</listitem>
+      <listitem>Provide an OSGi compliant framework implementation based on the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink></listitem>
+    </orderedlist>
+    
+    
+    <emphasis role="bold">What does OSGi offer to Java developers?</emphasis>
+    
+    <para>OSGi modules provide classloader semantics to partially expose code that can then be consumed by other modules. 
+    The implementation details of a module, although scoped public by the Java programming language, remain private to the module. 
+    On top of that you can install multiple versions of the same code and resolve dependencies by version and other criteria. 
+    OSGi also offers advanced security and lifecycle, which I'll explain in more detail further down.</para>
+  
+    <emphasis role="bold">What kind of applications benefit from OSGi?</emphasis>
+    
+    <para>Any application that is designed in a modular fashion where it is necessary to start, stop, update individual modules with minimal impact 
+    on other modules. Modules can define their own transitive dependencies without the need to resolve these dependencies at the container level. 
+    The OSGi platform builds an exellent foundation for the next generation JBoss ESB for example.</para>
+  
+    <emphasis role="bold">Should Java EE developers adopt the OSGi programming model?</emphasis>
+    
+    <para>Probably not. The OSGi runtime may be used internally by Java EE container providers to achieve the desired isolation and configuration 
+    flexibility that the container whishes to provide. At the application programming level, the Java EE model will continue to exist in its own right, 
+    wheras the OSGi model may provide the more suitable runtime environment for applications that require the modular isolation, security and lifecycle 
+    management that OSGi offers.</para>
+    
+  </sect1>
+  
+  <sect1 xml:id="SecFramworkOverview">
+    <title>OSGi Framework Overview</title>
+    
+    <para>The functionality of the Framework is divided in the following layers:</para>
+    
+    <itemizedlist>
+      <listitem>Security Layer</listitem>
+      <listitem>Module Layer</listitem>
+      <listitem>Life Cycle Layer</listitem>
+      <listitem>Service Layer</listitem>
+      <listitem>Actual Services</listitem>
+    </itemizedlist>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-layers.png"/> 
+      </imageobject>
+    </mediaobject>
+
+    
+    <emphasis role="bold">OSGi Security Layer</emphasis>
+  
+    <para>The OSGi Security Layer is an optional layer that underlies the OSGi Service Platform. 
+    The layer is based on the Java 2 security architecture. It provides the infrastructure to deploy and manage 
+    applications that must run in fine grained controlled environments.</para>
+    
+    <para>The OSGi Service Platform can authenticate code in the following ways:</para>
+
+    <itemizedlist>
+      <listitem>By location</listitem>
+      <listitem>By signer</listitem>
+    </itemizedlist>
+
+    <para>For example, an Operator can grant the ACME company the right to use networking on their devices. 
+    The ACME company can then use networking in every bundle they digitally sign and deploy on the Operator’s device. 
+    Also, a specific bundle can be granted permission to only manage the life cycle of bundles that are signed by the ACME company.</para>    
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-delegation.png"/> 
+      </imageobject>
+    </mediaobject>
+  
+    <emphasis role="bold">OSGi Module Layer</emphasis>
+    
+    <para>The OSGi Module Layer provides a generic and standardized solution for Java modularization. 
+    The Framework defines a unit of modularization, called a bundle. A bundle is comprised of Java classes and other resources, 
+    which together can provide functions to end users. Bundles can share Java packages among an exporter bundle and an importer bundle 
+    in a well-defined way.</para>
+
+    <para>Once a <emphasis role="bold">Bundle</emphasis> is started, its functionality is provided and services are exposed to other bundles installed in the OSGi Service Platform. 
+    A bundle can carry descriptive information about itself in the manifest file that is contained in its JAR file. 
+    Here are a few important <emphasis role="bold">Manifest Headers</emphasis> defined by the OSGi Framework:</para>
+    
+    <itemizedlist>
+      <listitem><emphasis role="bold">Bundle-Activator</emphasis> - class used to start, stop the bundle</listitem>
+      <listitem><emphasis role="bold">Bundle-SymbolicName</emphasis> - identifies the bundle</listitem>
+      <listitem><emphasis role="bold">Bundle-Version</emphasis> - specifies the version of the bundle</listitem>
+      <listitem><emphasis role="bold">Export-Package</emphasis> - declaration of exported packages</listitem>
+      <listitem><emphasis role="bold">Import-Package</emphasis> - declaration of imported packages</listitem>
+    </itemizedlist>
+    
+    <para>The notion of OSGi Version Range describes a range of versions using a mathematical interval notation. For example</para>
+    
+    <programlisting>
+    Import-Package: com.acme.foo;version="[1.23, 2)", com.acme.bar;version="[4.0, 5.0)"
+    </programlisting>
+    
+    <para>With the OSGi Class Loading Architecture many bundles can share a single virtual machine (VM). 
+    Within this VM, bundles can hide packages and classes from other bundles, as well as share packages with other bundles.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-classloader.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>For example, the following import and export definition resolve correctly because the version range in the import definition 
+    matches the version in the export definition:</para>
+    
+    <programlisting>
+    A: Import-Package: p; version="[1,2)"
+    B: Export-Package: p; version=1.5.1
+    </programlisting>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-version-constraint.png"/> 
+      </imageobject>
+    </mediaobject>
+  
+    <para>Appart from bundle versions, OSGi Attribute Matching is a generic mechanism to allow the importer and exporter to influence the 
+    matching process in a declarative way. For example, the following statements will match.</para>
+
+    <programlisting>
+    A: Import-Package: com.acme.foo;company=ACME
+    B: Export-Package: com.acme.foo;company=ACME; security=false
+    </programlisting>
+
+    <para>An exporter can limit the visibility of the classes in a package with the include and exclude directives on the export definition.</para>
+
+    <programlisting>
+    Export-Package: com.acme.foo; include:="Qux*,BarImpl"; exclude:=QuxImpl
+    </programlisting>
+  
+    <emphasis role="bold">OSGi Life Cycle Layer</emphasis>
+    
+    <para>The Life Cycle Layer provides an API to control the security and life cycle operations of bundles.</para>
+
+    <para>A bundle can be in one of the following states:</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-life-cycle.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>A bundle is activated by calling its <emphasis role="bold">Bundle Activator</emphasis> object, if one exists. 
+    The BundleActivator interface defines methods that the Framework invokes when it starts and stops the bundle.</para>
+
+    <para>A Bundle Context object represents the execution context of a single bundle within the OSGi Service Platform, 
+    and acts as a proxy to the underlying Framework. A <emphasis role="bold">Bundle Context</emphasis> object is created by the Framework when a bundle is started. 
+    The bundle can use this private BundleContext object for the following purposes:</para>
+    
+    <itemizedlist>
+      <listitem>Installing new bundles into the OSGi environment</listitem>
+      <listitem>Interrogating other bundles installed in the OSGi environment</listitem>
+      <listitem>Obtaining a persistent storage area</listitem>
+      <listitem>Retrieving service objects of registered services</listitem>
+      <listitem>Registering services in the Framework service</listitem>
+      <listitem>Subscribing or unsubscribing to Famework events</listitem>
+    </itemizedlist>
+    
+    <emphasis role="bold">OSGi Service Layer</emphasis>
+    
+    <para>The OSGi Service Layer defines a dynamic collaborative model that is highly integrated with the Life Cycle Layer. 
+    The service model is a publish, find and bind model. A service is a normal Java object that is registered under one or more 
+    Java interfaces with the service registry.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-service-registration.png"/> 
+      </imageobject>
+    </mediaobject>
+  </sect1>
+  
+  <sect1 xml:id="SecServiceCompendium">
+    <title>OSGi Service Compendium</title>
+    
+    <para>The OSGi Service Compendium specifies a number of services that may be available in an OSGi runtime environment. 
+    Although the OSGi Framework specification is useful in itself already, it only defines the OSGi core infrastructure. 
+    The services defined in the compendium specification define the scope and functionality of some common services that 
+    bundle developers might want to use. Here is a quick summary:</para>
+    
+    <emphasis role="bold">Log Service</emphasis>
+    <para>The Log Service provides a general purpose message logger for the OSGi Service Platform. It consists of two services, 
+    one for logging information and another for retrieving current or previously recorded log information.</para>
+  
+    <emphasis role="bold">Http Service</emphasis>
+    <para>The Http Service supports two standard techniques for registering servlets and resources to develop communication and 
+    user interface solutions for standard technologies such as HTTP, HTML, XML, etc.</para>
+  
+    <emphasis role="bold">Device Access Specification</emphasis>
+    <para>The Device Access specification supports the coordination of automatic detection and attachment of existing devices on 
+    an OSGi Service Platform, facilitates hot-plugging and -unplugging of new devices, and downloads and installs device drivers on demand.</para>
+  
+    <emphasis role="bold">Configuration Admin Service</emphasis>
+    <para>The Configuration Admin service allows an Operator to set the configuration information of deployed bundles.</para>
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/osgi-config-service.png" contentwidth="450"/> 
+      </imageobject>
+    </mediaobject>
+  
+    <emphasis role="bold">Metatype Service</emphasis>
+    <para>The Metatype Service specification defines interfaces that allow bundle developers to describe attribute 
+    types in a computer readable form using so-called metadata.</para>
+  
+    <emphasis role="bold">Preferences Service</emphasis>
+    <para>The Preferences Service allows storage of data that is specific to a particular user.</para>
+  
+    <emphasis role="bold">User Admin Service</emphasis>
+    <para>Bundles can use the User Admin Service to authenticate an initiator and represent this authentication as an Authorization object. 
+    Bundles that execute actions on behalf of this user can use the Authorization object to verify if that user is authorized.</para>
+  
+    <emphasis role="bold">Wire Admin Service</emphasis>
+    <para>The Wire Admin Service is an administrative service that is used to control a wiring topology in the OSGi Service Platform. 
+    It is intended to be used by user interfaces or management programs that control the wiring of services in an OSGi Service Platform.</para>
+  
+    <emphasis role="bold">IO Connector Service</emphasis>
+    <para>The IO Connector Service specification adopts the Java 2 Micro Edition (J2ME) javax.microedition.io packages as a basic communications 
+    infrastructure.</para>
+  
+    <emphasis role="bold">UPnP Device Service</emphasis>
+    <para>The UPnP Device Service specifies how OSGi bundles can be developed that interoperate with UPnP (Universal Plug and Play) 
+    devices and UPnP control points.</para>
+  
+    <emphasis role="bold">Declarative Services Specification</emphasis>
+    <para>The Declarative Services specification addresses some of the complications that arise when the OSGi service model is 
+    used for larger systems and wider deployments, such as: Startup Time, Memory Footprint, Complexity. The service component 
+    model uses a declarative model for publishing, finding and binding to OSGi services.</para>
+  
+    <emphasis role="bold">Event Admin Service</emphasis>
+    <para>The Event Admin Service provides an inter-bundle communication mechanism. It is based on a event publish and subscribe model, popular in many message based systems.</para>
+  
+    <emphasis role="bold">Deployment Admin Service</emphasis>
+    <para>The Deployment Admin Service specification, standardizes the access to some of the responsibilities of the management agent: 
+    that is, the lifecycle management of interlinked resources on an OSGi Service Platform.</para>
+  
+    <emphasis role="bold">Auto Configuration Specification</emphasis>
+    <para>The Auto Configuration Specification is to allow the configuration of bundles. 
+    These bundles can be embedded in Deployment Packages or bundles that are already present on the OSGi Service Platform.</para>
+  
+    <emphasis role="bold">Application Admin Service</emphasis>
+    <para>The Application Admin Service is intended to simplify the management of an environment with many different types of applications 
+    that are simultaneously available.</para>
+  
+    <emphasis role="bold">DMT Admin Service</emphasis>
+    <para>The DMT Admin Service specification defines an API for managing a device using concepts from the OMA DM specifications.</para>
+  
+    <emphasis role="bold">Monitor Admin Service</emphasis>
+    <para>The Monitor Admin Service specification outlines how a bundle can publish Status Variables and how administrative bundles 
+    can discover Status Variables as well as read and reset their values.</para>
+  
+    <emphasis role="bold">Foreign Application Access Specification</emphasis>
+    <para>The Foreign Application Access specification is to enable foreign application models like MIDP, Xlets, Applets, other Java 
+    application models to participate in the OSGi service oriented architecture.</para>
+  
+    <emphasis role="bold">Service Tracker Specification</emphasis>
+    <para>The Service Tracker specification defines a utility class, ServiceTracker, that makes tracking the registration, modification, 
+    and unregistration of services much easier.</para>
+  
+    <emphasis role="bold">XML Parser Service Specification</emphasis>
+    <para>The XML Parser Service specification addresses how the classes defined in JAXP can be used in an OSGi Service Platform.</para>
+  
+    <emphasis role="bold">Position Specification</emphasis>
+    <para>The Position Specification provides bundle developers with a consistent way of handling geographic positions in OSGi applications.</para>
+  
+    <emphasis role="bold">Measurement and State Specification</emphasis>
+    <para>The Measurement and State Specification provides a consistent way of handling a diverse range of measurements for bundle developers.</para>
+  
+    <emphasis role="bold">Execution Environment Specification</emphasis>
+    <para>This Execution Environment Specification defines different execution environments for OSGi Server Platform Servers.</para>
+  </sect1>
+  
+</chapter>

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch02-getting-started.xml (from rev 87613, projects/jboss-osgi/trunk/build/docbook/en/modules/gettingstarted.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch02-getting-started.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch02-getting-started.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,355 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapGettingStarted">
+
+  <title>Getting Started</title>
+  
+  <para>This chapter takes you through the first steps of getting JBossOSGi and 
+  provides the initial pointers to get up and running.</para>
+  
+  <sect1 xml:id="SecInstall">  
+    <title>Installing JBossOSGi</title>
+    
+    <para>JBossOSGi is distributed as an <ulink url="http://izpack.org">IzPack</ulink> installer archive. 
+    The installer is available from the JBossOSGi <ulink url="https://sourceforge.net/project/showfiles.php?group_id=22866&amp;package_id=316015">download area</ulink>.</para>
+     
+    <para>To run the installer execute the following command:</para>
+    
+    <!-- [TODO] release update  -->
+    <programlisting>
+    java -jar jboss-osgi-installer-1.0.0.Beta1.jar
+    </programlisting>
+      
+    <para>The installer first shows a welcome screen</para>
+    
+    <!-- [TODO] release update  -->
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-welcome.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>Then you select the installation path for the JBossOSGi distribution. This is the directory where you find the binary build artifacts,
+    the java sources, documentation and the JBossOSGi Runtime.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-installpath.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>The installer contains multiple installation packs. Greyed packs are required, others are optional and can be deselected.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-packs.jpg"/> 
+      </imageobject>
+    </mediaobject>
+
+    <itemizedlist>
+      <listitem><emphasis role="bold">JBossOSGi Distribution</emphasis> - Documentation, Binary Artifacts and Sources</listitem>
+      <listitem><emphasis role="bold">JBossOSGi Runtime</emphasis> - Standalone JBossOSGi Runtime based on JBossAS</listitem>
+      <listitem><emphasis role="bold">JBossOSGi Integration</emphasis> - Integration with an existing JBossAS instance</listitem>
+    </itemizedlist>
+    
+    <para>Next, you will be presented with the choice of supported OSGi Frameworks.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-target-framework.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>In case you have selected 'JBossOSGi Integration', you will be presented with the choice of supported target containers.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-target-server.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>You will then have to point the installer to your existing <ulink url="http://http://jboss.org/jbossas">JBossAS</ulink> installation.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-jboss-home.jpg"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>You can then verify the selected installation options and proceed with the actual installation.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-verify.png"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>The installer reports its installation progress and finally displays a confirmation screen. You can now optionally generate
+    an "automatic installation script" that you can use when you want to repeat what you have just done without user interaction.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-done.png"/> 
+      </imageobject>
+    </mediaobject>
+  </sect1>
+  
+  <sect1 xml:id="SecRuntime">
+    <title>JBossOSGi Runtime</title>
+    
+    <para>If you selected 'JBossOSGi Runtime' during installation you should see a <emphasis role="bold">runtime</emphasis> folder, which contains 
+    the JBossOSGi Runtime distribution.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/izpack-structure.jpg"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>The JBossOSGi Runtime is a customized version of the <ulink url="http://www.jboss.org/jbossas">JBoss Application Server</ulink>. From that we removed the services 
+    that are not absolutely necessary to run the installed OSGi Framework. Consequently, you can start the JBossOSGi Runtime in the same
+    way as you start <ulink url="http://www.jboss.org/jbossas">JBossAS</ulink></para>
+    
+    <programlisting>
+    [tdiesler at tdvaio runtime]$ bin/run.sh
+    =========================================================================
+    
+      JBoss Bootstrap Environment
+    
+      JBOSS_HOME: /usr/java/jboss-osgi-1.0.0.Beta1/runtime
+    
+      ...
+    
+    =========================================================================
+    
+    14:43:43,598 INFO  [ServerImpl] Starting JBoss (Microcontainer)...
+    ...
+    14:43:52,298 INFO  [FelixIntegration] OSGi Integration Felix - 1.0.0.Beta1
+    14:43:52,692 INFO  [FelixIntegration] Installed bundle: org.osgi.compendium
+    14:43:52,700 INFO  [FelixIntegration] Installed bundle: org.jboss.osgi.service.logging
+    14:43:52,701 INFO  [FelixIntegration] Started bundle: org.osgi.compendium
+    14:43:52,766 INFO  [FelixIntegration] Started bundle: org.jboss.osgi.service.logging
+    14:43:53,290 INFO  [OSGiDeployer] Installed: jboss-osgi-service-webconsole [3][INSTALLED]
+    14:43:53,297 INFO  [OSGiDeployer] Installed: org.apache.felix.bundlerepository [4][INSTALLED]
+    14:43:53,308 INFO  [OSGiDeployer] Installed: org.apache.felix.configadmin [5][INSTALLED]
+    14:43:53,322 INFO  [OSGiDeployer] Installed: org.apache.felix.http.jetty [6][INSTALLED]
+    14:43:53,328 INFO  [OSGiDeployer] Installed: org.apache.felix.log [7][INSTALLED]
+    14:43:53,333 INFO  [OSGiDeployer] Installed: org.apache.felix.metatype [8][INSTALLED]
+    ...
+    14:43:55,250 INFO  [ServerImpl] JBoss (Microcontainer) [5.0.1.GA ...] <emphasis role="bold">Started in 11s:645ms</emphasis>
+    </programlisting>
+    
+    <emphasis role="bold">Provided Examples</emphasis>
+
+    <para>JBossOSGi comes with a number of examples that you can build and deploy. Each example
+    deployment is verified by an accompaning test case</para>
+
+    <itemizedlist>
+      <listitem><emphasis role="bold">HTTP Service</emphasis> - Register servlets and resources with the HTTP Service</listitem>
+      <listitem><emphasis role="bold">Log Service</emphasis> - Interact with a local and remote Log Service</listitem>
+      <listitem><emphasis role="bold">Microcontainer Service</emphasis> - Register an MBean through the Microcontainer</listitem>
+    </itemizedlist>
+    
+    <programlisting>
+    [tdiesler at tddell example]$ mvn package
+    [INFO] ------------------------------------------------------------------------
+    [INFO] Building JBossOSGi - Testsuite Examples
+    [INFO]    task-segment: [package]
+    [INFO] ------------------------------------------------------------------------
+    ...
+    build-example-jars:
+    # example-log (example-log.jar) 2 
+    # example-http (example-http.jar) 4 
+    # example-microcontainer (example-microcontainer.jar) 4
+    ... 
+    Running org.jboss.test.osgi.example.log.LogServiceTestCase
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.849 sec
+    </programlisting>
+
+    <emphasis role="bold">Bundle Deployment</emphasis>
+
+    <para>Bundle deployment works, as you would probably expect, by dropping your OSGi Bundle into the 
+    JBossOSGi Runtime <emphasis role="bold">deploy</emphasis> folder.</para>
+    
+    <programlisting>
+    [tdiesler at tdvaio testsuite]$ cp .../test-libs/example/example-http.jar .../runtime/server/default/deploy
+    ...
+    13:59:38,284 INFO  [BundleRealDeployer] Installed: example-http [9]
+    13:59:38,289 INFO  [example-http] BundleEvent INSTALLED
+    13:59:38,297 INFO  [example-http] BundleEvent RESOLVED
+    13:59:38,304 INFO  [example-http] ServiceEvent REGISTERED
+    13:59:38,306 INFO  [BundleStartStopDeployer] Started: example-http [9]
+    13:59:38,306 INFO  [example-http] BundleEvent STARTED
+    </programlisting>
+  
+    <emphasis role="bold">Managing installed Bundles</emphasis>
+    
+    <para>JBossOSGi comes with a simple Web Console, which is currently based on the 
+    <ulink url="http://felix.apache.org/site/apache-felix-web-console.html">Apache Felix Web Console</ulink> project. 
+    By default the JBossOSGi Web Console is available at <ulink url="http://localhost:8090/jboss-osgi">http://localhost:8090/jboss-osgi</ulink>.
+    </para> 
+
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/webconsole.png" contentwidth="450"/> 
+      </imageobject>
+    </mediaobject>
+  
+    <note>
+      <title>TODO: Cleanup and document console provided functionality</title>
+    </note>
+  </sect1>
+  
+  <sect1 xml:id="SecHudson">
+    <title>Hudson QA Environment</title>
+    
+    <emphasis role="bold">Setup the Hudson QA Environment</emphasis>
+    
+    <para>The JBossOSGi <ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA Environment</ulink> is an integral part of the JBossOSGi code base.
+    It is designed for simplicity because we believe that comprehensive QA will only get done if it is dead simple to do so.</para>
+     
+    <para>Consequently, you only have to execute two simple ant targets to setup the QA environment that was used to QA the JBossOSGi
+    release that you currently work with.</para>
+    
+    <para>If in future we should discover a problem with a previous JBossOSGi release, it will be possible to provide a patch and verify that change using 
+    the original QA environment for that release.</para>
+     
+    <para>With every release we test the matrix of supported target containers and JDKs.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/hudson-home.png" contentwidth="450"/> 
+      </imageobject>
+    </mediaobject>
+  
+    <emphasis role="bold">Set Hudson Properties</emphasis>
+
+    <para>You need to set a few properties, especially these</para>
+
+    <itemizedlist>
+      <listitem>hudson.maven.path</listitem>
+      <listitem>hudson.username</listitem>
+      <listitem>hudson.password</listitem>
+      <listitem>hudson.root</listitem>
+    </itemizedlist>
+    
+    <programlisting>
+    cd build/hudson
+    cp ant.properties.example ant.properties
+    vi ant.properties
+    
+    # The JBoss settings
+    jboss.server.instance=default
+    jboss.bind.address=127.0.0.1
+    
+    # JDK settings
+    java.home.jdk15=/usr/java/jdk1.5.0_17
+    java.home.jdk16=/usr/java/jdk1.6.0_11
+    
+    # Hudson QA Environment
+    hudson.username=chageme
+    hudson.password=chageme
+    
+    hudson.maven.path=/usr/java/apache-maven-2.0.9
+    
+    hudson.root=/home/tdiesler/workspace/hudson/jboss-osgi
+    
+    hudson.maven.profile=$HUDSONDIR/profiles.xml.local.qa
+    
+    hudson.host=jbpm.dyndns.org
+    hudson.admin.port=8250
+    hudson.http.port=8280
+    
+    #hudson.jboss501.zip=file:///home/tdiesler/Download/java/jboss/jboss-5.0.1.GA.zip
+    
+    hudson.mail.recipients=
+    hudson.smtp.host=localhost
+    
+    # Hudson (1.290)
+    apache-tomcat=5.5.20
+    sun-hudson=2402/128862
+    </programlisting>
+
+    <emphasis role="bold">Run Hudson Setup</emphasis>
+
+    <programlisting>
+    [tdiesler at tdvaio hudson]$ ant hudson-setup
+    Buildfile: build.xml
+    
+    init:
+         [echo] V1.0.0.Beta1
+    
+    init-hudson:
+         [echo] 
+         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
+         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
+         [echo] 
+    
+    ...
+    
+    hudson-setup:
+         [copy] Copying 2 files to /home/.../hudson/jboss-osgi/apache-tomcat
+         ...
+         [echo] 
+         [echo] *************************************
+         [echo] * Hudson setup successfully         *
+         [echo] * ant hudson-start                  *
+         [echo] *************************************
+         [echo] 
+    </programlisting>
+
+    <emphasis role="bold">Run Hudson Start</emphasis>
+
+    <programlisting>
+    [tdiesler at tdvaio hudson]$ ant hudson-start
+    Buildfile: build.xml
+    
+    init:
+         [echo] V1.0.0.Beta1
+    
+    init-hudson:
+         [echo] 
+         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
+         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
+         [echo] 
+    
+    hudson-start:
+         [echo] 
+         [echo] *************************************
+         [echo] * Hudson started successfully       *
+         [echo] * http://localhost:8280/hudson      *
+         [echo] *************************************
+         [echo] 
+    
+    BUILD SUCCESSFUL
+    </programlisting>
+    
+    <emphasis role="bold">Run Hudson Stop</emphasis>
+    
+    <programlisting>
+    [tdiesler at tdvaio hudson]$ ant hudson-stop
+    Buildfile: build.xml
+    
+    init:
+         [echo] V1.0.0.Beta1
+    
+    init-hudson:
+         [echo] 
+         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
+         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
+         [echo] 
+    
+    hudson-stop:
+         [echo] 
+         [echo] *************************************
+         [echo] * Hudson stopped successfully       *
+         [echo] * ant hudson-start                  *
+         [echo] *************************************
+         [echo] 
+    
+    BUILD SUCCESSFUL
+    </programlisting>
+  </sect1>
+  
+</chapter>
\ No newline at end of file

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch03-framework-integration.xml (from rev 87606, projects/jboss-osgi/trunk/build/docbook/en/modules/frameworkintegration.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch03-framework-integration.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch03-framework-integration.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,136 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapFrameworkIntegration">
+
+  <title>Framework Integration</title>
+  
+  <sect1 xml:id="SecIntFelix">  
+    <title>Apache Felix Integration</title>
+    
+    <para>JBossOSGi provides integration for the <ulink url="http://felix.apache.org">Apache Felix</ulink> OSGi Framework and some
+    of its core services</para>
+
+    <itemizedlist>
+      <listitem><ulink url="http://felix.apache.org/site/apache-felix-log-service.html">Log Service</ulink> - General purpose message logger</listitem>
+      <listitem><ulink url="http://felix.apache.org/site/apache-felix-http-service.html">HTTP Service</ulink> - Http access to servlets and resources</listitem>
+      <listitem><ulink url="http://felix.apache.org/site/apache-felix-configuration-admin-service.html">Config Admin Service</ulink> - Management of configuration data for configurable components</listitem>
+    </itemizedlist>
+
+    <para>The Apache Felix integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
+    configuration</para>
+    
+    <programlisting role="XML"><![CDATA[
+    cat server/default/deployers/osgi.deployer/META-INF/osgi-deployers-jboss-beans.xml 
+    
+    <deployment xmlns="urn:jboss:bean-deployer:2.0">
+    
+      <!-- The OSGiFramework -->
+      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.felix.framework.FelixIntegration">
+        <property name="properties">
+           ...
+        </property>
+        <property name="autoStart">
+         <list elementClass="java.net.URL">
+          ...
+         </list>
+        </property>
+      </bean>
+      ...
+    </deployment>
+    ]]></programlisting>
+
+    <para>The following is a description of the configuration properties for the Apache Felix integration.</para>
+    
+    <table>
+      <tr><th>Key</th><th>Value</th><th>Description</th></tr>
+      <tr valign="top">
+        <td>org.osgi.framework.storage</td>
+        <td>.../osgi-store</td>
+        <td>OSGi Framework storage area</td>
+      </tr>
+      <tr valign="top">
+        <td>org.osgi.framework.storage.clean</td>
+        <td>onFirstInit</td>
+        <td>Clean the storage area on first init</td>
+      </tr>
+      <tr valign="top">
+        <td>org.osgi.service.http.port</td>
+        <td>8090</td>
+        <td>The default Http Service port</td>
+      </tr>
+      <tr valign="top">
+        <td>felix.cm.dir</td>
+        <td>.../osgi-configadmin</td>
+        <td>Config Admin Service storage area</td>
+      </tr>
+      <tr valign="top">
+        <td>org.osgi.framework.system.packages</td>
+        <td>javax.management, javax.xml...</td>
+        <td>Packages provided by the OSGi System ClassLoader</td>
+      </tr>
+      <tr valign="top">
+        <td>org.jboss.osgi.deferred.start</td>
+        <td>true</td>
+        <td>Bundles can be deployed in any order</td>
+      </tr>
+    </table>
+  </sect1>
+  
+  <sect1 xml:id="SecIntEquinox">  
+    <title>Equinox Integration</title>
+    
+    <para>JBossOSGi also provides basic integration for the <ulink url="http://www.eclipse.org/equinox">Eclpipse Equinox</ulink> OSGi Framework.</para>
+    
+    <para>Equinox integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
+    configuration</para>
+    
+    <programlisting role="XML"><![CDATA[
+    <deployment xmlns="urn:jboss:bean-deployer:2.0">
+    
+      <!-- The OSGiFramework -->
+      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.equinox.framework.EquinoxIntegration">
+        <property name="properties">
+           ...
+        </property>
+        <property name="autoStart">
+         <list elementClass="java.net.URL">
+          ...
+         </list>
+        </property>
+      </bean>
+      ...
+    </deployment>
+    ]]></programlisting>
+    
+  </sect1>
+  
+  <sect1 xml:id="SecIntKnopflerfish">  
+    <title>Knopflerfish Integration</title>
+    
+    <para>JBossOSGi provides basic integration for the <ulink url="http://www.knopflerfish.org">Makewave Knopflerfish</ulink> OSGi Framework.</para>
+
+    <para>Knopflerfish integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
+    configuration</para>
+    
+    <programlisting role="XML"><![CDATA[
+    <deployment xmlns="urn:jboss:bean-deployer:2.0">
+    
+      <!-- The OSGiFramework -->
+      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.knopflerfish.KnopflerfishIntegration">
+        <property name="properties">
+           ...
+        </property>
+        <property name="autoStart">
+         <list elementClass="java.net.URL">
+          ...
+         </list>
+        </property>
+      </bean>
+      ...
+    </deployment>
+    ]]></programlisting>
+    
+  </sect1>
+  
+</chapter>

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch04-developer-guide.xml (from rev 87613, projects/jboss-osgi/trunk/build/docbook/en/modules/devguide.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch04-developer-guide.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch04-developer-guide.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,276 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapDeveloperGuide">
+
+  <title>Developer Documentation</title>
+  
+  <sect1 xml:id="SecSPI">  
+    <title>Service Provider Interface</title>
+    
+    <para>The JBossOSGi Service Provider Interface (SPI) is the integration point between the supported OSGi Frameworks and 
+    the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>. The configuration defines MC beans for the 
+    framework itself and its associated deployers.</para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/jboss-osgi.png" contentwidth="450"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <para>The latest version of the <ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc">JBossOSGi SPI</ulink> 
+    JavaDoc is published online as part of the JBossOSGi <ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA Environment</ulink>.</para>
+
+    <itemizedlist>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/package-summary.html">org.jboss.osgi.spi</ulink> - Common classes and interfaces.</listitem>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/framework/package-summary.html">org.jboss.osgi.spi.framework</ulink> - Framework integration and bootstrap.</listitem>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/junit/package-summary.html">org.jboss.osgi.spi.junit</ulink> - JUnit test integration.</listitem>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/logging/package-summary.html">org.jboss.osgi.spi.logging</ulink> - Support for Bundle logging.</listitem>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/management/package-summary.html">org.jboss.osgi.spi.management</ulink> -  Management view on deployed bundles.</listitem>
+      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/service/microcontainer/package-summary.html">org.jboss.osgi.spi.service.microcontainer</ulink> -  Access to the Kernel and MBeanServer.</listitem>
+    </itemizedlist>
+    
+    <emphasis role="bold">Bootstrapping JBossOSGi</emphasis>
+    
+    <para>The OSGiBootstrap provides an OSGiFramework through a OSGiBootstrapProvider.</para>
+    
+    <para>A OSGiBootstrapProvider is discovered in two stages</para>
+
+    <orderedlist>
+      <listitem>Read the bootstrap provider class name from a system property</listitem>
+      <listitem>Read the bootstrap provider class name from a resource file</listitem>
+    </orderedlist>
+
+    <para>In both cases the key is the fully qalified name of the <code>org.jboss.osgi.spi.framework.OSGiBootstrapProvider</code> interface.</para>
+    
+    <para>The following code shows how to get the default <code>OSGiFramework</code> from the <code>OSGiBootstrapProvider</code>.</para>
+    
+    <programlisting role="JAVA">
+    OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
+    OSGiFramework framework = bootProvider.getFramework();
+    Bundle bundle = framework.getSystemBundle();
+    </programlisting>
+    
+    <para>The <code>OSGiBootstrapProvider</code> can also be configured explicitly. The <code>OSGiFramework</code> is a named 
+    object from the configuration.</para>
+    
+    <programlisting role="JAVA">
+    OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
+    bootProvider.configure(configURL);
+    
+    OSGiFramework framework = bootProvider.getFramework("AnotherOSGiFramework");
+    Bundle bundle = framework.getSystemBundle();
+    </programlisting>
+    
+    <para>The JBossOSGi SPI comes with a OSGiBootstrapProvider that uses a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> 
+    bean configuration.</para>
+    
+    <programlisting role="XML"><![CDATA[
+    <deployment xmlns="urn:jboss:bean-deployer:2.0" ...>
+    
+     <!-- The OSGiFramework -->
+     <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.felix.framework.FelixIntegration">
+      <property name="felixProperties">
+       <map keyClass="java.lang.String" valueClass="java.lang.String">
+        <entry><key>org.osgi.framework.storage.clean</key><value>onFirstInit</value></entry>
+        <entry>
+          <key>org.osgi.framework.system.packages</key>
+          <value>
+            org.osgi.framework; version=1.4,
+            org.osgi.util.tracker
+          </value>
+        </entry>
+       </map>
+      </property>
+     </bean>
+     
+     ...
+     
+    </deployment>
+    ]]></programlisting>
+    
+    <para>OSGiBootstrapProvider implementations that read their configurtation from some other source are possible, but currently not
+    part of the JBossOSGi SPI.</para>
+    
+    <tip>
+      <title>Using the SPI from within JBossAS deployed components</title>
+      <para>If you need access to the OSGi Framework from within an JBossAS deployed component (e.g. servlet, ejb, mbean) you 
+      <emphasis role="bold">would not</emphasis> bootstrap JBossOSGi through the SPI. Instead, you would inject the already bootstrapped
+      OSGi Framework instance into your component.</para>
+    </tip>
+  </sect1>
+  
+  <sect1 xml:id="SecDeployers">  
+    <title>Bundle Deployers</title>
+    
+    <para>JBossOSGi comes with a number of <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> based deployers. Each deployer
+    takes care of a specific aspect of bundle deployment.</para>
+    
+    <itemizedlist>
+      <listitem><emphasis role="bold">BundleMetaDataDeployer</emphasis> - Create BundleMetaData from Manifest Headers</listitem>
+      <listitem><emphasis role="bold">BundleStructureDeployer</emphasis> - Determine the structure of a Bundle deployment</listitem>
+      <listitem><emphasis role="bold">BundleRealDeployer</emphasis> - Installs the Bundle into the Framework's SystemContext</listitem>
+      <listitem><emphasis role="bold">BundleClassLoaderDeployer</emphasis> - Creates a BundleClassLoader for the deployed Bundle</listitem>
+      <listitem><emphasis role="bold">BundleStartStopDeployer</emphasis> - Starts the Bundle when dependencies are resolved</listitem>
+      <listitem><emphasis role="bold">BundleManagementDeployer</emphasis> - Register the Bundle as MBean with JMX</listitem>
+    </itemizedlist>
+    
+    <emphasis role="bold">BundleMetaDataDeployer</emphasis>
+    
+    <para>The BundleMetaDataDeployer creates the BundleMetaData from Manifest Headers. If the manifest does not contain 
+    a header named <emphasis role="bold">Bundle-SymbolicName</emphasis> this deployer does nothing. </para>
+    
+    <emphasis role="bold">BundleStructureDeployer</emphasis>
+    
+    <para>The BundleStructureDeployer determines the structure of a Bundle deployment. It ignores all deployments that
+    are not top-level or do not have a manifest header named <emphasis role="bold">Bundle-SymbolicName</emphasis></para>
+    
+    <emphasis role="bold">BundleRealDeployer</emphasis>
+    
+    <para>The BundleRealDeployer installs the Bundle into the Framework's SystemContext. Optionally you can configure a list of
+    bundle locations that should be skipped and hence not installed. Typically, these bundles are already installed during 
+    Framework startup.</para>
+    
+    <para>On undeploy the Bundle gets uninstalled from the Framework's SystemContext.</para>
+    
+    <emphasis role="bold">BundleClassLoaderDeployer</emphasis>
+    
+    <para>The BundleClassLoaderDeployer attaches a ClassLoaderFactory that creates a BundleClassLoader for the deployed Bundle.
+    A BundleClassLoader delegates all classloading concerns to the underlying Bundle.</para>
+    
+    <emphasis role="bold">BundleStartStopDeployer</emphasis>
+
+    <para>The BundleStartStopDeployer currently works in two modes:</para>
+    
+    <itemizedlist>
+      <listitem>deferredStart (default)</listitem>
+      <listitem>simpleStart</listitem>
+    </itemizedlist>
+    
+    <para>In mode <emphasis role="bold">deferredStart</emphasis> the Bundle is added to a list of unresolved Bundles, which then get passed
+    on to <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/packageadmin/PackageAdmin.html#resolveBundles(org.osgi.framework.Bundle[])"><code>PackageAdmin.resolveBundles(Bundle[])</code></ulink>.
+    The deployer then iterates over the unresolved Bundles and only starts those Bundles that are in state 
+    <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/framework/Bundle.html#RESOLVED"><code>RESOLVED</code></ulink>. 
+    In this mode Bundles can be deployed in any order and only get started when all their respective dependencies can be resolved.</para>
+    
+    <para>In mode <emphasis role="bold">simpleStart</emphasis> the deployer attempts to start the Bundle regardless of whether its 
+    dependencies can get resolved. In case the Bundle has a dependency oin a package that is not yet available, deployment will fail.
+    In this mode Bundles must be deployed in the order required to start them.</para>
+    
+    <para>The start mode is a configurable property on the Framework's SystemContext.</para>
+    
+    <programlisting role="XML"><![CDATA[
+    <!-- 
+      If set to 'true' bundles can be deployed in any order. Deployed bundle will get started when their dependencies can be resolved.
+      If set to 'false' bundles must be deployed in the order that is required to start them. 
+    -->
+    <entry><key>org.jboss.osgi.deferred.start</key><value>true</value></entry>
+    ]]></programlisting>
+    
+    <emphasis role="bold">BundleManagementDeployer</emphasis>
+    
+    <para>The BundleManagementDeployer registers the Bundle as <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/StandardMBean.html">StandardMBean</ulink> with JMX.
+    Please see the section on <link linkend="SecJMXView">Management View</link> for details.</para>
+    
+  </sect1>
+  
+  <sect1 xml:id="SecJMXView">  
+    <title>Management View</title>
+    
+    <para>JBossOSGi registers the Framework and every deployed Bundle with the JMX <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>.</para>
+    
+    <emphasis role="bold">The ManagedFramework</emphasis>
+    
+    <para>The <code>ManagedFramework</code> gives you access to the MBean views of the deployed Bundles. It is registerd under the name:</para>
+    
+    <itemizedlist>
+      <listitem><emphasis role="bold">jboss.osgi:service=ManagedFramework</emphasis></listitem>
+    </itemizedlist>
+    
+    <programlisting role="JAVA">
+    public interface ManagedFrameworkMBean
+    {
+       /**
+        * Get the list of all installed bundles
+        */
+       Set&lt;ObjectName> getBundles();
+       
+       /**
+        * Get the installed bundle 
+        */
+       ObjectName getBundle(String symbolicName);
+    }    
+    </programlisting>
+    
+    <emphasis role="bold">The ManagedBundle</emphasis>
+
+    <para>The <code>ManagedBundle</code> gives you access to the MBean views of a deployed Bundle. It is registerd under the name:</para>
+    
+    <itemizedlist>
+      <listitem><emphasis role="bold">jboss.osgi:bundle=[SymbolicName],id=[BundleId]</emphasis></listitem>
+    </itemizedlist>
+    
+    <programlisting role="JAVA">
+    public interface ManagedBundleMBean
+    {
+       /**
+        * Returns this bundle's current state. 
+        * A bundle can be in only one state at any time. 
+        * 
+        * @return An element of UNINSTALLED,INSTALLED, RESOLVED,STARTING, STOPPING,ACTIVE.
+        */
+       int getState();
+    
+       /**
+        * Get the bundles object name.
+        */
+       ObjectName getObjectName();
+       
+       /**
+        * Returns this bundle's unique identifier.
+        */
+       long getBundleId();
+       
+       /**
+        * Returns the symbolic name of this bundle as specified by its Bundle-SymbolicName manifest header
+        */
+       String getSymbolicName();
+       
+       /**
+        * Returns the value of the specified property from the BundleContext.
+        */
+       String getProperty(String key);
+       
+       /**
+        * Starts this bundle with no options
+        */
+       void start() throws BundleException;
+       
+       /**
+        * Stops this bundle with no options.
+        */
+       void stop() throws BundleException;
+    }
+    </programlisting>
+    
+    <emphasis role="bold">Accessing the Management Objects</emphasis>
+    
+    <para>If you work with the JBossOSGi Testsuite you get access to the Managed Objects through the JBossOSGi SPI provided 
+    <ulink url="http://junit.sourceforge.net/">JUnit</ulink> support package <ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/junit/package-summary.html">org.jboss.osgi.spi.junit</ulink>.
+    </para> 
+    
+    <para>If you install JBossOSGi in an already existing JBossAS instance you also get access to the Managed Objects through the JBoss provided
+    JMX Console (<ulink url="http://localhost:8080/jmx-console">http://localhost:8080/jmx-console</ulink>).</para> 
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="images/jmx-agent-view.png" contentwidth="450"/> 
+      </imageobject>
+    </mediaobject>
+    
+    <note>
+      <para>The JMX Console is <emphasis role="bold">not part</emphasis> of the <link linkend="SecRuntime">JBossOSGi Runtime</link>.</para>
+    </note> 
+  </sect1>
+  
+</chapter>

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch05-provided-bundles.xml (from rev 87613, projects/jboss-osgi/trunk/build/docbook/en/modules/providedservices.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch05-provided-bundles.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch05-provided-bundles.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,141 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapProvidedBundles">
+
+  <title>Provided Bundles and Services</title>
+  
+  <sect1 xml:id="SecLoggingService">  
+    <title>Logging Bridge Service</title>
+    
+    <para>The JBossOSGi <emphasis role="bold">jboss-osgi-logging.jar</emphasis> bundle contains a simple Logging Bridge Service to
+    <ulink url="http://www.jboss.org/community/docs/DOC-11280">JBoss Logging</ulink>. It registers a trivial LogListener with the 
+    LogReaderService in case that service is registered with the Framework.</para>
+    
+    <itemizedlist>
+      <listitem><ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogListener.html">LogListener</ulink> - Subscribes to LogEntry objects from the LogReaderService</listitem>
+      <listitem><ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogReaderService.html">LogReaderService</ulink> - Provides methods to retrieve LogEntry objects from the log</listitem>
+    </itemizedlist>
+    
+    <para>The LogReaderService is part of the standard <ulink url="http://www.osgi.org/Download/File?url=/download/r4v41/r4.cmpn.pdf">OSGi 
+    Compendium Services</ulink>. JBossOSGi currently uses the <ulink url="http://felix.apache.org/site/apache-felix-log-service.html">Log Service</ulink>
+    from <ulink url="http://felix.apache.org">Apache Felix</ulink>, which gets deployed as Bundle <emphasis role="bold">org.apache.felix.log.jar</emphasis>
+    </para>
+    
+    <para>The LogListener itself logs messages under the Bundle's symbolic name.</para>
+    
+    <programlisting role="JAVA">
+    public class JBossLoggingLogListener implements LogListener
+    {
+       public void logged(LogEntry entry)
+       {
+          Bundle bundle = entry.getBundle();
+          int level = entry.getLevel();
+          Throwable throwable = entry.getException();
+    
+          String loggerName = bundle.getSymbolicName();
+          Logger log = Logger.getLogger(loggerName);
+          
+          if (level == LogService.LOG_DEBUG)
+             log.debug(entry.getMessage(), throwable);
+          
+          else if (level == LogService.LOG_INFO)
+             log.info(entry.getMessage(), throwable);
+          
+          else if (level == LogService.LOG_WARNING)
+             log.warn(entry.getMessage(), throwable);
+    
+          else if (level == LogService.LOG_ERROR)
+             log.error(entry.getMessage(), throwable);
+       }
+    }
+    </programlisting>
+    
+    <para>You can therefore change the logging for specific Bundles by 
+    <ulink url="http://www.jboss.org/community/docs/DOC-12490">setting the respective logging level</ulink>.</para>  
+  </sect1>
+  
+  <sect1 xml:id="SecRemoteLogService">  
+    <title>Remote Log Service</title>
+    
+    <para>The JBossOSGi <emphasis role="bold">jboss-osgi-remotelog.jar</emphasis> bundle contains a client side 
+    <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogReaderService.html">RemoteLogReaderService</ulink> that remotely 
+    communicates with a server side <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogListener.html">LogListener</ulink>.
+    </para>
+
+    <para>The Remote Log Service is configured with these properties.</para>
+    
+    <table>
+      <tr><th>Key</th><th>Value</th><th>Description</th></tr>
+      <tr valign="top">
+        <td>org.jboss.osgi.service.remote.log.sender</td>
+        <td>true/false</td>
+        <td>Enable the server side LogListener</td>
+      </tr>
+      <tr valign="top">
+        <td>org.jboss.osgi.service.remote.log.reader</td>
+        <td>true/false</td>
+        <td>Enable the client side LogReaderService</td>
+      </tr>
+      <tr valign="top">
+        <td>org.jboss.osgi.service.remote.log.host</td>
+        <td>localhost</td>
+        <td>The remote host that log messages are sent to</td>
+      </tr>
+      <tr valign="top">
+        <td>org.jboss.osgi.service.remote.log.port</td>
+        <td>localhost</td>
+        <td>The remote port that log messages are sent to</td>
+      </tr>
+    </table>
+    
+    <para>On the client side you can install an arbitrary <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogListener.html">LogListener</ulink>
+    with the <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogReaderService.html">RemoteLogReaderService</ulink>. The testsuite typically
+    installs an <ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/ws/jboss-osgi/spi/target/apidocs/org/jboss/osgi/spi/logging/LogEntryCache.html">LogEntryCache</ulink>
+    that filters the received log messages.</para>
+    
+    <programlisting role="JAVA">
+    LogEntryCache logEntryCache = new LogEntryCache();
+    logEntryCache.addFilter(new LogEntryFilter("example-log(.*)", LogService.LOG_INFO, "\\[ServiceA\\](.*)"));
+    
+    // Track the RemoteLogReaderService to add the LogEntryCache as LogListener
+    ServiceTracker tracker = new ServiceTracker(sysContext, RemoteLogReaderService.class.getName(), null)
+    {
+       @Override
+       public Object addingService(ServiceReference sref)
+       {
+          LogReaderService service = (LogReaderService)super.addingService(sref);
+          service.addLogListener(logEntryCache);
+          return service;
+       }
+    };
+    tracker.open();
+    </programlisting>
+  </sect1>
+    
+  <sect1 xml:id="SecMicrocontainerService">  
+    <title>Microcontainer Service</title>
+    
+    <para>JBossOSGi SPI comes with a service that give access to the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> Kernel
+    and the JMX <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>. The service is 
+    registered with the Framework under the name</para>
+    
+    <itemizedlist>
+      <listitem><emphasis role="bold">org.jboss.osgi.service.MicrocontainerService</emphasis></listitem>
+    </itemizedlist>
+    
+    <para>Here is an example of how an OSGi component can register an arbitrary MBean with the 
+    <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>.</para>
+    
+    <programlisting role="JAVA">
+    ServiceReference sref = context.getServiceReference(MicrocontainerService.class.getName());
+    if (sref == null)
+      throw new IllegalStateException("MicrocontainerService not registered");
+    
+    MicrocontainerService mcService = (MicrocontainerService)context.getService(sref);
+    MBeanServer mbeanServer = mcService.getMbeanServer();
+    mbeanServer.registerMBean(new Foo(), OBJECT_NAME);
+    </programlisting>
+  </sect1>
+  
+</chapter>

Added: projects/jboss-osgi/trunk/build/docbook/en/modules/ch06-provided-examples.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch06-provided-examples.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch06-provided-examples.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,90 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapProvidedExamples">
+
+  <title>Provided Examples</title>
+  
+  <para>JBossOSGi comes with a number of examples that demonstrate supported functionality
+  and show best practices. All examples are part of the binary distribution and tightly 
+  integrated in our <ulink url="http://www.jboss.org/community/docs/DOC-13275">Maven Build Process</ulink> 
+  and <ulink url="http://www.jboss.org/community/docs/DOC-13420">Hudson QA Environment</ulink>.</para>
+  
+  <sect1 xml:id="SecHTTPServiceExample">  
+    <title>HTTP Service Example</title>
+    
+    <para>The <emphasis role="bold">example-http.jar</emphasis> bundle contains a Service 
+    that registeres a servlet and a resource with the <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/http/HttpService.html">HttpService</ulink>.
+    </para>
+    
+    <programlisting role="JAVA">
+      ServiceTracker tracker = new ServiceTracker(context, HttpService.class.getName(), null);
+      tracker.open();
+      
+      HttpService httpService = (HttpService)tracker.getService();
+      if (httpService == null)
+         throw new IllegalStateException("HttpService not registered");
+  
+     Properties initParams = new Properties();
+     initParams.setProperty("initProp", "SomeValue");
+     httpService.registerServlet("/servlet", new EndpointServlet(context), initParams, null);
+     httpService.registerResources("/file", "/res", null);
+    </programlisting>
+    
+    <para>The test then verifies that the registered servlet context and the registered resource can be accessed.</para>
+  </sect1>
+  
+  <sect1 xml:id="SecLogServiceExample">  
+    <title>Log Service Example</title>
+    
+    <para>The <emphasis role="bold">example-log.jar</emphasis> bundle contains a Service 
+    that logs messages to the <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogService.html">LogService</ulink>.
+    
+    </para>
+    
+    <programlisting role="JAVA">
+     public ServiceA(BundleContext context)
+     {
+        log = new LogServiceTracker(context);
+        log.log(LOG_INFO, "[ServiceA] new Service");
+     }
+    </programlisting>
+    
+    <para>The test then filters and verifies the log messages.</para>
+
+    <programlisting role="JAVA">
+    LogEntryCache logEntryCache = new LogEntryCache();
+    logEntryCache.addFilter(new LogEntryFilter(null, 0, "\\[ServiceA\\](.*)"));
+    startLogEntryTracking(logEntryCache);
+     
+    // Verify the received log entries
+    List entries = logEntryCache.getLog();
+    assertEquals("Number of entries", 1, entries.size());
+    assertEquals("[ServiceA] new Service", entries.get(0).getMessage());
+    </programlisting>
+
+    <para>The test is available both for embedded and remote LogService testing.</para>
+  </sect1>
+  
+  <sect1 xml:id="SecMicrocontainerServiceExample">  
+    <title>Microcontainer Service Example</title>
+    
+    <para>The <emphasis role="bold">example-microcontainer.jar</emphasis> bundle contains a Service 
+    that registers an MBean with the <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>.
+    </para>
+    
+    <programlisting role="JAVA">
+    MicrocontainerService service = (MicrocontainerService)tracker.getService();
+  	mbeanServer = mcService.getMbeanServer();
+    mbeanServer.registerMBean(new Foo(), OBJECT_NAME);
+    </programlisting>
+    
+    <para>The test then accesses the registered MBean.</para>
+
+    <programlisting role="JAVA">
+    FooMBean foo = (FooMBean)MBeanProxy.get(FooMBean.class, OBJECT_NAME, getServer());
+    assertEquals("hello", foo.echo("hello"));
+    </programlisting>
+  </sect1>
+  
+</chapter>


Property changes on: projects/jboss-osgi/trunk/build/docbook/en/modules/ch06-provided-examples.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch07-references.xml (from rev 87606, projects/jboss-osgi/trunk/build/docbook/en/modules/references.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch07-references.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch07-references.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,27 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapReferences">
+
+  <title>References</title>
+  
+  <para><emphasis role="bold">Resources</emphasis></para>
+  
+  <itemizedlist>
+    <listitem><ulink url="http://www.jboss.org/community/docs/DOC-13273">JBossOSGi Wiki</ulink></listitem> 
+    <listitem><ulink url="http://jbossosgi.blogspot.com">JBossOSGi Diary (Blog)</ulink></listitem>
+    <listitem><ulink url="https://jira.jboss.org/jira/browse/JBOSGI">Issue Tracking</ulink></listitem> 
+    <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA</ulink></listitem>
+    <listitem><ulink url="https://anonsvn.jboss.org/repos/jbossas/projects/jboss-osgi">Subversion</ulink></listitem> 
+    <listitem><ulink url="http://fisheye.jboss.com/browse/JBossOSGi">Fisheye</ulink></listitem>
+    <listitem><ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=257">User Forum</ulink></listitem> 
+    <listitem><ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=256">Design Forum</ulink></listitem>
+  </itemizedlist>
+  
+  <para><emphasis role="bold">Authors</emphasis></para>
+   
+  <itemizedlist>
+    <listitem><ulink url="email:thomas.diesler at jboss.com">Thomas Diesler</ulink></listitem>
+  </itemizedlist>
+  
+</chapter>

Copied: projects/jboss-osgi/trunk/build/docbook/en/modules/ch08-getting-support.xml (from rev 87606, projects/jboss-osgi/trunk/build/docbook/en/modules/gettingsupport.xml)
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/ch08-getting-support.xml	                        (rev 0)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/ch08-getting-support.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -0,0 +1,16 @@
+<!-- 
+  $Id$ 
+-->
+<chapter xml:id="ChapGettingSupport">
+
+  <title>Getting Support</title>
+  
+  <para>We offer free support through the <ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=257">JBossOSGi User Forum</ulink>.</para>
+
+  <para>Please note, that posts to this forum will be dealt with at the community's leisure. 
+  If your business is such that you need to rely on qualified answers within a known time frame, 
+  this forum might not be your preferred support channel.</para>
+
+  <para>For professional support please go to <ulink url="http://www.jboss.com/services">JBoss Support Services</ulink>.</para>
+  
+</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/devguide.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/devguide.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/devguide.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,276 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapDeveloperGuide">
-
-  <title>Developer Documentation</title>
-  
-  <sect1 xml:id="SecSPI">  
-    <title>Service Provider Interface</title>
-    
-    <para>The JBossOSGi Service Provider Interface (SPI) is the integration point between the supported OSGi Frameworks and 
-    the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink>. The configuration defines MC beans for the 
-    framework itself and its associated deployers.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/jboss-osgi.png" contentwidth="450"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>The latest version of the <ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc">JBossOSGi SPI</ulink> 
-    JavaDoc is published online as part of the JBossOSGi <ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA Environment</ulink>.</para>
-
-    <itemizedlist>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/package-summary.html">org.jboss.osgi.spi</ulink> - Common classes and interfaces.</listitem>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/framework/package-summary.html">org.jboss.osgi.spi.framework</ulink> - Framework integration and bootstrap.</listitem>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/junit/package-summary.html">org.jboss.osgi.spi.junit</ulink> - JUnit test integration.</listitem>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/logging/package-summary.html">org.jboss.osgi.spi.logging</ulink> - Support for Bundle logging.</listitem>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/management/package-summary.html">org.jboss.osgi.spi.management</ulink> -  Management view on deployed bundles.</listitem>
-      <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/service/microcontainer/package-summary.html">org.jboss.osgi.spi.service.microcontainer</ulink> -  Access to the Kernel and MBeanServer.</listitem>
-    </itemizedlist>
-    
-    <emphasis role="bold">Bootstrapping JBossOSGi</emphasis>
-    
-    <para>The OSGiBootstrap provides an OSGiFramework through a OSGiBootstrapProvider.</para>
-    
-    <para>A OSGiBootstrapProvider is discovered in two stages</para>
-
-    <orderedlist>
-      <listitem>Read the bootstrap provider class name from a system property</listitem>
-      <listitem>Read the bootstrap provider class name from a resource file</listitem>
-    </orderedlist>
-
-    <para>In both cases the key is the fully qalified name of the <code>org.jboss.osgi.spi.framework.OSGiBootstrapProvider</code> interface.</para>
-    
-    <para>The following code shows how to get the default <code>OSGiFramework</code> from the <code>OSGiBootstrapProvider</code>.</para>
-    
-    <programlisting role="JAVA">
-    OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
-    OSGiFramework framework = bootProvider.getFramework();
-    Bundle bundle = framework.getSystemBundle();
-    </programlisting>
-    
-    <para>The <code>OSGiBootstrapProvider</code> can also be configured explicitly. The <code>OSGiFramework</code> is a named 
-    object from the configuration.</para>
-    
-    <programlisting role="JAVA">
-    OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
-    bootProvider.configure(configURL);
-    
-    OSGiFramework framework = bootProvider.getFramework("AnotherOSGiFramework");
-    Bundle bundle = framework.getSystemBundle();
-    </programlisting>
-    
-    <para>The JBossOSGi SPI comes with a OSGiBootstrapProvider that uses a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> 
-    bean configuration.</para>
-    
-    <programlisting role="XML"><![CDATA[
-    <deployment xmlns="urn:jboss:bean-deployer:2.0" ...>
-    
-     <!-- The OSGiFramework -->
-     <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.felix.framework.FelixIntegration">
-      <property name="felixProperties">
-       <map keyClass="java.lang.String" valueClass="java.lang.String">
-        <entry><key>org.osgi.framework.storage.clean</key><value>onFirstInit</value></entry>
-        <entry>
-          <key>org.osgi.framework.system.packages</key>
-          <value>
-            org.osgi.framework; version=1.4,
-            org.osgi.util.tracker
-          </value>
-        </entry>
-       </map>
-      </property>
-     </bean>
-     
-     ...
-     
-    </deployment>
-    ]]></programlisting>
-    
-    <para>OSGiBootstrapProvider implementations that read their configurtation from some other source are possible, but currently not
-    part of the JBossOSGi SPI.</para>
-    
-    <tip>
-      <title>Using the SPI from within JBossAS deployed components</title>
-      <para>If you need access to the OSGi Framework from within an JBossAS deployed component (e.g. servlet, ejb, mbean) you 
-      <emphasis role="bold">would not</emphasis> bootstrap JBossOSGi through the SPI. Instead, you would inject the already bootstrapped
-      OSGi Framework instance into your component.</para>
-    </tip>
-  </sect1>
-  
-  <sect1 xml:id="SecDeployers">  
-    <title>Bundle Deployers</title>
-    
-    <para>JBossOSGi comes with a number of <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> based deployers. Each deployer
-    takes care of a specific aspect of bundle deployment.</para>
-    
-    <itemizedlist>
-      <listitem><emphasis role="bold">BundleMetaDataDeployer</emphasis> - Create BundleMetaData from Manifest Headers</listitem>
-      <listitem><emphasis role="bold">BundleStructureDeployer</emphasis> - Determine the structure of a Bundle deployment</listitem>
-      <listitem><emphasis role="bold">BundleRealDeployer</emphasis> - Installs the Bundle into the Framework's SystemContext</listitem>
-      <listitem><emphasis role="bold">BundleClassLoaderDeployer</emphasis> - Creates a BundleClassLoader for the deployed Bundle</listitem>
-      <listitem><emphasis role="bold">BundleStartStopDeployer</emphasis> - Starts the Bundle when dependencies are resolved</listitem>
-      <listitem><emphasis role="bold">BundleManagementDeployer</emphasis> - Register the Bundle as MBean with JMX</listitem>
-    </itemizedlist>
-    
-    <emphasis role="bold">BundleMetaDataDeployer</emphasis>
-    
-    <para>The BundleMetaDataDeployer creates the BundleMetaData from Manifest Headers. If the manifest does not contain 
-    a header named <emphasis role="bold">Bundle-SymbolicName</emphasis> this deployer does nothing. </para>
-    
-    <emphasis role="bold">BundleStructureDeployer</emphasis>
-    
-    <para>The BundleStructureDeployer determines the structure of a Bundle deployment. It ignores all deployments that
-    are not top-level or do not have a manifest header named <emphasis role="bold">Bundle-SymbolicName</emphasis></para>
-    
-    <emphasis role="bold">BundleRealDeployer</emphasis>
-    
-    <para>The BundleRealDeployer installs the Bundle into the Framework's SystemContext. Optionally you can configure a list of
-    bundle locations that should be skipped and hence not installed. Typically, these bundles are already installed during 
-    Framework startup.</para>
-    
-    <para>On undeploy the Bundle gets uninstalled from the Framework's SystemContext.</para>
-    
-    <emphasis role="bold">BundleClassLoaderDeployer</emphasis>
-    
-    <para>The BundleClassLoaderDeployer attaches a ClassLoaderFactory that creates a BundleClassLoader for the deployed Bundle.
-    A BundleClassLoader delegates all classloading concerns to the underlying Bundle.</para>
-    
-    <emphasis role="bold">BundleStartStopDeployer</emphasis>
-
-    <para>The BundleStartStopDeployer currently works in two modes:</para>
-    
-    <itemizedlist>
-      <listitem>deferredStart (default)</listitem>
-      <listitem>simpleStart</listitem>
-    </itemizedlist>
-    
-    <para>In mode <emphasis role="bold">deferredStart</emphasis> the Bundle is added to a list of unresolved Bundles, which then get passed
-    on to <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/packageadmin/PackageAdmin.html#resolveBundles(org.osgi.framework.Bundle[])"><code>PackageAdmin.resolveBundles(Bundle[])</code></ulink>.
-    The deployer then iterates over the unresolved Bundles and only starts those Bundles that are in state 
-    <ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/framework/Bundle.html#RESOLVED"><code>RESOLVED</code></ulink>. 
-    In this mode Bundles can be deployed in any order and only get started when all their respective dependencies can be resolved.</para>
-    
-    <para>In mode <emphasis role="bold">simpleStart</emphasis> the deployer attempts to start the Bundle regardless of whether its 
-    dependencies can get resolved. In case the Bundle has a dependency oin a package that is not yet available, deployment will fail.
-    In this mode Bundles must be deployed in the order required to start them.</para>
-    
-    <para>The start mode is a configurable property on the Framework's SystemContext.</para>
-    
-    <programlisting role="XML"><![CDATA[
-    <!-- 
-      If set to 'true' bundles can be deployed in any order. Deployed bundle will get started when their dependencies can be resolved.
-      If set to 'false' bundles must be deployed in the order that is required to start them. 
-    -->
-    <entry><key>org.jboss.osgi.deferred.start</key><value>true</value></entry>
-    ]]></programlisting>
-    
-    <emphasis role="bold">BundleManagementDeployer</emphasis>
-    
-    <para>The BundleManagementDeployer registers the Bundle as <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/StandardMBean.html">StandardMBean</ulink> with JMX.
-    Please see the section on <link linkend="SecJMXView">Management View</link> for details.</para>
-    
-  </sect1>
-  
-  <sect1 xml:id="SecJMXView">  
-    <title>Management View</title>
-    
-    <para>JBossOSGi registers the Framework and every deployed Bundle with the JMX <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>.</para>
-    
-    <emphasis role="bold">The ManagedFramework</emphasis>
-    
-    <para>The <code>ManagedFramework</code> gives you access to the MBean views of the deployed Bundles. It is registerd under the name:</para>
-    
-    <itemizedlist>
-      <listitem><emphasis role="bold">jboss.osgi:service=ManagedFramework</emphasis></listitem>
-    </itemizedlist>
-    
-    <programlisting role="JAVA">
-    public interface ManagedFrameworkMBean
-    {
-       /**
-        * Get the list of all installed bundles
-        */
-       Set&lt;ObjectName> getBundles();
-       
-       /**
-        * Get the installed bundle 
-        */
-       ObjectName getBundle(String symbolicName);
-    }    
-    </programlisting>
-    
-    <emphasis role="bold">The ManagedBundle</emphasis>
-
-    <para>The <code>ManagedBundle</code> gives you access to the MBean views of a deployed Bundle. It is registerd under the name:</para>
-    
-    <itemizedlist>
-      <listitem><emphasis role="bold">jboss.osgi:bundle=[SymbolicName],id=[BundleId]</emphasis></listitem>
-    </itemizedlist>
-    
-    <programlisting role="JAVA">
-    public interface ManagedBundleMBean
-    {
-       /**
-        * Returns this bundle's current state. 
-        * A bundle can be in only one state at any time. 
-        * 
-        * @return An element of UNINSTALLED,INSTALLED, RESOLVED,STARTING, STOPPING,ACTIVE.
-        */
-       int getState();
-    
-       /**
-        * Get the bundles object name.
-        */
-       ObjectName getObjectName();
-       
-       /**
-        * Returns this bundle's unique identifier.
-        */
-       long getBundleId();
-       
-       /**
-        * Returns the symbolic name of this bundle as specified by its Bundle-SymbolicName manifest header
-        */
-       String getSymbolicName();
-       
-       /**
-        * Returns the value of the specified property from the BundleContext.
-        */
-       String getProperty(String key);
-       
-       /**
-        * Starts this bundle with no options
-        */
-       void start() throws BundleException;
-       
-       /**
-        * Stops this bundle with no options.
-        */
-       void stop() throws BundleException;
-    }
-    </programlisting>
-    
-    <emphasis role="bold">Accessing the Management Objects</emphasis>
-    
-    <para>If you work with the JBossOSGi Testsuite you get access to the Managed Objects through the JBossOSGi SPI provided 
-    <ulink url="http://junit.sourceforge.net/">JUnit</ulink> support package <ulink url="http://jbmuc.dyndns.org:8280/hudson/job/jbossosgi-jdk16/javadoc/org/jboss/osgi/spi/junit/package-summary.html">org.jboss.osgi.spi.junit</ulink>.
-    </para> 
-    
-    <para>If you install JBossOSGi in an already existing JBossAS instance you also get access to the Managed Objects through the JBoss provided
-    JMX Console (<ulink url="http://localhost:8080/jmx-console">http://localhost:8080/jmx-console</ulink>).</para> 
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/jmx-agent-view.png" contentwidth="450"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <note>
-      <para>The JMX Console is <emphasis role="bold">not part</emphasis> of the <link linkend="SecRuntime">JBossOSGi Runtime</link>.</para>
-    </note> 
-  </sect1>
-  
-</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/frameworkintegration.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/frameworkintegration.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/frameworkintegration.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,136 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapFrameworkIntegration">
-
-  <title>Framework Integration</title>
-  
-  <sect1 xml:id="SecIntFelix">  
-    <title>Apache Felix Integration</title>
-    
-    <para>JBossOSGi provides integration for the <ulink url="http://felix.apache.org">Apache Felix</ulink> OSGi Framework and some
-    of its core services</para>
-
-    <itemizedlist>
-      <listitem><ulink url="http://felix.apache.org/site/apache-felix-log-service.html">Log Service</ulink> - General purpose message logger</listitem>
-      <listitem><ulink url="http://felix.apache.org/site/apache-felix-http-service.html">HTTP Service</ulink> - Http access to servlets and resources</listitem>
-      <listitem><ulink url="http://felix.apache.org/site/apache-felix-configuration-admin-service.html">Config Admin Service</ulink> - Management of configuration data for configurable components</listitem>
-    </itemizedlist>
-
-    <para>The Apache Felix integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
-    configuration</para>
-    
-    <programlisting role="XML"><![CDATA[
-    cat server/default/deployers/osgi.deployer/META-INF/osgi-deployers-jboss-beans.xml 
-    
-    <deployment xmlns="urn:jboss:bean-deployer:2.0">
-    
-      <!-- The OSGiFramework -->
-      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.felix.framework.FelixIntegration">
-        <property name="properties">
-           ...
-        </property>
-        <property name="autoStart">
-         <list elementClass="java.net.URL">
-          ...
-         </list>
-        </property>
-      </bean>
-      ...
-    </deployment>
-    ]]></programlisting>
-
-    <para>The following is a description of the configuration properties for the Apache Felix integration.</para>
-    
-    <table>
-      <tr><th>Key</th><th>Value</th><th>Description</th></tr>
-      <tr valign="top">
-        <td>org.osgi.framework.storage</td>
-        <td>.../osgi-store</td>
-        <td>OSGi Framework storage area</td>
-      </tr>
-      <tr valign="top">
-        <td>org.osgi.framework.storage.clean</td>
-        <td>onFirstInit</td>
-        <td>Clean the storage area on first init</td>
-      </tr>
-      <tr valign="top">
-        <td>org.osgi.service.http.port</td>
-        <td>8090</td>
-        <td>The default Http Service port</td>
-      </tr>
-      <tr valign="top">
-        <td>felix.cm.dir</td>
-        <td>.../osgi-configadmin</td>
-        <td>Config Admin Service storage area</td>
-      </tr>
-      <tr valign="top">
-        <td>org.osgi.framework.system.packages</td>
-        <td>javax.management, javax.xml...</td>
-        <td>Packages provided by the OSGi System ClassLoader</td>
-      </tr>
-      <tr valign="top">
-        <td>org.jboss.osgi.deferred.start</td>
-        <td>true</td>
-        <td>Bundles can be deployed in any order</td>
-      </tr>
-    </table>
-  </sect1>
-  
-  <sect1 xml:id="SecIntEquinox">  
-    <title>Equinox Integration</title>
-    
-    <para>JBossOSGi also provides basic integration for the <ulink url="http://www.eclipse.org/equinox">Eclpipse Equinox</ulink> OSGi Framework.</para>
-    
-    <para>Equinox integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
-    configuration</para>
-    
-    <programlisting role="XML"><![CDATA[
-    <deployment xmlns="urn:jboss:bean-deployer:2.0">
-    
-      <!-- The OSGiFramework -->
-      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.equinox.framework.EquinoxIntegration">
-        <property name="properties">
-           ...
-        </property>
-        <property name="autoStart">
-         <list elementClass="java.net.URL">
-          ...
-         </list>
-        </property>
-      </bean>
-      ...
-    </deployment>
-    ]]></programlisting>
-    
-  </sect1>
-  
-  <sect1 xml:id="SecIntKnopflerfish">  
-    <title>Knopflerfish Integration</title>
-    
-    <para>JBossOSGi provides basic integration for the <ulink url="http://www.knopflerfish.org">Makewave Knopflerfish</ulink> OSGi Framework.</para>
-
-    <para>Knopflerfish integration can be configured through a <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> beans 
-    configuration</para>
-    
-    <programlisting role="XML"><![CDATA[
-    <deployment xmlns="urn:jboss:bean-deployer:2.0">
-    
-      <!-- The OSGiFramework -->
-      <bean name="jboss.osgi:service=Framework" class="org.jboss.osgi.knopflerfish.KnopflerfishIntegration">
-        <property name="properties">
-           ...
-        </property>
-        <property name="autoStart">
-         <list elementClass="java.net.URL">
-          ...
-         </list>
-        </property>
-      </bean>
-      ...
-    </deployment>
-    ]]></programlisting>
-    
-  </sect1>
-  
-</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/gettingstarted.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/gettingstarted.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/gettingstarted.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,355 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapGettingStarted">
-
-  <title>Getting Started</title>
-  
-  <para>This chapter takes you through the first steps of getting JBossOSGi and 
-  provides the initial pointers to get up and running.</para>
-  
-  <sect1 xml:id="SecInstall">  
-    <title>Installing JBossOSGi</title>
-    
-    <para>JBossOSGi is distributed as an <ulink url="http://izpack.org">IzPack</ulink> installer archive. 
-    The installer is available from the JBossOSGi <ulink url="https://sourceforge.net/project/showfiles.php?group_id=22866&amp;package_id=316015">download area</ulink>.</para>
-     
-    <para>To run the installer execute the following command:</para>
-    
-    <!-- [TODO] release update  -->
-    <programlisting>
-    java -jar jboss-osgi-installer-1.0.0.Beta1.jar
-    </programlisting>
-      
-    <para>The installer first shows a welcome screen</para>
-    
-    <!-- [TODO] release update  -->
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-welcome.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>Then you select the installation path for the JBossOSGi distribution. This is the directory where you find the binary build artifacts,
-    the java sources, documentation and the JBossOSGi Runtime.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-installpath.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>The installer contains multiple installation packs. Greyed packs are required, others are optional and can be deselected.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-packs.jpg"/> 
-      </imageobject>
-    </mediaobject>
-
-    <itemizedlist>
-      <listitem><emphasis role="bold">JBossOSGi Distribution</emphasis> - Documentation, Binary Artifacts and Sources</listitem>
-      <listitem><emphasis role="bold">JBossOSGi Runtime</emphasis> - Standalone JBossOSGi Runtime based on JBossAS</listitem>
-      <listitem><emphasis role="bold">JBossOSGi Integration</emphasis> - Integration with an existing JBossAS instance</listitem>
-    </itemizedlist>
-    
-    <para>Next, you will be presented with the choice of supported OSGi Frameworks.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-target-framework.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>In case you have selected 'JBossOSGi Integration', you will be presented with the choice of supported target containers.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-target-server.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>You will then have to point the installer to your existing <ulink url="http://http://jboss.org/jbossas">JBossAS</ulink> installation.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-jboss-home.jpg"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>You can then verify the selected installation options and proceed with the actual installation.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-verify.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>The installer reports its installation progress and finally displays a confirmation screen. You can now optionally generate
-    an "automatic installation script" that you can use when you want to repeat what you have just done without user interaction.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-done.png"/> 
-      </imageobject>
-    </mediaobject>
-  </sect1>
-  
-  <sect1 xml:id="SecRuntime">
-    <title>JBossOSGi Runtime</title>
-    
-    <para>If you selected 'JBossOSGi Runtime' during installation you should see a <emphasis role="bold">runtime</emphasis> folder, which contains 
-    the JBossOSGi Runtime distribution.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/izpack-structure.jpg"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>The JBossOSGi Runtime is a customized version of the <ulink url="http://www.jboss.org/jbossas">JBoss Application Server</ulink>. From that we removed the services 
-    that are not absolutely necessary to run the installed OSGi Framework. Consequently, you can start the JBossOSGi Runtime in the same
-    way as you start <ulink url="http://www.jboss.org/jbossas">JBossAS</ulink></para>
-    
-    <programlisting>
-    [tdiesler at tdvaio runtime]$ bin/run.sh
-    =========================================================================
-    
-      JBoss Bootstrap Environment
-    
-      JBOSS_HOME: /usr/java/jboss-osgi-1.0.0.Beta1/runtime
-    
-      ...
-    
-    =========================================================================
-    
-    14:43:43,598 INFO  [ServerImpl] Starting JBoss (Microcontainer)...
-    ...
-    14:43:52,298 INFO  [FelixIntegration] OSGi Integration Felix - 1.0.0.Beta1
-    14:43:52,692 INFO  [FelixIntegration] Installed bundle: org.osgi.compendium
-    14:43:52,700 INFO  [FelixIntegration] Installed bundle: org.jboss.osgi.service.logging
-    14:43:52,701 INFO  [FelixIntegration] Started bundle: org.osgi.compendium
-    14:43:52,766 INFO  [FelixIntegration] Started bundle: org.jboss.osgi.service.logging
-    14:43:53,290 INFO  [OSGiDeployer] Installed: jboss-osgi-service-webconsole [3][INSTALLED]
-    14:43:53,297 INFO  [OSGiDeployer] Installed: org.apache.felix.bundlerepository [4][INSTALLED]
-    14:43:53,308 INFO  [OSGiDeployer] Installed: org.apache.felix.configadmin [5][INSTALLED]
-    14:43:53,322 INFO  [OSGiDeployer] Installed: org.apache.felix.http.jetty [6][INSTALLED]
-    14:43:53,328 INFO  [OSGiDeployer] Installed: org.apache.felix.log [7][INSTALLED]
-    14:43:53,333 INFO  [OSGiDeployer] Installed: org.apache.felix.metatype [8][INSTALLED]
-    ...
-    14:43:55,250 INFO  [ServerImpl] JBoss (Microcontainer) [5.0.1.GA ...] <emphasis role="bold">Started in 11s:645ms</emphasis>
-    </programlisting>
-    
-    <emphasis role="bold">Provided Examples</emphasis>
-
-    <para>JBossOSGi comes with a number of examples that you can build and deploy. Each example
-    deployment is verified by an accompaning test case</para>
-
-    <itemizedlist>
-      <listitem><emphasis role="bold">HTTP Service</emphasis> - Register servlets and resources with the HTTP Service</listitem>
-      <listitem><emphasis role="bold">Log Service</emphasis> - Interact with a local and remote Log Service</listitem>
-      <listitem><emphasis role="bold">Microcontainer Service</emphasis> - Register an MBean through the Microcontainer</listitem>
-    </itemizedlist>
-    
-    <programlisting>
-    [tdiesler at tddell example]$ mvn package
-    [INFO] ------------------------------------------------------------------------
-    [INFO] Building JBossOSGi - Testsuite Examples
-    [INFO]    task-segment: [package]
-    [INFO] ------------------------------------------------------------------------
-    ...
-    build-example-jars:
-    # example-log (example-log.jar) 2 
-    # example-http (example-http.jar) 4 
-    # example-microcontainer (example-microcontainer.jar) 4
-    ... 
-    Running org.jboss.test.osgi.example.log.LogServiceTestCase
-    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.849 sec
-    </programlisting>
-
-    <emphasis role="bold">Bundle Deployment</emphasis>
-
-    <para>Bundle deployment works, as you would probably expect, by dropping your OSGi Bundle into the 
-    JBossOSGi Runtime <emphasis role="bold">deploy</emphasis> folder.</para>
-    
-    <programlisting>
-    [tdiesler at tdvaio testsuite]$ cp .../test-libs/example/example-http.jar .../runtime/server/default/deploy
-    ...
-    13:59:38,284 INFO  [BundleRealDeployer] Installed: example-http [9]
-    13:59:38,289 INFO  [example-http] BundleEvent INSTALLED
-    13:59:38,297 INFO  [example-http] BundleEvent RESOLVED
-    13:59:38,304 INFO  [example-http] ServiceEvent REGISTERED
-    13:59:38,306 INFO  [BundleStartStopDeployer] Started: example-http [9]
-    13:59:38,306 INFO  [example-http] BundleEvent STARTED
-    </programlisting>
-  
-    <emphasis role="bold">Managing installed Bundles</emphasis>
-    
-    <para>JBossOSGi comes with a simple Web Console, which is currently based on the 
-    <ulink url="http://felix.apache.org/site/apache-felix-web-console.html">Apache Felix Web Console</ulink> project. 
-    By default the JBossOSGi Web Console is available at <ulink url="http://localhost:8090/jboss-osgi">http://localhost:8090/jboss-osgi</ulink>.
-    </para> 
-
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/webconsole.png" contentwidth="450"/> 
-      </imageobject>
-    </mediaobject>
-  
-    <note>
-      <title>TODO: Cleanup and document console provided functionality</title>
-    </note>
-  </sect1>
-  
-  <sect1 xml:id="SecHudson">
-    <title>Hudson QA Environment</title>
-    
-    <emphasis role="bold">Setup the Hudson QA Environment</emphasis>
-    
-    <para>The JBossOSGi <ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA Environment</ulink> is an integral part of the JBossOSGi code base.
-    It is designed for simplicity because we believe that comprehensive QA will only get done if it is dead simple to do so.</para>
-     
-    <para>Consequently, you only have to execute two simple ant targets to setup the QA environment that was used to QA the JBossOSGi
-    release that you currently work with.</para>
-    
-    <para>If in future we should discover a problem with a previous JBossOSGi release, it will be possible to provide a patch and verify that change using 
-    the original QA environment for that release.</para>
-     
-    <para>With every release we test the matrix of supported target containers and JDKs.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/hudson-home.png" contentwidth="450"/> 
-      </imageobject>
-    </mediaobject>
-  
-    <emphasis role="bold">Set Hudson Properties</emphasis>
-
-    <para>You need to set a few properties, especially these</para>
-
-    <itemizedlist>
-      <listitem>hudson.maven.path</listitem>
-      <listitem>hudson.username</listitem>
-      <listitem>hudson.password</listitem>
-      <listitem>hudson.root</listitem>
-    </itemizedlist>
-    
-    <programlisting>
-    cd build/hudson
-    cp ant.properties.example ant.properties
-    vi ant.properties
-    
-    # The JBoss settings
-    jboss.server.instance=default
-    jboss.bind.address=127.0.0.1
-    
-    # JDK settings
-    java.home.jdk15=/usr/java/jdk1.5.0_17
-    java.home.jdk16=/usr/java/jdk1.6.0_11
-    
-    # Hudson QA Environment
-    hudson.username=chageme
-    hudson.password=chageme
-    
-    hudson.maven.path=/usr/java/apache-maven-2.0.9
-    
-    hudson.root=/home/tdiesler/workspace/hudson/jboss-osgi
-    
-    hudson.maven.profile=$HUDSONDIR/profiles.xml.local.qa
-    
-    hudson.host=jbpm.dyndns.org
-    hudson.admin.port=8250
-    hudson.http.port=8280
-    
-    #hudson.jboss501.zip=file:///home/tdiesler/Download/java/jboss/jboss-5.0.1.GA.zip
-    
-    hudson.mail.recipients=
-    hudson.smtp.host=localhost
-    
-    # Hudson (1.290)
-    apache-tomcat=5.5.20
-    sun-hudson=2402/128862
-    </programlisting>
-
-    <emphasis role="bold">Run Hudson Setup</emphasis>
-
-    <programlisting>
-    [tdiesler at tdvaio hudson]$ ant hudson-setup
-    Buildfile: build.xml
-    
-    init:
-         [echo] V1.0.0.Beta1
-    
-    init-hudson:
-         [echo] 
-         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
-         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
-         [echo] 
-    
-    ...
-    
-    hudson-setup:
-         [copy] Copying 2 files to /home/.../hudson/jboss-osgi/apache-tomcat
-         ...
-         [echo] 
-         [echo] *************************************
-         [echo] * Hudson setup successfully         *
-         [echo] * ant hudson-start                  *
-         [echo] *************************************
-         [echo] 
-    </programlisting>
-
-    <emphasis role="bold">Run Hudson Start</emphasis>
-
-    <programlisting>
-    [tdiesler at tdvaio hudson]$ ant hudson-start
-    Buildfile: build.xml
-    
-    init:
-         [echo] V1.0.0.Beta1
-    
-    init-hudson:
-         [echo] 
-         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
-         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
-         [echo] 
-    
-    hudson-start:
-         [echo] 
-         [echo] *************************************
-         [echo] * Hudson started successfully       *
-         [echo] * http://localhost:8280/hudson      *
-         [echo] *************************************
-         [echo] 
-    
-    BUILD SUCCESSFUL
-    </programlisting>
-    
-    <emphasis role="bold">Run Hudson Stop</emphasis>
-    
-    <programlisting>
-    [tdiesler at tdvaio hudson]$ ant hudson-stop
-    Buildfile: build.xml
-    
-    init:
-         [echo] V1.0.0.Beta1
-    
-    init-hudson:
-         [echo] 
-         [echo] hudson.root = /home/tdiesler/workspace/hudson/jboss-osgi
-         [echo] hudson.home = /home/tdiesler/workspace/hudson/jboss-osgi/hudson-home
-         [echo] 
-    
-    hudson-stop:
-         [echo] 
-         [echo] *************************************
-         [echo] * Hudson stopped successfully       *
-         [echo] * ant hudson-start                  *
-         [echo] *************************************
-         [echo] 
-    
-    BUILD SUCCESSFUL
-    </programlisting>
-  </sect1>
-  
-</chapter>
\ No newline at end of file

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/gettingsupport.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/gettingsupport.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/gettingsupport.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,16 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapGettingSupport">
-
-  <title>Getting Support</title>
-  
-  <para>We offer free support through the <ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=257">JBossOSGi User Forum</ulink>.</para>
-
-  <para>Please note, that posts to this forum will be dealt with at the community's leisure. 
-  If your business is such that you need to rely on qualified answers within a known time frame, 
-  this forum might not be your preferred support channel.</para>
-
-  <para>For professional support please go to <ulink url="http://www.jboss.com/services">JBoss Support Services</ulink>.</para>
-  
-</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/introduction.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/introduction.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/introduction.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,299 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapIntroduction">
-
-  <title>Introduction</title>
-  
-  <sect1 xml:id="SecWhatIsOsgi">
-    <title>What is OSGi</title>
-    
-    <para>The <ulink url="http://www2.osgi.org/Release4/HomePage">Open Services Gateway Initiative (OSGi)</ulink>, 
-    specifications define a standardized, component-oriented, computing environment for networked services that is the foundation 
-    of an enhanced service-oriented architecture.</para>
-  
-    <para>The OSGi specification defines two things:</para>
-  
-    <itemizedlist>
-      <listitem>A set of services that an OSGi container must implement</listitem>
-      <listitem>A contract between the container and your application</listitem>
-    </itemizedlist>
-  
-    <para>Developing on the OSGi platform means first building your application using OSGi APIs, then deploying it in an OSGi container.</para>
-    
-    <para>The <ulink url="http://www.jboss.org/community/docs/DOC-13273">JBossOSGi Project</ulink> project has two distinct goals</para>
-    
-    <orderedlist>
-      <listitem>Provide an integration platform for 3rd party OSGi Frameworks</listitem>
-      <listitem>Provide an OSGi compliant framework implementation based on the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink></listitem>
-    </orderedlist>
-    
-    
-    <emphasis role="bold">What does OSGi offer to Java developers?</emphasis>
-    
-    <para>OSGi modules provide classloader semantics to partially expose code that can then be consumed by other modules. 
-    The implementation details of a module, although scoped public by the Java programming language, remain private to the module. 
-    On top of that you can install multiple versions of the same code and resolve dependencies by version and other criteria. 
-    OSGi also offers advanced security and lifecycle, which I'll explain in more detail further down.</para>
-  
-    <emphasis role="bold">What kind of applications benefit from OSGi?</emphasis>
-    
-    <para>Any application that is designed in a modular fashion where it is necessary to start, stop, update individual modules with minimal impact 
-    on other modules. Modules can define their own transitive dependencies without the need to resolve these dependencies at the container level. 
-    The OSGi platform builds an exellent foundation for the next generation JBoss ESB for example.</para>
-  
-    <emphasis role="bold">Should Java EE developers adopt the OSGi programming model?</emphasis>
-    
-    <para>Probably not. The OSGi runtime may be used internally by Java EE container providers to achieve the desired isolation and configuration 
-    flexibility that the container whishes to provide. At the application programming level, the Java EE model will continue to exist in its own right, 
-    wheras the OSGi model may provide the more suitable runtime environment for applications that require the modular isolation, security and lifecycle 
-    management that OSGi offers.</para>
-    
-  </sect1>
-  
-  <sect1 xml:id="SecFramworkOverview">
-    <title>OSGi Framework Overview</title>
-    
-    <para>The functionality of the Framework is divided in the following layers:</para>
-    
-    <itemizedlist>
-      <listitem>Security Layer</listitem>
-      <listitem>Module Layer</listitem>
-      <listitem>Life Cycle Layer</listitem>
-      <listitem>Service Layer</listitem>
-      <listitem>Actual Services</listitem>
-    </itemizedlist>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-layers.png"/> 
-      </imageobject>
-    </mediaobject>
-
-    
-    <emphasis role="bold">OSGi Security Layer</emphasis>
-  
-    <para>The OSGi Security Layer is an optional layer that underlies the OSGi Service Platform. 
-    The layer is based on the Java 2 security architecture. It provides the infrastructure to deploy and manage 
-    applications that must run in fine grained controlled environments.</para>
-    
-    <para>The OSGi Service Platform can authenticate code in the following ways:</para>
-
-    <itemizedlist>
-      <listitem>By location</listitem>
-      <listitem>By signer</listitem>
-    </itemizedlist>
-
-    <para>For example, an Operator can grant the ACME company the right to use networking on their devices. 
-    The ACME company can then use networking in every bundle they digitally sign and deploy on the Operator’s device. 
-    Also, a specific bundle can be granted permission to only manage the life cycle of bundles that are signed by the ACME company.</para>    
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-delegation.png"/> 
-      </imageobject>
-    </mediaobject>
-  
-    <emphasis role="bold">OSGi Module Layer</emphasis>
-    
-    <para>The OSGi Module Layer provides a generic and standardized solution for Java modularization. 
-    The Framework defines a unit of modularization, called a bundle. A bundle is comprised of Java classes and other resources, 
-    which together can provide functions to end users. Bundles can share Java packages among an exporter bundle and an importer bundle 
-    in a well-defined way.</para>
-
-    <para>Once a <emphasis role="bold">Bundle</emphasis> is started, its functionality is provided and services are exposed to other bundles installed in the OSGi Service Platform. 
-    A bundle can carry descriptive information about itself in the manifest file that is contained in its JAR file. 
-    Here are a few important <emphasis role="bold">Manifest Headers</emphasis> defined by the OSGi Framework:</para>
-    
-    <itemizedlist>
-      <listitem><emphasis role="bold">Bundle-Activator</emphasis> - class used to start, stop the bundle</listitem>
-      <listitem><emphasis role="bold">Bundle-SymbolicName</emphasis> - identifies the bundle</listitem>
-      <listitem><emphasis role="bold">Bundle-Version</emphasis> - specifies the version of the bundle</listitem>
-      <listitem><emphasis role="bold">Export-Package</emphasis> - declaration of exported packages</listitem>
-      <listitem><emphasis role="bold">Import-Package</emphasis> - declaration of imported packages</listitem>
-    </itemizedlist>
-    
-    <para>The notion of OSGi Version Range describes a range of versions using a mathematical interval notation. For example</para>
-    
-    <programlisting>
-    Import-Package: com.acme.foo;version="[1.23, 2)", com.acme.bar;version="[4.0, 5.0)"
-    </programlisting>
-    
-    <para>With the OSGi Class Loading Architecture many bundles can share a single virtual machine (VM). 
-    Within this VM, bundles can hide packages and classes from other bundles, as well as share packages with other bundles.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-classloader.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>For example, the following import and export definition resolve correctly because the version range in the import definition 
-    matches the version in the export definition:</para>
-    
-    <programlisting>
-    A: Import-Package: p; version="[1,2)"
-    B: Export-Package: p; version=1.5.1
-    </programlisting>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-version-constraint.png"/> 
-      </imageobject>
-    </mediaobject>
-  
-    <para>Appart from bundle versions, OSGi Attribute Matching is a generic mechanism to allow the importer and exporter to influence the 
-    matching process in a declarative way. For example, the following statements will match.</para>
-
-    <programlisting>
-    A: Import-Package: com.acme.foo;company=ACME
-    B: Export-Package: com.acme.foo;company=ACME; security=false
-    </programlisting>
-
-    <para>An exporter can limit the visibility of the classes in a package with the include and exclude directives on the export definition.</para>
-
-    <programlisting>
-    Export-Package: com.acme.foo; include:="Qux*,BarImpl"; exclude:=QuxImpl
-    </programlisting>
-  
-    <emphasis role="bold">OSGi Life Cycle Layer</emphasis>
-    
-    <para>The Life Cycle Layer provides an API to control the security and life cycle operations of bundles.</para>
-
-    <para>A bundle can be in one of the following states:</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-life-cycle.png"/> 
-      </imageobject>
-    </mediaobject>
-    
-    <para>A bundle is activated by calling its <emphasis role="bold">Bundle Activator</emphasis> object, if one exists. 
-    The BundleActivator interface defines methods that the Framework invokes when it starts and stops the bundle.</para>
-
-    <para>A Bundle Context object represents the execution context of a single bundle within the OSGi Service Platform, 
-    and acts as a proxy to the underlying Framework. A <emphasis role="bold">Bundle Context</emphasis> object is created by the Framework when a bundle is started. 
-    The bundle can use this private BundleContext object for the following purposes:</para>
-    
-    <itemizedlist>
-      <listitem>Installing new bundles into the OSGi environment</listitem>
-      <listitem>Interrogating other bundles installed in the OSGi environment</listitem>
-      <listitem>Obtaining a persistent storage area</listitem>
-      <listitem>Retrieving service objects of registered services</listitem>
-      <listitem>Registering services in the Framework service</listitem>
-      <listitem>Subscribing or unsubscribing to Famework events</listitem>
-    </itemizedlist>
-    
-    <emphasis role="bold">OSGi Service Layer</emphasis>
-    
-    <para>The OSGi Service Layer defines a dynamic collaborative model that is highly integrated with the Life Cycle Layer. 
-    The service model is a publish, find and bind model. A service is a normal Java object that is registered under one or more 
-    Java interfaces with the service registry.</para>
-    
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-service-registration.png"/> 
-      </imageobject>
-    </mediaobject>
-  </sect1>
-  
-  <sect1 xml:id="SecServiceCompendium">
-    <title>OSGi Service Compendium</title>
-    
-    <para>The OSGi Service Compendium specifies a number of services that may be available in an OSGi runtime environment. 
-    Although the OSGi Framework specification is useful in itself already, it only defines the OSGi core infrastructure. 
-    The services defined in the compendium specification define the scope and functionality of some common services that 
-    bundle developers might want to use. Here is a quick summary:</para>
-    
-    <emphasis role="bold">Log Service</emphasis>
-    <para>The Log Service provides a general purpose message logger for the OSGi Service Platform. It consists of two services, 
-    one for logging information and another for retrieving current or previously recorded log information.</para>
-  
-    <emphasis role="bold">Http Service</emphasis>
-    <para>The Http Service supports two standard techniques for registering servlets and resources to develop communication and 
-    user interface solutions for standard technologies such as HTTP, HTML, XML, etc.</para>
-  
-    <emphasis role="bold">Device Access Specification</emphasis>
-    <para>The Device Access specification supports the coordination of automatic detection and attachment of existing devices on 
-    an OSGi Service Platform, facilitates hot-plugging and -unplugging of new devices, and downloads and installs device drivers on demand.</para>
-  
-    <emphasis role="bold">Configuration Admin Service</emphasis>
-    <para>The Configuration Admin service allows an Operator to set the configuration information of deployed bundles.</para>
-    <mediaobject>
-      <imageobject>
-        <imagedata fileref="images/osgi-config-service.png" contentwidth="450"/> 
-      </imageobject>
-    </mediaobject>
-  
-    <emphasis role="bold">Metatype Service</emphasis>
-    <para>The Metatype Service specification defines interfaces that allow bundle developers to describe attribute 
-    types in a computer readable form using so-called metadata.</para>
-  
-    <emphasis role="bold">Preferences Service</emphasis>
-    <para>The Preferences Service allows storage of data that is specific to a particular user.</para>
-  
-    <emphasis role="bold">User Admin Service</emphasis>
-    <para>Bundles can use the User Admin Service to authenticate an initiator and represent this authentication as an Authorization object. 
-    Bundles that execute actions on behalf of this user can use the Authorization object to verify if that user is authorized.</para>
-  
-    <emphasis role="bold">Wire Admin Service</emphasis>
-    <para>The Wire Admin Service is an administrative service that is used to control a wiring topology in the OSGi Service Platform. 
-    It is intended to be used by user interfaces or management programs that control the wiring of services in an OSGi Service Platform.</para>
-  
-    <emphasis role="bold">IO Connector Service</emphasis>
-    <para>The IO Connector Service specification adopts the Java 2 Micro Edition (J2ME) javax.microedition.io packages as a basic communications 
-    infrastructure.</para>
-  
-    <emphasis role="bold">UPnP Device Service</emphasis>
-    <para>The UPnP Device Service specifies how OSGi bundles can be developed that interoperate with UPnP (Universal Plug and Play) 
-    devices and UPnP control points.</para>
-  
-    <emphasis role="bold">Declarative Services Specification</emphasis>
-    <para>The Declarative Services specification addresses some of the complications that arise when the OSGi service model is 
-    used for larger systems and wider deployments, such as: Startup Time, Memory Footprint, Complexity. The service component 
-    model uses a declarative model for publishing, finding and binding to OSGi services.</para>
-  
-    <emphasis role="bold">Event Admin Service</emphasis>
-    <para>The Event Admin Service provides an inter-bundle communication mechanism. It is based on a event publish and subscribe model, popular in many message based systems.</para>
-  
-    <emphasis role="bold">Deployment Admin Service</emphasis>
-    <para>The Deployment Admin Service specification, standardizes the access to some of the responsibilities of the management agent: 
-    that is, the lifecycle management of interlinked resources on an OSGi Service Platform.</para>
-  
-    <emphasis role="bold">Auto Configuration Specification</emphasis>
-    <para>The Auto Configuration Specification is to allow the configuration of bundles. 
-    These bundles can be embedded in Deployment Packages or bundles that are already present on the OSGi Service Platform.</para>
-  
-    <emphasis role="bold">Application Admin Service</emphasis>
-    <para>The Application Admin Service is intended to simplify the management of an environment with many different types of applications 
-    that are simultaneously available.</para>
-  
-    <emphasis role="bold">DMT Admin Service</emphasis>
-    <para>The DMT Admin Service specification defines an API for managing a device using concepts from the OMA DM specifications.</para>
-  
-    <emphasis role="bold">Monitor Admin Service</emphasis>
-    <para>The Monitor Admin Service specification outlines how a bundle can publish Status Variables and how administrative bundles 
-    can discover Status Variables as well as read and reset their values.</para>
-  
-    <emphasis role="bold">Foreign Application Access Specification</emphasis>
-    <para>The Foreign Application Access specification is to enable foreign application models like MIDP, Xlets, Applets, other Java 
-    application models to participate in the OSGi service oriented architecture.</para>
-  
-    <emphasis role="bold">Service Tracker Specification</emphasis>
-    <para>The Service Tracker specification defines a utility class, ServiceTracker, that makes tracking the registration, modification, 
-    and unregistration of services much easier.</para>
-  
-    <emphasis role="bold">XML Parser Service Specification</emphasis>
-    <para>The XML Parser Service specification addresses how the classes defined in JAXP can be used in an OSGi Service Platform.</para>
-  
-    <emphasis role="bold">Position Specification</emphasis>
-    <para>The Position Specification provides bundle developers with a consistent way of handling geographic positions in OSGi applications.</para>
-  
-    <emphasis role="bold">Measurement and State Specification</emphasis>
-    <para>The Measurement and State Specification provides a consistent way of handling a diverse range of measurements for bundle developers.</para>
-  
-    <emphasis role="bold">Execution Environment Specification</emphasis>
-    <para>This Execution Environment Specification defines different execution environments for OSGi Server Platform Servers.</para>
-  </sect1>
-  
-</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/providedservices.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/providedservices.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/providedservices.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,82 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapProvidedServices">
-
-  <title>Provided Bundles and Services</title>
-  
-  <sect1 xml:id="SecLoggingService">  
-    <title>Logging Service</title>
-    
-    <para>The JBossOSGi <emphasis role="bold">jboss-osgi-service-logging.jar</emphasis> bundle contains a simple Logging Bridge Service to
-    <ulink url="http://www.jboss.org/community/docs/DOC-11280">JBoss Logging</ulink>. It registers a trivial LogListener with the 
-    LogReaderService in case that service is registered with the Framework.</para>
-    
-    <itemizedlist>
-      <listitem><ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogListener.html">LogListener</ulink> - Subscribes to LogEntry objects from the LogReaderService</listitem>
-      <listitem><ulink url="http://www.osgi.org/javadoc/r4v41/org/osgi/service/log/LogReaderService.html">LogReaderService</ulink> - Provides methods to retrieve LogEntry objects from the log</listitem>
-    </itemizedlist>
-    
-    <para>The LogReaderService is part of the standard <ulink url="http://www.osgi.org/Download/File?url=/download/r4v41/r4.cmpn.pdf">OSGi 
-    Compendium Services</ulink>. JBossOSGi currently uses the (not yet released) LogService from <ulink url="http://felix.apache.org">Apache Felix</ulink>, 
-    which gets deployed as Bundle <emphasis role="bold">org.apache.felix.log.jar</emphasis></para>
-    
-    <para>The LogListener itself logs messages under the Bundle's symbolic name.</para>
-    
-    <programlisting role="JAVA">
-    public class JBossLoggingLogListener implements LogListener
-    {
-       public void logged(LogEntry entry)
-       {
-          Bundle bundle = entry.getBundle();
-          int level = entry.getLevel();
-          Throwable throwable = entry.getException();
-    
-          String loggerName = bundle.getSymbolicName();
-          Logger log = Logger.getLogger(loggerName);
-          
-          if (level == LogService.LOG_DEBUG)
-             log.debug(entry.getMessage(), throwable);
-          
-          else if (level == LogService.LOG_INFO)
-             log.info(entry.getMessage(), throwable);
-          
-          else if (level == LogService.LOG_WARNING)
-             log.warn(entry.getMessage(), throwable);
-    
-          else if (level == LogService.LOG_ERROR)
-             log.error(entry.getMessage(), throwable);
-       }
-    }
-    </programlisting>
-    
-    <para>You can therefore change the logging for specific Bundles by 
-    <ulink url="http://www.jboss.org/community/docs/DOC-12490">setting the respective logging level</ulink>.</para>  
-  </sect1>
-  
-  <sect1 xml:id="SecMicrocontainerService">  
-    <title>Microcontainer Service</title>
-    
-    <para>JBossOSGi SPI comes with a service that give access to the <ulink url="http://www.jboss.org/jbossmc">JBoss Microcontainer</ulink> Kernel
-    and the JMX <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>. The service is 
-    registered with the Framework under the name</para>
-    
-    <itemizedlist>
-      <listitem><emphasis role="bold">org.jboss.osgi.service.MicrocontainerService</emphasis></listitem>
-    </itemizedlist>
-    
-    <para>Here is an example of how an OSGi component can register an arbitrary MBean with the 
-    <ulink url="http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html">MBeanServer</ulink>.</para>
-    
-    <programlisting role="JAVA">
-    ServiceReference sref = context.getServiceReference(MicrocontainerService.class.getName());
-    if (sref == null)
-      throw new IllegalStateException("MicrocontainerService not registered");
-    
-    MicrocontainerService mcService = (MicrocontainerService)context.getService(sref);
-    MBeanServer mbeanServer = mcService.getMbeanServer();
-    mbeanServer.registerMBean(new Foo(), OBJECT_NAME);
-    </programlisting>
-  </sect1>
-  
-</chapter>

Deleted: projects/jboss-osgi/trunk/build/docbook/en/modules/references.xml
===================================================================
--- projects/jboss-osgi/trunk/build/docbook/en/modules/references.xml	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/build/docbook/en/modules/references.xml	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,27 +0,0 @@
-<!-- 
-  $Id$ 
--->
-<chapter xml:id="ChapReferences">
-
-  <title>References</title>
-  
-  <para><emphasis role="bold">Resources</emphasis></para>
-  
-  <itemizedlist>
-    <listitem><ulink url="http://www.jboss.org/community/docs/DOC-13273">JBossOSGi Wiki</ulink></listitem> 
-    <listitem><ulink url="http://jbossosgi.blogspot.com">JBossOSGi Diary (Blog)</ulink></listitem>
-    <listitem><ulink url="https://jira.jboss.org/jira/browse/JBOSGI">Issue Tracking</ulink></listitem> 
-    <listitem><ulink url="http://jbmuc.dyndns.org:8280/hudson">Hudson QA</ulink></listitem>
-    <listitem><ulink url="https://anonsvn.jboss.org/repos/jbossas/projects/jboss-osgi">Subversion</ulink></listitem> 
-    <listitem><ulink url="http://fisheye.jboss.com/browse/JBossOSGi">Fisheye</ulink></listitem>
-    <listitem><ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=257">User Forum</ulink></listitem> 
-    <listitem><ulink url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=256">Design Forum</ulink></listitem>
-  </itemizedlist>
-  
-  <para><emphasis role="bold">Authors</emphasis></para>
-   
-  <itemizedlist>
-    <listitem><ulink url="email:thomas.diesler at jboss.com">Thomas Diesler</ulink></listitem>
-  </itemizedlist>
-  
-</chapter>

Modified: projects/jboss-osgi/trunk/bundle/common/src/main/java/org/jboss/osgi/common/log/LogServiceTracker.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/common/src/main/java/org/jboss/osgi/common/log/LogServiceTracker.java	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/bundle/common/src/main/java/org/jboss/osgi/common/log/LogServiceTracker.java	2009-04-21 12:25:01 UTC (rev 87622)
@@ -29,8 +29,12 @@
 import org.osgi.util.tracker.ServiceTracker;
 
 /**
- * A basic LogService that writes to System.out
+ * A combined ServiceTracker/LogService that bundles can use to access the registered LogService.
  * 
+ * If a LogService is registered, the LogServiceTracker delegates to that LogService.
+ * If there is no LogService registered, the LogServiceTracker delegates to the {@link SystemLogService} 
+ * 
+ * 
  * @author thomas.diesler at jboss.com
  * @since 11-Apr-2009
  */

Modified: projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/microcontainer/package.html
===================================================================
--- projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/microcontainer/package.html	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/spi/src/main/java/org/jboss/osgi/spi/service/microcontainer/package.html	2009-04-21 12:25:01 UTC (rev 87622)
@@ -1,5 +1,5 @@
 <html>
 <body>
-Service that provides access to the Kernel and MBeanServer.
+Provides access to the Kernel and MBeanServer.
 </body>
 </html>
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/http/bundle/EndpointService.java
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/http/bundle/EndpointService.java	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/http/bundle/EndpointService.java	2009-04-21 12:25:01 UTC (rev 87622)
@@ -28,8 +28,8 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceEvent;
 import org.osgi.framework.ServiceListener;
-import org.osgi.framework.ServiceReference;
 import org.osgi.service.http.HttpService;
+import org.osgi.util.tracker.ServiceTracker;
 
 /**
  * A service that creates an Http context through the HttpService
@@ -39,61 +39,64 @@
  */
 public class EndpointService implements ServiceListener
 {
-  private BundleContext context;
+   private BundleContext context;
 
-  public EndpointService(BundleContext context)
-  {
-    this.context = context;
-    context.addServiceListener(this);
-  }
-  
-  private void registerService()
-  {
-    try
-    {
-      HttpService httpService = getHttpService();
-      
-      Properties initParams = new Properties();
-      initParams.setProperty("initProp", "SomeValue");
-      httpService.registerServlet("/servlet", new EndpointServlet(context), initParams, null);
-      httpService.registerResources("/file", "/res", null);
-    }
-    catch (Exception ex)
-    {
-      throw new RuntimeException("Cannot register context", ex);
-    }
-  }
+   public EndpointService(BundleContext context)
+   {
+      this.context = context;
+      context.addServiceListener(this);
+   }
 
-  private void unregisterService()
-  {
-    HttpService httpService = getHttpService();
-    httpService.unregister("/servlet");
-    httpService.unregister("/file");
-    context.removeServiceListener(this);
-  }
+   private void registerService()
+   {
+      try
+      {
+         HttpService httpService = getHttpService();
 
-  private HttpService getHttpService()
-  {
-    ServiceReference sref = context.getServiceReference(HttpService.class.getName());
-    if (sref == null)
-      throw new IllegalStateException("HttpService not registered");
-    
-    return (HttpService)context.getService(sref);
-  }
-
-  public void serviceChanged(ServiceEvent event)
-  {
-    Object service = context.getService(event.getServiceReference());
-    if (service == this)
-    {
-      if (event.getType() == ServiceEvent.REGISTERED)
+         Properties initParams = new Properties();
+         initParams.setProperty("initProp", "SomeValue");
+         httpService.registerServlet("/servlet", new EndpointServlet(context), initParams, null);
+         httpService.registerResources("/file", "/res", null);
+      }
+      catch (Exception ex)
       {
-        registerService();
+         throw new RuntimeException("Cannot register context", ex);
       }
-      else if (event.getType() == ServiceEvent.UNREGISTERING)
+   }
+
+   private void unregisterService()
+   {
+      HttpService httpService = getHttpService();
+      httpService.unregister("/servlet");
+      httpService.unregister("/file");
+      context.removeServiceListener(this);
+   }
+
+   private HttpService getHttpService()
+   {
+      ServiceTracker tracker = new ServiceTracker(context, HttpService.class.getName(), null);
+      tracker.open();
+      
+      HttpService service = (HttpService)tracker.getService();
+      if (service == null)
+         throw new IllegalStateException("HttpService not registered");
+      
+      return service;
+   }
+
+   public void serviceChanged(ServiceEvent event)
+   {
+      Object service = context.getService(event.getServiceReference());
+      if (service == this)
       {
-        unregisterService();
+         if (event.getType() == ServiceEvent.REGISTERED)
+         {
+            registerService();
+         }
+         else if (event.getType() == ServiceEvent.UNREGISTERING)
+         {
+            unregisterService();
+         }
       }
-    }
-  }
+   }
 }

Modified: projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/log/LogServiceTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/log/LogServiceTestCase.java	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/log/LogServiceTestCase.java	2009-04-21 12:25:01 UTC (rev 87622)
@@ -44,12 +44,12 @@
 public class LogServiceTestCase extends OSGiTest
 {
    private LogEntryCache logEntryCache;
-   
+
    @Override
    protected void setUp() throws Exception
    {
       super.setUp();
-      
+
       logEntryCache = new LogEntryCache(new LogEntryFilter("example-log(.*)", LogService.LOG_INFO, "\\[ServiceA\\](.*)"));
       startLogEntryTracking(logEntryCache);
    }
@@ -71,16 +71,16 @@
       URL testURL = getTestArchiveURL("example/example-log.jar");
       Bundle bundleA = sysContext.installBundle(testURL.toExternalForm());
       bundleA.start();
-      
+
       // Verify that the bundle is active
       assertEquals("Test bundle ACTIVE", Bundle.ACTIVE, bundleA.getState());
-      
+
       // Wait a little for the asynchronous log entry to arrive
       Thread.sleep(200);
-      
+
       // Uninstall the test bundle
       bundleA.uninstall();
-      
+
       // Verify the received log entries
       List<LogEntry> entries = logEntryCache.getLog();
       assertEquals("Number of entries", 1, entries.size());

Modified: projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/microcontainer/bundle/MBeanTestService.java
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/microcontainer/bundle/MBeanTestService.java	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/java/org/jboss/test/osgi/example/microcontainer/bundle/MBeanTestService.java	2009-04-21 12:25:01 UTC (rev 87622)
@@ -28,11 +28,10 @@
 
 import org.jboss.osgi.spi.management.ObjectNameFactory;
 import org.jboss.osgi.spi.service.microcontainer.MicrocontainerService;
-import org.jboss.test.osgi.example.microcontainer.bundle.Foo;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceEvent;
 import org.osgi.framework.ServiceListener;
-import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
 
 /**
  * A service that registers an MBean
@@ -82,11 +81,14 @@
 
   private MicrocontainerService getMicrocontainerService()
   {
-    ServiceReference sref = context.getServiceReference(MicrocontainerService.class.getName());
-    if (sref == null)
-      throw new IllegalStateException("MicrocontainerService not registered");
-    
-    return (MicrocontainerService)context.getService(sref);
+     ServiceTracker tracker = new ServiceTracker(context, MicrocontainerService.class.getName(), null);
+     tracker.open();
+     
+     MicrocontainerService service = (MicrocontainerService)tracker.getService();
+     if (service == null)
+        throw new IllegalStateException("MicrocontainerService not registered");
+     
+     return service;
   }
 
   public void serviceChanged(ServiceEvent event)

Modified: projects/jboss-osgi/trunk/testsuite/example/src/test/resources/example/http/example-http.bnd
===================================================================
--- projects/jboss-osgi/trunk/testsuite/example/src/test/resources/example/http/example-http.bnd	2009-04-21 11:11:20 UTC (rev 87621)
+++ projects/jboss-osgi/trunk/testsuite/example/src/test/resources/example/http/example-http.bnd	2009-04-21 12:25:01 UTC (rev 87622)
@@ -3,7 +3,4 @@
 Bundle-SymbolicName: example-http
 Bundle-Activator: org.jboss.test.osgi.example.http.bundle.ServiceActivator
 Export-Package: org.jboss.test.osgi.example.http.bundle
-Include-Resource: res/message.txt=message.txt
-
-# For some reason this does not work
-# Include-Resource: src/test/resources/service/http/message.txt
\ No newline at end of file
+Include-Resource: res/message.txt=message.txt
\ No newline at end of file




More information about the jboss-cvs-commits mailing list