You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2008/01/14 12:34:21 UTC

svn commit: r611774 - in /webservices/synapse/branches/1.1.1/src/site/resources: Synapse_Configuration_Language.html images/ images/synapse-flow.png images/synapse-logo-web2.png

Author: asankha
Date: Mon Jan 14 03:34:19 2008
New Revision: 611774

URL: http://svn.apache.org/viewvc?rev=611774&view=rev
Log:
update synapse configuration language syntax document

Added:
    webservices/synapse/branches/1.1.1/src/site/resources/images/
    webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-flow.png   (with props)
    webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-logo-web2.png   (with props)
Modified:
    webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Configuration_Language.html

Modified: webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Configuration_Language.html
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Configuration_Language.html?rev=611774&r1=611773&r2=611774&view=diff
==============================================================================
--- webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Configuration_Language.html (original)
+++ webservices/synapse/branches/1.1.1/src/site/resources/Synapse_Configuration_Language.html Mon Jan 14 03:34:19 2008
@@ -115,6 +115,25 @@
         background-color: #f0f0f0;
         padding: 2px;
         margin: 18px 0px 4px 0px;
+    }
+    .data-table{
+        font-family:Verdana,Arial,Helvetica,sans-serif;
+        font-size:11px;
+        border:0px;
+        margin:0px;
+        border:solid 1px #cdcdcd;
+    }
+    .data-table th{
+        background-color:#eeeeee;
+        border-bottom:solid 1px #8d8d8d;
+        padding-top:5px;
+        padding-left:3px;
+        text-align:left;
+    }
+    .data-table td{
+        padding-top:4px;
+        padding-left:3px;
+        border-bottom:solid 1px #e1e1e1;
     }</style>
 </head>
 
@@ -141,9 +160,9 @@
 configuration from development, through QA, staging and into production). The
 configuration files that drives the Synapse ESB are as follows:</p>
 <ul>
-  <li>The Synapse cnfiguration file - synapse.xml</li>
+  <li>The Synapse configuration file - synapse.xml</li>
   <li>The underlying Axis2 engine configuration file - axis2.xml</li>
-  <li>Resourced referenced from the Registry</li>
+  <li>Resources referenced from the Registry</li>
 </ul>
 
 <p>While the axis2.xml configures the underlying transport and Web services
@@ -180,7 +199,8 @@
 
 <p>The Synapse ESB can operate in two modes:</p>
 
-<h3>Service mediation / <a href="#proxy">Proxy services</a></h3>
+<h3><a href="#service_mediation">Service mediation</a> / <a
+href="#proxy">Proxy services</a></h3>
 
 <p>In Service mediation, the Synapse ESB exposes a service endpoint on the
 ESB, that accepts messages from clients. Typically these services acts as
@@ -196,7 +216,7 @@
 other transports such as JMS and VFS file systems - e.g. CSV content being
 the payload</p>
 
-<h3>Message mediation</h3>
+<h3><a name="#message_mediation">Message mediation</a></h3>
 
 <p>In Message mediation, Synapse can act as a transparent proxy for clients -
 if they are directed to point to the Synapse ESB as a http proxy. This way,
@@ -217,7 +237,7 @@
 full access to a message at the point where it is defined to gain control,
 and could inspect the message, modify it or take an external action depending
 on some attributes or values of the current message. A mediation sequence,
-commonly called a 'sequence' is a list of such mediatiors. A sequence may be
+commonly called a 'sequence' is a list of such mediators. A sequence may be
 named for re-use, or defined in-line or anonymously within a configuration.
 Sequences may be defined within the synapse.xml configuration or within the
 Registry. Writing a custom mediator in Java is easy and the supplementary
@@ -234,9 +254,9 @@
 the payload and any error/exception encountered and stop further processing.
 The 'fault' sequence executes whenever Synapse itself encounters an error
 while processing a message - or when a fault handler has not been defined to
-handle exceptions. A sequence can assign another named sequence as its "faut"
-handler sequence, and control branches to the fault handler if an error is
-encountered during the execution of the initial sequence.</p>
+handle exceptions. A sequence can assign another named sequence as its
+"fault" handler sequence, and control branches to the fault handler if an
+error is encountered during the execution of the initial sequence.</p>
 
 <h3><a href="#endpoint">Endpoints</a></h3>
 
@@ -263,7 +283,7 @@
 href="#localEntry">Local Registry (Local Entries)</a></h3>
 
 <p>A Synapse configuration can refer to an external Registry / Repository for
-resources used such as WSDL's, Schmeas, Scripts, XSLT or XQuery
+resources used such as WSDL's, Schemas, Scripts, XSLT or XQuery
 transformations etc. One or more remote registries may be hidden or merged
 behind a local Registry interface defined to a Synapse configuration.
 Resources from an external registry are looked up using "keys" - which are
@@ -278,7 +298,7 @@
 certain "keys" to map to locally defined entities. These entities may refer
 to a source URL or file, or defined as in-line XML or text within the
 configuration itself. If a Registry contains a resource whose "key" matches
-the key of a localy defined entry, the local entry shadows the resource
+the key of a locally defined entry, the local entry shadows the resource
 available in the Registry. Thus it is possible to override Registry resources
 locally from within a configuration. To integrate Synapse with a custom / new
 Registry or repository, one needs to implement the
@@ -289,7 +309,7 @@
 
 <p>The axis2.xml file configures the underlying Axis2 web services engine for
 the Synapse ESB. The axis2.xml thus defines the transports enabled, and other
-configuration parameters associated. A change to the axis2 configuation
+configuration parameters associated. A change to the axis2 configuration
 requires a hard re-start of the Synapse ESB. By default the non-blocking
 http/s and the Apache VFS file system based transport are enabled for
 listening of messages, while the non-blocking http/s, VFS and JMS transports
@@ -342,7 +362,7 @@
 allowed to dynamically change over time.</p>
 
 <p>Synapse ships with a built-in URL based registry implementation called the
-"SimpleURLRegistry" and this can be configued as follows:</p>
+"SimpleURLRegistry" and this can be configured as follows:</p>
 <pre>e.g.
 &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry"&gt;
   &lt;parameter name="root"&gt;file:./repository/conf/sample/resources/&lt;/parameter&gt;
@@ -350,7 +370,7 @@
 &lt;/registry&gt;</pre>
 
 <p>The "root" parameter specifies the root URL of the Registry for loaded
-resources. The SimpleURLRegistr keys are path fragments, that when combined
+resources. The SimpleURLRegistry keys are path fragments, that when combined
 with the root prefix would form the full URL for the referenced resource. The
 "cachableDuration" parameter specifies the number of milliseconds for which
 resources loaded from the Registry should be cached. More advanced registry
@@ -369,7 +389,7 @@
 <p>These entries are top level entries which are globally visible within the
 entire system. Values of these entries can be retrieved via the extension
 XPath function "synapse:get-property(prop-name)" and the keys of these
-entries could be specified whereever a registry key is expected within the
+entries could be specified wherever a registry key is expected within the
 configuration.</p>
 
 <p>An entry can be static text specified as inline text or static XML
@@ -389,12 +409,13 @@
 
 <p>A &lt;sequence&gt; element is used to define a sequence of mediators that
 can be invoked later by name. The sequences named "main" and "fault" has
-special significance in a Synapse configuation. The "main" sequence handles
-any message that is accepted for 'Message Mediation', and the "fault"
-sequence is invoked if Synapse encounters a fault, and a custom fault handler
-is not specified for the sequence via its "onError" attribute. If the "main"
-or "fault" sequences are not defined locally or not found in the Registry,
-the Synapse ESB defines suitable defaults at initialization.</p>
+special significance in a Synapse configuration. The "main" sequence handles
+any message that is accepted for '<a href="#message_mediation">Message
+Mediation</a><a>', and the "fault" sequence is invoked if Synapse encounters
+a fault, and a custom fault handler is not specified for the sequence via its
+"onError" attribute. If the "main" or "fault" sequences are not defined
+locally or not found in the Registry, the Synapse ESB defines suitable
+defaults at initialization.</a></p>
 
 <p>A Dynamic Sequence may be defined by specifying a key reference to a
 registry entry. As the remote registry entry changes, the sequence will
@@ -404,7 +425,7 @@
 step to the trace.log file configured via the log4j.properties configuration.
 Setting the trace log level to TRACE would additionally dump the message and
 detailed trace information at each mediation step. A tracing enabled sequence
-propogates this setting to invoked sub-sequences.</p>
+propagates this setting to invoked sub-sequences.</p>
 <pre> &lt;sequence name="string" [onError="string"] [key="string"] [trace="enable"]&gt;
    mediator*
  &lt;/sequence&gt;</pre>
@@ -429,14 +450,15 @@
 &lt;/endpoint&gt; </pre>
 
 <p>All above endpoint types can have a name attribute, and such named
-endpoints can be refered by other endpoints, through the key attribute. For
+endpoints can be reffered by other endpoints, through the key attribute. For
 example if there is an endpoint named as "foo", the following endpoint can be
 used in any place, where "foo" has to be used.</p>
 <pre>&lt;endpoint key="foo"/&gt;</pre>
-The "trace" attribute turns on detailed trace information for messages being
-sent to the endpoint. These are available in the trace.log configured via the
-log4j.properties file. Setting the trace log level to TRACE will dump
-detailed trace information including message payloads.
+
+<p>The "trace" attribute turns on detailed trace information for messages
+being sent to the endpoint. These are available in the trace.log configured
+via the log4j.properties file. Setting the trace log level to TRACE will dump
+detailed trace information including message payloads. </p>
 
 <h4><a name="address-endpoint">Address Endpoint</a></h4>
 
@@ -453,17 +475,25 @@
 failed. If this attribute is not specified, endpoint will never be recovered
 after a failure.</p>
 
-<p></p>
-
-<p>Address endpoints can timeout the responses if they failed to arrive
-Synapse in predefined time duration. This is done by the timeout elements.
-duration element inside the timeout element contains duration for the timeout
-in seconds. action element specifies the action to be performed once a
-timeout occurs. Allowed actions are discard and fault. If discard is
-specified, responses arriving after the timeout will be discarded without
-further processing. If fault is specified as the action, fault sequence
-applicable for the endpoint will be activated as soon as the timeout occurs
-and responses will not be processed after that.</p>
+<p>Address endpoints can timeout if responses fail to arrive at Synapse by a
+predefined timeout-duration specified in seconds. The timeout action
+specifies whether to discard responses that arrives late, or to trigger a
+fault. Synapse has a periodic timeout handler that triggers itself at each 15
+second interval. Thus endpoint timeouts will have a +/- error on actual
+trigger time. Though this can be minimized by setting a System property
+"synapse.timeout_handler_interval" to a millisecond duration below the
+desired endpoint timeout, care must be taken as a lesser value may have a
+higher overhead on the system. </p>
+
+<p>An endpoint that fails may be suspended for a specified duration after
+such a failure, during which new messages will not be processed through the
+endpoint. The 'suspendDurationOnFailure' could specify an optional value in
+seconds for which this endpoint should be suspended.</p>
+
+<p>QoS aspects such as WS-RM and WS-Security and WS-Addressing may be enabled
+on messages sent to an endpoint using the enableRM, enableSec and
+enableAddressing elements. Optionally, the WS-RM and WS-Security policies
+could be specified using the 'policy' attributes.</p>
 <pre>&lt;address uri="endpoint-address" format="soap11|soap12|pox|get" [optimize="mtom|swa"]&gt;
   &lt;enableRM [policy="key"]/&gt;?
   &lt;enableSec [policy="key"]/&gt;?
@@ -475,38 +505,25 @@
   &lt;/timeout&gt;?
 &lt;/address&gt;</pre>
 
-<p>Following are some sample uri definitions.</p>
-
-<p>HTTP</p>
-<pre>http://localhost:9000/soap/SimpleStockQuoteService</pre>
-
-<p>JMS full definition</p>
-<pre>jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=topic</pre>
-
-<p>JMS connection factory reference which is defined in JMSListener of
-axis2.xml as a parameter</p>
-<pre>jms:/SimpleStockQuoteService?transport.jms.ConnectionFactory=myQueueConnectionFactory</pre>
-
-<p>SMTP</p>
-<pre>mailto:guest@host</pre>
-
-<p>Directory</p>
-<pre>vfs:file:///home/user/directory</pre>
-
-<p>File</p>
-<pre>vfs:file:///home/user/file</pre>
-
-<p>FTP</p>
-<pre>vfs:ftp://guest:guest@localhost/directory?vfs.passive=true</pre>
+<p>Following are some sample address URI definitions.</p>
+<pre>e.g.
+HTTP   http://localhost:9000/soap/SimpleStockQuoteService
+JMS     jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;
+              java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;
+              java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=topic
+Mail    mailto:guest@host
+File     vfs:file:///home/user/directory
+           vfs:file:///home/user/file
+           vfs:ftp://guest:guest@localhost/directory?vfs.passive=true</pre>
 
 <h4><a name="wsdl-endpoint">WSDL Endpoint</a></h4>
 
-<p>WSDL endpoint is an endpoint based on a WSDL document. It can extract the
-target EPR from a given WSDL. The WSDL document can be specified either as a
-URI or as an inlined definition within the configuration. The service and
-port name containing the target EPR has to be specified in service and port
+<p>WSDL endpoint is an endpoint definition based on a specified WSDL
+document. The WSDL document can be specified either as a URI or as an inlined
+definition within the configuration. The service and port name containing the
+target EPR has to be specified with the 'service' and 'port' (or 'endpoint')
 attributes respectively. enableRM, enableSec, enableAddressing,
-suspendDurationOnFailure and timeout elements are same as for the Address
+suspendDurationOnFailure and timeout elements are same as for an Address
 endpoint.</p>
 <pre>&lt;wsdl [uri="wsdl-uri"] service="qname" port/endpoint="qname"&gt;
   &lt;wsdl:definition&gt;...&lt;/wsdl:definition&gt;?
@@ -529,23 +546,22 @@
 specifies the load balance policy (algorithm) to be used for selecting the
 target endpoint. Currently only the roundRobin policy is supported. failover
 attribute determines if the next endpoint should be selected once the
-currently selected endpoint has failed. Default is true. The set of endpoints
-among which the load is distributed can be listed under the loadBalance
-element. Those endpoints can belong to any endpoint type mentioned in this
-document. For example, failover endpoints can be listed inside the load
-balance endpoint to load balance between failover groups.</p>
-
-<p></p>
+currently selected endpoint has failed, and defaults to true. The set of
+endpoints among which the load is distributed can be listed under the
+'loadBalance' element. Those endpoints can belong to any endpoint type
+mentioned in this document. For example, failover endpoints can be listed
+inside the load balance endpoint to load balance between failover groups
+etc.</p>
 
-<p>The optional session element makes the endpoint a session affinity based
+<p>The optional 'session' element makes the endpoint a session affinity based
 load balancing endpoint. If it is specified, sessions are bound to endpoints
 in the first message and all successive messages for those sessions are
-directed to their associated endpoints. http sessions are supported
-currently, which identifies sessions based on http cookies. failover
+directed to their associated endpoints. Only http sessions are currently
+supported, and identifies sessions based on http cookies. The 'failover'
 attribute mentioned above is not applicable for session affinity based
-endpoints and it is always set to false. If it is required to have failover
-behavior in session affinity based load balance endpoints, list failover
-endpoints as the target endpoints.</p>
+endpoints and it is always considered as set to false. If it is required to
+have failover behavior in session affinity based load balance endpoints, list
+failover endpoints as the target endpoints.</p>
 <pre>&lt;session type="http"/&gt;?
 &lt;loadBalance [policy="roundRobin"] [failover="true|false"]&gt;
   &lt;endpoint .../&gt;+
@@ -554,12 +570,12 @@
 <h4><a name="fail-over-endpoint">Failover Endpoint</a></h4>
 
 <p>Failover endpoints send messages to the listed endpoints with the
-following failover behavior. At the start, first listed endpoint is selected
-as the primary and all other endpoints are treated as backups. Incoming
-messages are always sent only to the primary endpoint. If the primary
-endpoint fails, next active endpoint is selected as the primary and failed
-endpoint is marked as inactive. Thus it sends messages successfully as long
-as there is at least one active endpoint among the listed endpoints.</p>
+following failover behavior. At the start, the first listed endpoint is
+selected as the primary and all other endpoints are treated as backups.
+Incoming messages are always sent only to the primary endpoint. If the
+primary endpoint fails, next active endpoint is selected as the primary and
+failed endpoint is marked as inactive. Thus it sends messages successfully as
+long as there is at least one active endpoint among the listed endpoints.</p>
 <pre>&lt;failover&gt;
   &lt;endpoint .../&gt;+
 &lt;/failover&gt;</pre>
@@ -567,7 +583,7 @@
 <h2><a name="proxy">Proxy service</a></h2>
 
 <p>A &lt;proxy&gt; element is used to define a Synapse Proxy service.</p>
-<pre> &lt;proxy name="string" [transports="(http |https |jms )+|all"] [pinnedServers="(serverName)+"]&gt;
+<pre> &lt;proxy name="string" [transports="(http |https |jms |.. )+|all"] [pinnedServers="(serverName )+"]&gt;
    &lt;description&gt;...&lt;/description&gt;?
    &lt;target [inSequence="name"] [outSequence="name"] [faultSequence="name"] [endpoint="name"]&gt;
       &lt;inSequence&gt;...&lt;/inSequence&gt;?
@@ -577,33 +593,33 @@
    &lt;/target&gt;?
    &lt;publishWSDL key="string" uri="string"&gt;
       &lt;description&gt;...&lt;/description&gt; | &lt;definitions&gt;...&lt;/definitions&gt; 
-   &lt;publishWSDL&gt;?
-   &lt;enableSec/&gt;?                            // These two tags will removed after the recognition of the Security and RM can be done by looking at policy
+   &lt;/publishWSDL&gt;?
+   &lt;enableSec/&gt;?                            
    &lt;enableRM/&gt;?
-   &lt;policy key="string"&gt;...&lt;/policy&gt;?       // optional service level policies
-                                            // (e.g. WS-Security and/or WS-RM policies)
-   &lt;parameter name="string"&gt;                // optional service parameters
-      string | xml                          // (e.g. transport.jms.ConnectionFactory)
+   &lt;policy key="string"&gt;...&lt;/policy&gt;?       // optional service level policies such as (e.g. WS-Security and/or WS-RM policies)
+   &lt;parameter name="string"&gt;                 // optional service parameters such as (e.g. transport.jms.ConnectionFactory)
+      string | xml                         
    &lt;/parameter&gt;
  &lt;/proxy&gt;</pre>
 
 <p>A proxy service is created and exposed on the specified transports through
-the underlying Axis2 instance, exposing service EPR's as per the standard
-Axis2 conventions - based on the service name. (Note: that currently Axis2
-does not allow custom URI's to be set for services on some transports.) The
-Proxy service could be exposed over all enabled Axis2 transports such as
-http, https, JMS etc. or on a subset of these. </p>
+the underlying Axis2 engine, exposing service EPR's as per the standard Axis2
+conventions - based on the service name. (Note: that currently Axis2 does not
+allow custom URI's to be set for services on some transports such as http/s)
+The Proxy service could be exposed over all enabled Axis2 transports such as
+http, https, JMS, Mail and File etc. or on a subset of these as specified
+with the optional 'transports' attribute.</p>
 
 <p>You can give a list of synapse server names where this proxy service
-should be deployed using pinnedServers attribute.  It takes the server names
-separated by comma or space character. If there is no pinned server list then
-proxy service will start in all server instances.  If a pinned server names
-list is given it will only start in the given named Synapse server instances.
-The Synapse server name is taken as follows. First it looks for the system
-property SynapseServerName.  If it is not found it will take the hostname of
-the machine. Otherwise it will default to name 'localhost'. You can give a
-name to the starting Synapse server instance using ./synapse.sh
--DSynapseServerName=&lt;ServerName&gt;</p>
+should be deployed using 'pinnedServers' attribute.  It takes the server
+names separated by comma or space character. If there is no pinned server
+list then proxy service will be started in all server instances.  If a pinned
+server names list is given it will only start in the given named Synapse
+server instances. The Synapse server name picked up from the system property
+'SynapseServerName', failing which the hostname of the machine would be used
+or default to 'localhost'. You can give a name to a Synapse server instance
+as ./synapse.sh -DSynapseServerName=&lt;ServerName&gt; or by editing the
+wrapper.conf where Synapse is started as a service.</p>
 
 <p>Each service could define the target for received messages as a named
 sequence or a direct endpoint. Target inSequence or endpoint is required for
@@ -612,29 +628,30 @@
 policies, and any service parameters could be passed into the proxy services'
 AxisService instance using the parameter elements (e.g. the JMS destination
 etc). If the proxy service should enable WS-Reliable Messaging or Security,
-the appropriate modules could be engaged, and specified policies will
-apply.</p>
+the appropriate modules could be engaged, and specified service level
+policies will apply.</p>
 
 <p>A Dynamic Proxy may be defined by specifying the properties of the proxy
 as dynamic entries by refering them with the key. (For example one could
-specify the inSequence or endpoint with the remote key, without defining it
-in the local configuration) As the remote registry entry changes, the
-properties of the proxy will dynamically be updated accordingly. (Note: proxy
-service definition itself can not be specified to be dynamic; i.e &lt;proxy
+specify the inSequence or endpoint with a remote key, without defining it in
+the local configuration) As the remote registry entry changes, the properties
+of the proxy will dynamically be updated accordingly. (Note: proxy service
+definition itself can not be specified to be dynamic; i.e &lt;proxy
 key="string"/&gt; is wrong)</p>
 
 <p></p>
 
-<p>Transport specific parameters</p>
+<p>Transport specific parameters that may be set as service parameters:</p>
 
-<table border="1" style="width: 100%">
+<table border="0" cellpadding="0" cellspacing="0" style="width: 100%"
+class="data-table">
   <caption></caption>
   <tbody>
     <tr>
-      <td>Transport</td>
-      <td>Require</td>
-      <td>Parameter</td>
-      <td>Description</td>
+      <th>Transport</th>
+      <th>Require</th>
+      <th>Parameter</th>
+      <th>Description</th>
     </tr>
     <tr>
       <td>JMS</td>
@@ -760,22 +777,19 @@
   </tbody>
 </table>
 
-<p>*VFS Transport URI examples</p>
-
-<p>file:///directory/filename.ext</p>
-
-<p>file:////somehost/someshare/afile.txt</p>
-
-<p>jar:../lib/classes.jar!/META-INF/manifest.mf</p>
-
-<p>jar:zip:outer.zip!/nested.jar!/somedir</p>
-
-<p>ftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz[?vfs.passive=true]</p>
+<p>VFS Transport URI examples (See <a
+href="http://commons.apache.org/vfs/filesystems.html">http://commons.apache.org/vfs/filesystems.html
+for more samples</a>)</p>
+<pre>file:///directory/filename.ext
+file:////somehost/someshare/afile.txt
+jar:../lib/classes.jar!/META-INF/manifest.mf
+jar:zip:outer.zip!/nested.jar!/somedir
+ftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz[?vfs.passive=true]</pre>
 
 <h2><a name="task">Tasks</a></h2>
 
 <p>A &lt;task&gt; element is used to define a Synapse Startup Task.</p>
-<pre> &lt;task class="org.my.synapse.Task" name="string" [pinnedServers="(serverName)+"]&gt;
+<pre> &lt;task class="mypackage.MyTask" name="string" [pinnedServers="(serverName)+"]&gt;
    &lt;property name="stringProp" value="String"/&gt;
    &lt;property name="xmlProp"&gt;
      &lt;somexml&gt;config&lt;/somexml&gt;
@@ -783,8 +797,8 @@
    &lt;trigger ([[count="10"]? interval="1000"] | [cron="0 * 1 * * ?"] | [once=(true | false)])/&gt;
  &lt;/task&gt;</pre>
 
-<p>A task is created and scheduled to run at the specified time intervals or
-as specified by the cron expression. The Task class specifies the actual task
+<p>A task is created and scheduled to run at specified time intervals or as
+specified by the cron expression. The Task class specifies the actual task
 implementation class (which must implement org.apache.synapse.startup.Task
 interface) to be executed at the specified interval/s, and name specifies an
 identifier for the scheduled task. </p>
@@ -793,7 +807,7 @@
 literals or as XML fragments. (For example; if the task implementation class
 has a field named "version" with a corresponding setter method, the
 configuration value which will be assigned to this field before running the
-task can be specified using a property with the name version)</p>
+task can be specified using a property with the name 'version')</p>
 
 <p>There are three different trigger mechanisms to schedule tasks. A simple
 trigger is specified specifying a 'count' and an 'interval', implying that
@@ -804,41 +818,47 @@
 just after the initialization of Synapse</p>
 
 <p>You can give a list of synapse server names where this task should be
-started using pinnedServers attribute.  It takes the server names separated
-by comma or space character. If there is no pinned server list then task will
-start in all server instances.  If a pinned server names list is given it
-will only start in the given named Synapse server instances. The Synapse
-server name is taken as follows. First it looks for the system property
-SynapseServerName.  If it is not found it will take the hostname of the
-machine. Otherwise it will default to name 'localhost'. You can give a name
-to the starting Synapse server instance using ./synapse.sh
--DSynapseServerName=&lt;ServerName&gt;</p>
+started using pinnedServers attribute. Refer to the explanation of this
+attribute under proxy services for more information.</p>
 
 <h2><a name="mediator">Mediators</a></h2>
 
 <p>A mediator token refers to any of the following tokens:</p>
-<pre><a href="#send">send</a> | <a href="#drop">drop</a> | <a href="#log">log</a> | <a href="#property">property</a> | <a href="#sequence_ref">sequence</a> | <a href="#validate">validate</a> | <a href="#makefault">makefault</a> | <a href="#xslt">xslt</a> | <a href="#header">header</a> | <a href="#filter">filter</a> | <a href="#switch">switch</a> | <a href="#in">in</a> | <a href="#out">out</a> | <a href="#dblookup">dblookup</a> | <a href="#dbreport">dbreport</a> | <a href="#RMSequence">RMSequence</a> | <a href="#throttle">throttle</a> | <a href="#xquery">xquery</a> | <a href="#cache">cache</a> | <a href="#clone">clone</a> | <a href="#iterate">iterate</a> | <a href="#aggregate">aggregate</a> | <a href="#class">class</a> | <a href="#pojoCommand">pojoCommand</a> | <a href="#script">script</a> | <a href="#spring">spring</a> </pre>
+<pre><a href="#send">send</a> | <a href="#drop">drop</a> | <a href="#log">log</a> | <a href="#property">property</a> | <a href="#sequence_ref">sequence</a> | <a href="#validate">validate</a> | <a href="#makefault">makefault</a> | <a href="#xslt">xslt</a> | <a href="#header">header</a> | <a href="#filter">filter</a> | <a href="#switch">switch</a> | <a href="#in">in</a> | <a href="#out">out</a> 
+    | <a href="#dblookup">dblookup</a> | <a href="#dbreport">dbreport</a> | <a href="#RMSequence">RMSequence</a> | <a href="#throttle">throttle</a> | <a href="#xquery">xquery</a> | <a href="#cache">cache</a> | <a href="#clone">clone</a> | <a href="#iterate">iterate</a> | <a href="#aggregate">aggregate</a> | <a href="#class">class</a> | <a href="#pojoCommand">pojoCommand</a> | <a href="#script">script</a> | <a href="#spring">spring</a> </pre>
 
 <p>In addition to the above, Synapse will be able to load custom mediators
 via the J2SE Service Provider model. Mediator extensions must implement the
-MediatorFactory interface.</p>
+MediatorFactory interface. The Class and POJO Command mediators allow custom
+Java code to be easily invoked during mediation, while the Script mediator
+allows Apache BSF scripts such as Javascript, Ruby, Groovy etc to be used for
+mediation.</p>
 
 <h3>Core Mediators</h3>
 
 <h4><a name="send">Send</a></h4>
 
-<p>The send token represents a &lt;send&gt; element. The &lt;send&gt; element
-is used to send messages out of Synapse to some endpoint, and stop further
-mediation of the message. The send mediator also copies any message context
-properties from the current message context to the reply message received on
-the execution of the send operation. This allows the reply messages to be
-correlated to the original messages in a flexible manner. Messages may be
-correlated by WS-A MessageID, or even simple custom text labels. Also see the
-property mediator.</p>
-
-<p>In the simplest case, the place to send the message to is implicit in the
-message (via a property of the message itself)- that is indicated by the
-following:</p>
+<p>The send token represents a &lt;send&gt; element, used to send messages
+out of Synapse to some endpoint. The send mediator also copies any message
+context properties from the current message context to the reply message
+received on the execution of the send operation so that the response could be
+correlated back to the request. Messages may be correlated by WS-A MessageID,
+or even simple custom text labels (see the property mediator and samples)</p>
+
+<p>In the simplest case shown below, the destination to send a message is
+implicit in the message via the 'To' address. Thus a request message will be
+sent to its 'To' address, and a response message would be sent back to the
+client. Removing the 'To' address of a message targets it back to the client,
+and thus a request message received may be returned to the client after
+changing its direction. (Note: to mark a message as a response set the
+property RESPONSE to true)</p>
+
+<p><strong>Note:</strong> A send operation may be blocking or non-blocking
+depending on the actual transport implementation used. As the default NIO
+based http/s implementation does not block on a send, care must be taken if
+the same message must be sent and then further processed (e.g. transformed).
+In such a scenario, it maybe required to first clone the message into two
+copies and then perform processing to avoid conflicts.</p>
 <pre> &lt;send/&gt;</pre>
 
 <p>If the message is to be sent to one or more endpoints, then the following
@@ -850,18 +870,18 @@
 <p>where the endpointref token refers to the following:</p>
 <pre> &lt;endpoint key="name"/&gt;</pre>
 
-<p>and the endpoint token refers to an anonymous endpoint defined.</p>
+<p>and the endpoint token refers to an anonymous endpoint definition.</p>
 
 <p></p>
 
 <h4><a name="drop">Drop</a></h4>
 
-<p>The drop token refers to a &lt;drop&gt; element which is used to drop a
-message:</p>
+<p>The drop token refers to a &lt;drop&gt; element which is used to stop
+further processing of a message:</p>
 <pre> &lt;drop/&gt;</pre>
 
 <p>Once the &lt;drop&gt; mediator executes, further processing of the current
-message stops.</p>
+message stops. A the drop mediator does not necessarily close transports.</p>
 
 <p></p>
 
@@ -896,29 +916,34 @@
 
 <p>The property token refers to a &lt;property&gt; element which is a
 mediator that has no direct impact on the message but rather on the message
-context flowing through Synapse. The properties which does not specify the
-action thus set on the message context applies only to the current message
-and can be later retrieved through the synapse:get-property(prop-name)
-extension function. If a scope is specified for a property, the property
-could be set as a transport header property or an (underlying) Axis2 message
-context property, or as a Axis2 client option or as an Axis2 message context
-property. If a scope is not specified, it will default to the Synapse message
-context scope. Using the property element with action specified as "remove"
-you can remove the message context properties if available.</p>
+context flowing through Synapse. The properties set on a message can be later
+retrieved through the synapse:get-property(prop-name) XPath extension
+function. If a scope is specified for a property, the property could be set
+as a transport header property or an (underlying) Axis2 message context
+property, or as a Axis2 client option. If a scope is not specified, it will
+default to the Synapse message context scope. Using the property element with
+action specified as "remove" you can remove any existing message context
+properties.</p>
 
-<p>There are some well-defined properties that you can get/set:</p>
+<p>There are some well-defined properties that you can get/set on the Synapse
+message context scope:</p>
 <ul>
-  <li>RESPONSE - 'true' means the message is marked as a response message</li>
-  <li>OUT_ONLY - 'true' means the message is marked as an out-only message
-    that does not expect a response</li>
-  <li>ERROR_CODE - this is set to any error message code encountered</li>
-  <li>ERROR_MESSAGE - this is set to any error message text encountered</li>
-  <li>ERROR_DETAIL - this is set to any error message detail text
-  encountered</li>
+  <li>RESPONSE - 'true' means the message is to be marked as a response
+    message</li>
+  <li>OUT_ONLY - 'true' means the message is to be marked as an out-only
+    message that does not expect a response</li>
+  <li>ERROR_CODE - this is set to any error message code encountered during a
+    fault</li>
+  <li>ERROR_MESSAGE - this is set to any error message text encountered
+    during a fault</li>
+  <li>ERROR_DETAIL - this is set to any error message detail text encountered
+    during a fault</li>
+  <li>ERROR_EXCEPTION - this is set to any Java Exception encountered during
+    a fault</li>
 </ul>
 
-<p>There are also some Axis2 and module properties that are useful to set
-(with scope="axis2"):</p>
+<p>There are some Axis2 and module properties that are useful which are set
+at scope="axis2"</p>
 <ul>
   <li>Sandesha2RMSpecVersion - can be '1.0' or '1.1'</li>
   <li>Sandesha2SequenceKey - can be an identifier specifying an Sandesha
@@ -927,8 +952,47 @@
     terminate the sequence</li>
 </ul>
 
+<p>There are some Axis2 client side properties/options that are useful which
+are set at scope="axis2-client"</p>
+<ul>
+  <li>FORCE_HTTP_1.0 - forces outgoing http/s messages to use HTTP 1.0
+    (instead of the default 1.1)</li>
+</ul>
+
+<h5>The synapse:get-property() XPath extension function</h5>
+
+<p>The get-property() function allows any XPath expression used in a
+configuration to lookup information from the current message context. It is
+possible to retrieve properties previously set with the property mediator,
+and/or information from the Synapse or Axis2 message contexts or transport
+header. The function accepts the scope as an optional parameter as shown
+below:</p>
+
+<p>synapse:get-property( [(axis2 | axis2-client | transport),]
+&lt;property_name&gt; [,&lt;dateformat&gt;] ) </p>
+
 <p></p>
 
+<p>Some useful properties from the Synapse message context follows:</p>
+<ul>
+  <li>SYSTEM_DATE - Returns the current date as a String. Optionally a date
+    format as per standard date format may be supplied. e.g.
+    synapse:get-property(SYSTEM_DATE, "yyyy.MM.dd G 'at' HH:mm:ss z") or
+    get-property(SYSTEM_DATE)</li>
+  <li>SYSTEM_TIME - Returns the current time in milliseconds. (i.e. the
+    difference, measured in milliseconds, between the current time and
+    midnight, January 1, 1970 UTC)</li>
+  <li>To, From, Action, FaultTo, ReplyTo, MessageID the message To and Action
+    and WS-Addressing properties</li>
+  <li>MESSAGE_FORMAT - returns the message format - i.e. returns pox, get,
+    soap11 or soap12</li>
+  <li>OperationName - returns the operation name for the message</li>
+</ul>
+
+<p>In addition to the above, one may use the get-property() function to
+retrieve Axis2 message context properties or transport headers. e.g.
+synapse:get-property('transport', 'USER_AGENT')</p>
+
 <h4><a name="sequence_ref">Sequence</a></h4>
 <pre> &lt;sequence key="name"/&gt;</pre>
 
@@ -951,8 +1015,8 @@
 attribute is not specified, the validation is performed against the first
 child of the SOAP body of the current message. If the validation fails, the
 on-fail sequence of mediators is executed. Properties could be used to turn
-on/off some of the underlying features of the validator (See
-http://xerces.apache.org/xerces2-j/features.html)</p>
+on/off some of the underlying features of the validator (See <a
+href="http://xerces.apache.org/xerces2-j/features.html">http://xerces.apache.org/xerces2-j/features.html</a>)</p>
 
 <p></p>
 
@@ -971,7 +1035,8 @@
 message, but does NOT send it. The &lt;send&gt; mediator needs to be invoked
 to send a fault message created this way. The fault message "to" header is
 set to the "faultTo" of the original message if such a header existed on the
-original message.</p>
+original message. If a 'version' attribute is specified, the created fault
+message will be created as a selected SOAP 1.1 or SOAP 1.2 fault.</p>
 
 <p></p>
 
@@ -982,15 +1047,15 @@
  &lt;/xslt&gt;</pre>
 
 <p>The &lt;xslt&gt; mediator applies the specified XSLT transformation to the
-given element. If the source element is not specified, it defaults to the
-first child of the soap body. Optionally parameters (XSLT) could be passed
-into the transformations through the &lt;property&gt; elements.The
-&lt;feature&gt; defines a any feature which should be set to the
-TransformerFactory by explicitly. The feature
+selected element of the current message payload. If the source element is not
+specified, it defaults to the first child of the soap body. Optionally
+parameters (XSLT) could be passed into the transformations through the
+'property' elements.The 'feature' elements defines any features which should
+be set to the TransformerFactory by explicitly. The feature
 'http://ws.apache.org/ns/synapse/transform/feature/dom' turns on DOM based
 transformations instead of serializing elements into Byte streams and/or
-temporary files. However, this may not prove to be stable for all scenarios -
-especially for large message transformation.</p>
+temporary files. Though this would be better in performance than using byte
+streams, sometimes it may not work for all transformations.</p>
 
 <p></p>
 
@@ -999,7 +1064,7 @@
  &lt;header name="qname" action="remove"/&gt;</pre>
 
 <p>The &lt;header&gt; mediator sets or removes a specified header from the
-current soap message. Currently the set header only supports simple valued
+current soap infoset. Currently the set header only supports simple valued
 headers. In the future we may extend this to have XML structured headers by
 embedding the XML content within the element itself. The optional action
 attribute specifies whether the mediator should set or remove the header. If
@@ -1016,8 +1081,9 @@
 
 <p>The &lt;filter&gt; mediator either test the given xpath expression as a
 boolean expression, or match the evaluation result of a source xpath
-expression against the given regular expression. If the test succeeds, the
-filter mediator will execute the enclosed mediators in sequence.</p>
+expression as a String against the given regular expression. If the test
+succeeds, the filter mediator will execute the enclosed mediators in
+sequence.</p>
 
 <p></p>
 
@@ -1111,8 +1177,8 @@
 </ul>
 
 <p>More than one statement may be specified, and the SQL statement may
-specify parameters which could be specified as values or expressions. The
-types of parameters could be any valid SQL types. Only the first row of a
+specify parameters which could be specified as values or XPath expressions.
+The types of parameters could be any valid SQL types. Only the first row of a
 result set will be considered and any others are ignored. The single
 &lt;result&gt; element contains the 'name' and the column' attributes. The
 'name' attribute defines the name under which the result is stored in the
@@ -1172,37 +1238,49 @@
 <p></p>
 
 <h4><a name="throttle">Throttle</a></h4>
-<pre>&lt;throttle [onReject="string"] [onAccept="string"] [id="string"]&gt;
-    &lt;policy key="string"/&gt; | &lt;policy&gt;..&lt;/policy&gt;
-    &lt;onReject&gt;..&lt;/onReject&gt;
-    &lt;onAccept&gt;..&lt;/onAccept&gt;
+<pre>&lt;throttle [onReject="string"] [onAccept="string"] id="string"&gt;
+    (&lt;policy key="string"/&gt; | &lt;policy&gt;..&lt;/policy&gt;)
+    &lt;onReject&gt;..&lt;/onReject&gt;?
+    &lt;onAccept&gt;..&lt;/onAccept&gt;?
 &lt;/throttle&gt;</pre>
 
 <p></p>
 
 <p>The Throttle mediator can be used for rate limiting as well as concurrency
 based limiting. A WS-Policy dictates the throttling configuration and may be
-specified inline or loaded from the registry. The Throttle mediator could be
-added in the request path for rate limiting and concurrent access limitation.
-When using for concurrent access limitation, the same throttle mediator ID
-must be triggered on the response flow so that completed responses are
-deducted from the available limit. The acceptance or rejection sequence is
-executed depending on the evaluation of the throttling policy against the
-current message.</p>
+specified inline or loaded from the registry. Please refer to the samples
+document for sample throttling policies. The Throttle mediator could be added
+in the request path for rate limiting and concurrent access limitation. When
+using for concurrent access limitation, the same throttle mediator 'id' must
+be triggered on the response flow so that completed responses are deducted
+from the available limit. (i.e. two instances of the throttle mediator with
+the same 'id' attribute in the request and response flows). The 'onReject'
+and 'onAccept' sequence references or inline sequences define how accepted
+and rejected messages are to be handled.</p>
 
 <h4><a name="xquery">XQuery</a></h4>
-<pre>&lt;xquery [key="string"] [target="xpath"]&gt;
-    &lt;variable name="string" type="string" [key="string"] [expression="xpath"]/&gt;?
+<pre>&lt;xquery key="string" [target="xpath"]&gt;
+    &lt;variable name="string" type="string" [key="string"] [expression="xpath"] [value="string"]/&gt;?
 &lt;/xquery&gt; </pre>
 
 <p></p>
 
 <p>The XQuery mediator can be used to perform an XQuery transformation. The
-'variable' elements define a variable that could be bound to the dynamic
-context of the XQuery engine in order to access those variables through the
-XQuery script . The name of the variable corresponds to the name of variable
-declaration in the XQuery script. The 'type' of the variable must be a valid
-type defined by the JSR-000225 (XQJ API). The supported types are:</p>
+'key' attribute specifies the XQuery transformation, and the optional
+'target' attribute specifies the node of the message that should be
+transformed. This defaults to the first child of the SOAP body of the
+payload. The 'variable' elements define a variable that could be bound to the
+dynamic context of the XQuery engine in order to access those variables
+through the XQuery script .</p>
+
+<p>It is possible to specify just a literal 'value', or an XPath expression
+over the payload, or even specify a registry key or a registry key combined
+with an XPath expression that selects the variable. The name of the variable
+corresponds to the name of variable declaration in the XQuery script. The
+'type' of the variable must be a valid type defined by the JSR-000225 (XQJ
+API). </p>
+
+<p>The supported types are:</p>
 <ul>
   <li>XQItemType.XQBASETYPE_INT -&gt; INT</li>
   <li>XQItemType.XQBASETYPE_INTEGER -&gt; INTEGER</li>
@@ -1218,91 +1296,99 @@
   <li>XQItemType.XQITEMKIND_ELEMENT -&gt; ELEMENT</li>
 </ul>
 
-<p>The expressions will be evaluated against the current SOAP envelope.</p>
-
 <h4><a name="cache">Cache</a></h4>
-<pre> &lt;cache (id="string")? hashGenerator="class" scope="string" timeout="seconds" collector=(true | false) maxMessageSize="in-bytes"&gt;
-   &lt;onCacheHit (sequence="key")?&gt;
+<pre> &lt;cache id="string" [hashGenerator="class"] [timeout="seconds"] [scope=(per-host | per-mediator)] 
+     collector=(true | false) [maxMessageSize="in-bytes"]&gt;
+   &lt;onCacheHit [sequence="key"]&gt;
      (mediator)+
-   &lt;/onCacheHit&gt;
+   &lt;/onCacheHit&gt;?
    &lt;implementation type=(memory | disk) maxSize="int"/&gt;
  &lt;/cache&gt;</pre>
 
-<p>The &lt;cache&gt; mediator will evaluate the hash value of the incoming
-message as described in the hash generator implementation (which should be a
-class implementing the org.wso2.caching.digest.DigestGenerator interface) and
-looks in a cache for a matching response. If the generated hash value has
+<p>The &lt;cache&gt; mediator will evaluate the hash value of an incoming
+message as described in the optional hash generator implementation (which
+should be a class implementing the org.wso2.caching.digest.DigestGenerator
+interface). The default hash generator is
+'org.wso2.caching.digest.DOMHashGenerator'. If the generated hash value has
 been found in the cache then the cache mediator will execute the onCacheHit
-sequence which can be specified inline or refered to the registry. </p>
+sequence which can be specified inline or referenced. The cache mediator must
+be specified with an 'id' and two instances with this same 'id' that
+correlates the response message into the cache for the request message hash.
+The optional 'timeout' specifies the valid duration for cached elements, and
+the scope defines if mediator instances share a common cache per every host
+instance, or per every cache mediator pair (i.e. 'id') instance. The
+'collector' attribute 'true' specifies that the mediator instance is a
+response collection instance, and 'false' specifies that its a cache serving
+instance. The maximum size of a message to be cached could be specified with
+the optional 'maxMessageSize' attributes in bytes and defaults to unlimited.
+Finally the 'implementation' element may define if the cache is disk or
+memory based, and the 'maxSize' attribute defines the maximum number of
+elements to be cached.</p>
 
 <h4><a name="clone">Clone</a></h4>
-<pre> &lt;clone continueParent=(true | false)&gt;
-   &lt;target to="uri" [soapAction="qname"] sequence="sequence_ref" endpoint="endpoint_ref"&gt;
+<pre> &lt;clone [continueParent=(true | false)]&gt;
+   &lt;target [to="uri"] [soapAction="qname"] [sequence="sequence_ref"] [endpoint="endpoint_ref"]&gt;
      &lt;sequence&gt;
        (mediator)+
-     &lt;/sequence&gt;
+     &lt;/sequence&gt;?
      &lt;endpoint&gt;
        endpoint
-     &lt;/endpoint&gt;
-   &lt;/target&gt;
+     &lt;/endpoint&gt;?
+   &lt;/target&gt;+
  &lt;/clone&gt;</pre>
 
-<p>The &lt;clone&gt; mediator closely resembles the Message Splitter EIP and
-will split the message into number of identical messages all of which are
-identical with the cloning message and processed parallelly using either the
-specified sequence or endpoint (or both). Cloning message (parent) can be
-continued or dropped depending on the boolean value of the continueParent
-attribute which defaults to false and drops the parent when false. This drop
-is not a general drop, rather stop the message processing but does not closes
-the transport channel, leaving the ability of one or a set of cloned message
-responses to be sent back to the caller</p>
+<p>The clone mediator closely resembles the Message Splitter EIP and will
+split the message into number of identical messages which will be processed
+in parallel. The original message cloned can be continued or dropped
+depending on the boolean value of the optional 'continueParent' attribute.
+Optionally a custom 'To' address and/or a 'Action' may be specified for
+cloned messages</p>
 
 <h4><a name="iterate">Iterate</a></h4>
-<pre> &lt;iterate continueParent=(true | false) preservePayload=(true | false) (attachPath="xpath")? expression="xpath"&gt;
-   &lt;target to="uri" [soapAction="qname"] sequence="sequence_ref" endpoint="endpoint_ref"&gt;
+<pre> &lt;iterate [continueParent=(true | false)] [preservePayload=(true | false)] (attachPath="xpath")? expression="xpath"&gt;
+   &lt;target [to="uri"] [soapAction="qname"] [sequence="sequence_ref"] [endpoint="endpoint_ref"]&gt;
      &lt;sequence&gt;
        (mediator)+
-     &lt;/sequence&gt;
+     &lt;/sequence&gt;?
      &lt;endpoint&gt;
        endpoint
-     &lt;/endpoint&gt;
-   &lt;/target&gt;
+     &lt;/endpoint&gt;?
+   &lt;/target&gt;+
  &lt;/iterate&gt;</pre>
 
-<p>The &lt;iterate&gt; mediator implements another EIP and will split the
-message in to number of different messages derived from the parent message by
-finding the matching elements of the XPATH expression specified in the
-configuration. New messages will be created for each and every matching
-element and processed parallelly using either the specified sequence or
-endpoint or both. Parent message can be continued or dropped in the same way
-as in the clone mediator. Iterate parent drop also is a channel blocking drop
-as per in the clone mediator.</p>
+<p>The iterate mediator implements another EIP and will split the message
+into number of different messages derived from the parent message by finding
+matching elements for the XPath expression specified. New messages will be
+created for each and every matching element and processed in parallel using
+either the specified sequence or endpoint. Parent message can be continued or
+dropped in the same way as in the clone mediator. The 'preservePayload'
+attribute specifies if the original message should be used as a template when
+creating the splitted messages, and defaults to 'false', in which case the
+splitted messages would contain the split elements as the SOAP body.</p>
 
 <h4><a name="aggregate">Aggregate</a></h4>
 <pre> &lt;aggregate&gt;
-   &lt;corelateOn expression="xpath"/&gt;
-   &lt;completeCondition timeout="time-in-seconds"&gt;
-     &lt;messageCount min="int-min" max="int-max"/&gt;
-   &lt;/completeCondition&gt;
-   &lt;onComplete expression="xpath" sequence="sequence-ref"&gt;
+   &lt;correlateOn expression="xpath"/&gt;?
+   &lt;completeCondition [timeout="time-in-seconds"]&gt;
+     &lt;messageCount min="int-min" max="int-max"/&gt;?
+   &lt;/completeCondition&gt;?
+   &lt;onComplete expression="xpath" [sequence="sequence-ref"]&gt;
      (mediator +)?
    &lt;/onComplete&gt;
-   &lt;invalidate sequence="sequence-ref" timeout="time-in-seconds"&gt;
-     (mediator +)?
-   &lt;/invalidate&gt;
  &lt;/aggregate&gt;</pre>
 
-<p>The &lt;aggregate&gt; mediator implements the Message Aggregator EIP and
-will aggregate the messages splitted using either the clone or iterate
-mediators. At the same time it can aggregate messages on the presence of
-matching elements specified by the corelateOn XPATH expression. Aggregate
-will collect the messages coming in to that until the messages on the
-aggregation satisfies the complete condition. On completion of the
-aggregation it will execute the aggregated message using the onComplete
-sequence. Aggregated message will be created by combining the messages
-participating in the aggregation using the onComplete XPATH expression. If a
-particular aggregation fails to complete in a pre configured time, then that
-particular aggregation will be invalidated using the invalidate sequence.</p>
+<p>The aggregate mediator implements the Message Aggregator EIP and will
+aggregate the messages or responses for splitted messages using either the
+clone or iterate mediators. At the same time it can aggregate messages on the
+presence of matching elements specified by the correlateOn XPATH expression.
+Aggregate will collect the messages coming into it until the messages
+collected on the aggregation satisfies the complete condition. The completion
+condition can specify a minimum or maximum number of messages to be
+collected, or a timeout value in seconds, after which the aggregation
+terminates. On completion of the aggregation it will merge all of the
+collected messages and invoke the onComplete sequence on it. The merged
+message would be created using the XPath expression specified by the
+attribute 'expression' on the 'onComplete' element.</p>
 
 <h3>Extension mediators</h3>
 
@@ -1313,7 +1399,7 @@
    &lt;/property&gt;
  &lt;/class&gt; </pre>
 
-<p>The &lt;class&gt; mediator creates an instance of the specified class and
+<p>The class mediator creates an instance of a custom specified class and
 sets it as a mediator. The class must implement the
 org.apache.synapse.api.Mediator interface. If any properties are specified,
 the corresponding setter methods are invoked on the class, once, during
@@ -1323,17 +1409,26 @@
 
 <h4><a name="pojoCommand">POJOCommand</a></h4>
 <pre> &lt;pojoCommand name="class-name"&gt;
-   &lt;property name="string" value="literal"&gt;
+   (
+   &lt;property name="string" value="string"/&gt; |
+   &lt;property name="string" context-name="literal" [action=(ReadContext | UpdateContext | ReadAndUpdateContext)]&gt;
      (either literal or XML child)
-   &lt;/property&gt;
-   &lt;property name="string" expression="xpath"/&gt;
+   &lt;/property&gt; |
+   &lt;property name="string" expression="xpath" [action=(ReadMessage | UpdateMessage | ReadAndUpdateMessage)]/&gt;
+   )*
  &lt;/pojoCommand&gt; </pre>
 
-<p>The &lt;pojoCommand&gt; mediator creates an instance of the specified
-command class (which may implement the org.apache.synapse.Command interface
-or should have a public void method named "execute"). If any properties are
-specified, the corresponding setter methods are invoked on the class and
-called the execute method of the command executed.</p>
+<p>The pojoCommand mediator creates an instance of the specified command
+class - which may implement the org.apache.synapse.Command interface or
+should have a public void method "public void execute()". If any properties
+are specified, the corresponding setter methods are invoked on the class
+before each message is executed. It should be noted that a new instance of
+the POJO Command class is created to process each message processed. After
+execution of the POJO Command mediator, depending on the 'action' attribute
+of the property, the new value returned by a call to the corresponding getter
+method is stored back to the message or to the context. The 'action'
+attribute may specify whether this behaviour is expected or not via the Read,
+Update and ReadAndUpdate properties.</p>
 
 <p></p>
 

Added: webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-flow.png
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-flow.png?rev=611774&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-flow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-logo-web2.png
URL: http://svn.apache.org/viewvc/webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-logo-web2.png?rev=611774&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/synapse/branches/1.1.1/src/site/resources/images/synapse-logo-web2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org