SMX4-616: User guide - introduction and architecture (thanks to Marcelo Jabali)

git-svn-id: https://svn.apache.org/repos/asf/servicemix/documentation/trunk@1209288 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/webapp/users-guide/getting-started/what-is-smx4.conf b/src/main/webapp/users-guide/getting-started/what-is-smx4.conf
index ec887a6..7bcec3f 100644
--- a/src/main/webapp/users-guide/getting-started/what-is-smx4.conf
+++ b/src/main/webapp/users-guide/getting-started/what-is-smx4.conf
@@ -25,49 +25,75 @@
 ServiceMix includes many JBI components including HTTP, JMX, CXF, BPEL, etc.
 
 h3. OSGi for Dummies
-// TODO: write this bit
+[OSGi technology|http://www.osgi.org/About/Technology] is the dynamic module system for [Java|http://www.oracle.com/technetwork/java/index.html]. The OSGi Service Platform provides functionality to Java that makes Java the premier environment for software integration and thus for development. Java provides the portability that is required to support products on many different platforms. The OSGi technology provides the standardized primitives that allow applications to be constructed from small, reusable and collaborative components. These components can be composed into an application and deployed.
 
-h3. Kernel of ServiceMix
-// TODO: write this bit
+The OSGi Service Platform provides the functions to change the composition dynamically on the device of a variety of networks, without requiring restarts. To minimize the coupling, as well as make these couplings managed, the OSGi technology provides a service-oriented architecture that enables these components to dynamically discover each other for collaboration. The OSGi Alliance has developed many standard component interfaces for common functions like HTTP servers, configuration, logging, security, user administration, XML and many more. Plug-compatible implementations of these components can be obtained from different vendors with different optimizations and costs. However, service interfaces can also be developed on a proprietary basis.
+
+OSGi technology adopters benefit from improved time-to-market and reduced development costs because OSGi technology provides for the integration of pre-built and pre-tested component subsystems. The technology also reduces maintenance costs and enables unique new aftermarket opportunities because components can be dynamically delivered to devices in the field.
+
+For more information, check out the [OSGi Alliance website|http://www.osgi.org/Main/HomePage]
+
+h3. Powered by Apache Karaf
+Apache ServiceMix is based on [Apache Karaf|http://karaf.apache.org/]. Apache Karaf is a small [OSGi-based|http://www.osgi.org/Main/HomePage] runtime which provides a lightweight container onto which various components and applications can be deployed.
+
+Here is a short list of features supported by the Karaf:
+
+Hot deployment: Karaf supports hot deployment of OSGi bundles by monitoring jar files inside the $home/deploy directory. Each time a jar is copied in this folder, it will be installed inside the runtime. You can then update or delete it and changes will be handled automatically. In addition, the Karaf also supports exploded bundles and custom deployers (blueprint and spring ones are included by default).
+
+Dynamic configuration: Services are usually configured through the ConfigurationAdmin OSGi service. Such configuration can be defined in Karaf using property files inside the $home/etc directory. These configurations are monitored and changes on the properties files will be propagated to the services.
+
+Logging System: using a centralized logging back end supported by Log4J, Karaf supports a number of different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi)
+
+Provisioning: Provisioning of libraries or applications can be done through a number of different ways, by which they will be downloaded locally, installed and started.
+
+Native OS integration: Karaf can be integrated into your own Operating System as a service so that the lifecycle will be bound to your Operating System.
+
+Extensible Shell console: Karaf features a nice text console where you can manage the services, install new applications or libraries and manage their state. This shell is easily extensible by deploying new commands dynamically along with new features or applications.
+
+Remote access: use any SSH client to connect to Karaf and issue commands in the console 
+
+Security framework based on JAAS
+
+Managing instances: Karaf provides simple commands for managing multiple instances. You can easily create, delete, start and stop instances of Karaf through the console.
+
+For more information, check out the [Apache Karaf project page|http://karaf.apache.org/]
 
 h3. JBI Container & Integration with OSGI
 // TODO: write this bit
 
-h3. Normalized Message Router</title>
-// TODO: write this bit
+h3. Normalized Message Router
+The Normalized Message Router (NMR) is a general-purpose message bus used for communication between bundles in the OSGi container.
+It's modeled after the Normalized Message Router (NMR) defined in the Java Business Integration (JBI) specification ([http://www.jcp.org/en/jsr/detail?id=208]).
 
-h3. Camel
-// TODO: write this bit
+It can be used to transport XML messages as well as other message body types, optionally augumented with headers and attachments.
+
+For more information, check out the [Using the Normalized Message Router User Guide|../nmr/index.html]
+
+h3. Apache Camel
+Apache Camel is a powerful open source integration framework based on known [Enterprise Integration Patterns|http://camel.apache.org/enterprise-integration-patterns.html] with powerful [Bean Integration|http://camel.apache.org/bean-integration.html].
+
+Apache Camel lets you create the [Enterprise Integration Patterns|http://camel.apache.org/enterprise-integration-patterns.html] to implement routing and mediation rules in either a Java based [Domain Specific Language (or Fluent API)|http://camel.apache.org/dsl.html], via [Spring based Xml Configuration|http://camel.apache.org/spring.html] files or via the [Scala DSL|http://camel.apache.org/scala-dsl.html].
+
+For more information, check out the [Using Apache Camel in ServiceMix User Guide|../camel/index.html].
 
 h3. Services proposed
 // TODO: write this bit
 
-h4. Queuing engine : Apache ActiveMq
-// TODO: write this bit
+h4. Message Broker : Apache ActiveMQ
+Apache ServiceMix ships with an embedded instance of [Apache ActiveMQ|http://activemq.apache.org] out-of-the-box.
+
+It is a fully functional Apache ActiveMQ message broker instance listening for [TCP|http://activemq.apache.org/openwire.html] connections on port 61616 and [STOMP|http://activemq.apache.org/stomp.html] connections on port 61613.
+
+The [default configuration for the Apache ActiveMQ|http://activemq.apache.org/xml-configuration.html] message broker resides in the ServiceMix installation directory under the etc sub-directory. The ActiveMQ configuration file is named activemq-broker.xml. It's configured with reasonable default information like [Persistence (KahaDB)|http://activemq.apache.org/persistence.html] and [Producer Flow Control|http://activemq.apache.org/producer-flow-control.html] (essentially to make sure the broker does not run out of memory).
+
+The configuration file also makes use of a reusable connection pool available to all OSGi bundles exposing a [javax.jms.ConnectionFactory|http://docs.oracle.com/javaee/1.4/api/javax/jms/ConnectionFactory.html] as a service for consumption. You can re-use this connection pool via tools such as [spring-dm or blueprint|http://activemq.apache.org/osgi-integration.html].
+
+The ActiveMQ message broker allows several components such as servicemix-cluster, [camel-jms|http://camel.apache.org/jms.html], [camel-activemq|http://camel.apache.org/activemq.html], [cxf-jms transport|http://cxf.apache.org/docs/jms-transport.html] to be utilized without any additional configuration.
 
 h4. Transaction : Geronimo Transaction Manager
 // TODO: write this bit
 
 h4. Routing and Mediation : Apache Camel
-An Apache ServiceMix default installation out of the box embeds an Apache ActiveMQ instance.
-It is a fully functional activeMQ instance listening for
-
-  * TCP on port 61616
-  * STOMP on port 61613
-
-The default configuration resides in the etc directory under your servicemix installation,
-the file in question is called activemq-broker.xml. It sets up reasonable defaults for
-
-* Persistence - KahaDB
-* Producer flow control - essentially to make sure the broker does not run out of memory
-
-The file also configures a reusable connection pool available to all OSGi bundles exposing a
-javax.jms.ConnectionFactory as a service for consumption.
-
-You can re-use this connection pool via tools such as spring-dm or blueprint.
-
-The ActiveMQ broker allows several components such as servicemix-cluster, camel-jms, camel-activemq,
-cxf jms transport to be utilized without any additional effort.
 
 h4. Web Services : Apache CXF
 // TODO: write this bit