You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2013/02/08 21:35:05 UTC

svn commit: r1444219 [9/20] - in /servicemix/site/production/docs/4.4.x: ./ activemq/ architecture/ camel/ camel/deployment/ commands/ developers-guide/ images/ jbi/ jbi/components/ karaf/developers-guide/ karaf/users-guide/ nmr/ quickstart/ user/ user...

Modified: servicemix/site/production/docs/4.4.x/jbi/components/servicemix-eip.html
URL: http://svn.apache.org/viewvc/servicemix/site/production/docs/4.4.x/jbi/components/servicemix-eip.html?rev=1444219&r1=1444218&r2=1444219&view=diff
==============================================================================
--- servicemix/site/production/docs/4.4.x/jbi/components/servicemix-eip.html (original)
+++ servicemix/site/production/docs/4.4.x/jbi/components/servicemix-eip.html Fri Feb  8 20:35:02 2013
@@ -118,7 +118,7 @@
             <p>JBI 1.0 support is available in Apache ServiceMix 4 to allow existing users to migrate more easily to this latest version - if you're a new user, you should consider JBI deprecated and not use it for your project.
             Take a look at our <a href="../../users-guide/getting-started/technology-selection.html"</a>technology selection guidelines</a> for more information.</p>
           </div>
-                    <h2 id="servicemixeip">servicemix-eip</h2><h3 id="Overview">Overview</h3><p>The servicemix-eip component is a routing container where different routing patterns can be deployed as service unit.<br/>This component is based on the great Enterprise Integration Patterns book.</p><h4 id="Namespaceandxbean.xml">Namespace and xbean.xml</h4><p>The namespace URI for the servicemix-bean JBI component is <tt>http://servicemix.apache.org/eip/1.0</tt>.  This is an example of an <tt>xbean.xml</tt> file with a namespace definition with prefix <tt>eip</tt>.</p><div class="syntax"><div class="highlight"><pre><span class="nt">&lt;beans</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.springframework.org/schema/beans&quot;</span>&#x000A;      <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;      <span class="na">xmlns:eip=</span><span class="s">&quot;http://servicemix.apache.org/eip/1
 .0&quot;</span>&#x000A;      <span class="na">xsi:schemalocation=</span><span class="s">&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&quot;</span><span class="nt">&gt;</span>&#x000A;  <span class="c">&lt;!-- Pipeline example --&gt;</span>&#x000A;  <span class="nt">&lt;eip:pipeline</span> <span class="na">service=</span><span class="s">&quot;test:pipeline&quot;</span> <span class="na">endpoint=</span><span class="s">&quot;endpoint&quot;</span><span class="nt">&gt;</span>&#x000A;  <span class="nt">&lt;eip:transformer&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;test:transformer&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:transformer&gt;</span>&#x000A;  <span class="nt">&lt;eip:target&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s
 ">&quot;test:trace&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:target&gt;</span>&#x000A;<span class="nt">&lt;/eip:pipeline&gt;</span>&#x000A;<span class="nt">&lt;/beans&gt;</span>&#x000A;</pre></div>&#x000A;</div><h4 id="Endpointtypes">Endpoint types</h4><p>The servicemix-eip component defines several endpoint types:</p><ul style="list-style: square"><li><tt>eip:content-based-router</tt> :: Implements the Content-Based Router EIP</li><li><tt>eip:message-filter</tt> :: Implements the Message Filter EIP</li><li><tt>eip:pipeline</tt> :: Implements the Pipeline EIP</li><li><tt>eip:static-recipient-list</tt> :: Implements the Static Recipient List EIP</li><li><tt>eip:static-routing-slip</tt> :: Implements the Static Routing Slip EIP</li><li><tt>eip:wire-tap</tt> :: Implements the Wire Tap EIP</li><li><tt>eip:xpath-splitter</tt> :: Uses XPath to split a message</li><li><tt>eip:split-aggregator</tt> :: Aggregates messages that have been split by th
 e <tt>xpath-splitter</tt></li><li><tt>eip:content-enricher</tt> :: Implements the Content Enricher EIP</li><li><tt>eip:resequencer</tt> :: Implements the Resequencer EIP</li><li><tt>eip:async-bridge</tt> :: Handles an InOut exchange by correlating to separate InOnly exchanges</li></ul><p><br/><br/>In addition, this component can use all ServiceMix flows (including clustered and transactional flows), can be configured to be resilient to crashes and supports full fail-over to another node when clustered.</p><h3 id="ContentBasedRouter">Content Based Router</h3><p>ContentBasedRouter can be used for all kind of content-based routing.<br/>This pattern implements the <a href="http://www.enterpriseintegrationpatterns.com/ContentBasedRouter.html">Content-Based Router</a> pattern.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/ContentBasedRouter.gif"/><br/><br/></p><h4 id="Endpointproperties">Endpoint properties</h4><div class="table-wrap"><table c
 lass="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> forwardOperation </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Forward the operation qname when sending the exchange to the target. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default impleme
 ntation will be provided. </td></tr><tr><td class="confluenceTd"> rules </td><td class="confluenceTd"> (<em><a href="#org.apache.servicemix.eip.support.RoutingRuletypes">org.apache.servicemix.eip.support.RoutingRule</a></em>)\* </td><td class="confluenceTd"> The list of routing rules. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely d
 efined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this sp
 ring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="MessageFilter">Message Filter</h3><p>MessageFilter allows filtering incoming JBI exchanges. As it drops unwanted messages and in an InOut exchange a response is required, MessageFilter and InOut MEPs cannot be used together.<br/>This pattern implements the <a href="http://www.enterpriseintegrationpatterns.com/Filter.html">Message Filter</a> pattern.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/MessageFilter.gif"/><br/><br/></p><h4 id="Endpointproperties2">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Descripti
 on </th></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> filter </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.Predicatetypes">org.apache.servicemix.eip.support.Predicate</a></em> </td><td class="confluenceTd"> The filter to use on incoming messages </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> reportErrors </td
 ><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Indicates if faults and errors from recipients should be sent back to the consumer. In such a case, only the first fault or error received will be reported. Note that if the consumer is synchronous, it will be blocked until all recipients successfully acked the exchange, or a fault or error is reported, and the exchange will be kept in the store for recovery. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.
 apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The main target destination which will receive the exchange </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTa
 rget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="Pipeline">Pipeline</h3><p>The Pipeline component is a bridge between an In-Only (or Robust-In-Only) MEP and an In-Out MEP.  When the Pipeline receives an In-Only MEP, it will send the input in an In-Out MEP to the tranformer destination and forward th
 e response in an In-Only MEP to the target destination.</p><p>The old org.apache.servicemix.components.util.PipelineComponent will be deprecated.  This one offers the same feature but can be safely clustered and use in a transactional enviromnent.<br/><br/><br/><br/><br/>In the default configuration, faults sent by the transformer component are sent back to the consumer as faults if the exchange MEP supports them, or as errors (for InOnly exchanges).  This behavior can be changed by setting the <tt>sendFaultsToTarget</tt> attribute to <tt>true</tt>, in which case faults will be sent to the target component, or by adding a <tt>faultsTarget</tt> element where faults should be sent.</p><h4 id="Endpointproperties3">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> copyAttachments </td><td c
 lass="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Should message attachments be copied ? </td></tr><tr><td class="confluenceTd"> copyProperties </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Should message properties be copied ? </td></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> faultsTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The address of the endpoint to send faults to </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockMa
 nager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> sendFaultsToTarget </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> When the faultsTarget is not specified, faults may be sent to the target endpoint if this flag is set to &lt;code>true&lt;/code> </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td c
 lass="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The address of the target endpoint </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> transformer </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org
 .apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The adress of the in-out endpoint acting as a transformer </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This 
 property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="StaticRecipeintList">Static Recipeint List</h3><p>The StaticRecipientList component will forward an input In-Only or Robust-In-Only exchange to a list of known recipients.<br/>This component implements the <a href="http://www.enterpriseintegrationpatterns.com/RecipientList.html">Recipient List</a> pattern, with the limitation that the recipient list is static.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"/><br/><br/></p><h4 id="Endpointproperties4">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td 
 class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> recipients </td><td class="confluenceTd"> (<em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em>)\* </td><td class="confluenceTd"> A list of recipients that will each receive a copy of the input message. </td></tr><tr><td class="confluenceTd"> reportErrors </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Indicates if faults and errors from recipients should be 
 sent back to the consumer. In such a case, only the first fault or error received will be reported. Note that if the consumer is synchronous, it will be blocked until all recipients successfully acked the exchange, or a fault or error is reported, and the exchange will be kept in the store for recovery. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no facto
 ry is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When
  specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="StaticRoutingSlip">Static Routing Slip</h3><p>A RoutingSlip component can be used to route an incoming In-Out exchange through a series of target services.<br/>This component implements the <a href="http://www.enterpriseintegrationpatterns.com/RoutingTable.html">Routing Slip</a> pattern, with the limitation that the routing table is static.<br/>This component only uses In-Out MEPs and errors or faults sent by targets are reported back to the consumer, thus interrupting the routing process.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/RoutingTableSimple.gif"/><br/><br/></p><h4 id="Endpointproperties5">Endpoint properties</h4><div cla
 ss="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualif
 ied name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> targets </td><td class="confluenceTd"> (<em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em>)\* </td><td class="confluenceTd"> List of target endpoints used in the RoutingSlip </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.s
 ervicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define th
 e WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="WireTap">Wire Tap</h3><p>A WireTap component can be used to forward a copy of the input message to a listener in a proxy fashion.<br/>This component implements the <a href="http://www.enterpriseintegrationpatterns.com/WireTap.html">WireTap</a> pattern.<br/>It can handle all four standard MEPs, but will only send an In-Only MEP to the listener.<br/>The originating service must be configured to send messages to the WireTap directly.<br/>In the case of an In-Out MEP, this means that the WireTap needs to be configured to send the exchange along to the destination service.</p><p><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/WireTap.gif"/><br/><br/><br/><br/><br/>Similar to the example above, the WireTap can also be used:</p><ul><li>to forward the output message of an exchange using &lt;eip:outListener/></li><li>to forw
 ard the fault message of an exchange using &lt;eip:faultListener/></li></ul><h4 id="Endpointproperties6">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> copyProperties </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> If copyProperties is &lt;code>true&lt;/code>, properties on the in message will be copied to the out / fault message before it is sent. </td></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> faultListener </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The li
 stener destination for fault messages </td></tr><tr><td class="confluenceTd"> inListener </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The listener destination for in messages </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> outListener </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servic
 emix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The listener destination for out messages </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.sup
 port.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The main target destination which will receive the exchange </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><t
 d class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="XPathSplitter">XPath Splitter</h3><p>The XPathSplitter component implements the <a href="http://www.enterpriseintegrationpatterns.com/Sequencer.html">Splitter</a> pattern using an xpath expression to split the incoming xml.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/Sequencer.gif"/><br/><br/></p><h4 id="Endpointproperties7">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th>
 </tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> factory </td><td class="confluenceTd"> <em>javax.xml.xpath.XPathFactory</em> </td><td class="confluenceTd"> The XPath factory. If no factory is explicitely configured, a defaut one will be created using &lt;code>XPathFactory.newInstance()&lt;/code>. </td></tr><tr><td class="confluenceTd"> forwardAttachments </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Indicates if incoming attachments should be forwarded with the new exchanges. </td></tr><tr><td class="confluenceTd"> forwardProperties </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Indicates if properties on the incoming message should be forwarded. </td></tr><tr><td class="confluenceTd"> functionResolver </td><td class="confluenceTd"> <em>javax.xml.xpath.XPathFuncti
 onResolver</em> </td><td class="confluenceTd"> The function resolver. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> namespaceContext </td><td class="confluenceTd"> <em><a href="#javax.xml.namespace.NamespaceContexttypes">javax.xml.namespace.NamespaceContext</a></em> </td><td class="confluenceTd"> The namespace context to use when evaluating the xpath expression </td></tr><tr><td class="confluenceTd"> reportErrors </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"
 > Indicates if faults and errors from splitted parts should be sent back to the consumer. In such a case, only the first fault or error received will be reported. Note that if the consumer is synchronous, it will be blocked until all parts have been successfully acked, or a fault or error is reported, and the exchange will be kept in the store for recovery. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The 
 store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> synchronous </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Specifies wether exchanges for all parts are sent synchronously or not. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The address of the target endpoint. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> variableResolver </td><td class="confluenceTd"> <em>org.apach
 e.servicemix.expression.MessageVariableResolver</em> </td><td class="confluenceTd"> The variable resolver. The default one will enable the use of properties on the message, exchange, as well as making system properties and environment properties available. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description 
 for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr><tr><td class="confluenceTd"> xpath </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The xpath expression used to split the input message. </td></tr></table></div><h3 id="SplitAggregator">Split Aggregator</h3><p>The SplitAggregator is an aggregator mainly usefull to collect messages that have been created using a splitter.<br/>It relies on several properties that should be set on the exchanges (count, index, correlationId).</p><p><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/Aggregator.gif"/><br/><br/></p><h4 id="Endpointproperties8">Endpoint properties</h4><h3 id="ContentEnricher">Content Enricher</h3><p>With a Content Enricher you can extract additional information from a source and add this information to your message. This is
  useful if the calling service for example extracts a 'userID' and your target system is only aware of a 'userName'. By using the Content-Enricher you could extract this information from a source system and add this additional information ('userName') to your message.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/DataEnricher.gif"/><br/><br/></p><div class="syntax"><div class="highlight"><pre><span class="nt">&lt;eip:content-enricher</span> <span class="na">service=</span><span class="s">&quot;test:contentEnricher&quot;</span> <span class="na">endpoint=</span><span class="s">&quot;endpoint&quot;</span><span class="nt">&gt;</span>&#x000A;  <span class="nt">&lt;eip:enricherTarget&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;test:additionalInformationExtracter&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:enricherTarget&gt;</span>&
 #x000A;  <span class="nt">&lt;eip:target&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;test:myTarget&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:target&gt;</span>&#x000A;<span class="nt">&lt;/eip:content-enricher&gt;</span>&#x000A;</pre></div>&#x000A;</div><h4 id="Endpointproperties9">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> copyAttachments </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> If this is set to &lt;code>true&lt;/code>, message attachments from the incoming exchange and the enricher exchange will be copied to the outgoing message exchange. The default value is &lt;code>false&lt;/code> (do not copy message atachments). </td></tr
 ><tr><td class="confluenceTd"> copyProperties </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> If this is set to &lt;code>true&lt;/code>, message properties from the incoming exchange and the enricher exchange will be copied to the outgoing message exchange. The default value is &lt;code>false&lt;/code> (do not copy message properties). </td></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> enricherElementName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> returns the QName of the resulting root node </td></tr><tr><td class="confluenceTd"> enricherTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The target 
 that will receive a copy of the input message and return an addtitional content. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> requestElementName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> Returns the QName of the element which contains the 'IN Message' within the response message </td></tr><tr><td class="confluenceTd"> resultElementName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> Ret
 urns the QName of the element which contains the message which was produced by the enricherTarget within the response message </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servic
 emix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> The target where the enriched exchanges are sent. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td>
 <td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="EipResequencer">Eip Resequencer</h3><p>A resequencer re-orders incoming In-Only or Robust-In-Only exchanges and sends them synchronously to a targets service. Synchronous sending ensures that messages arrive in correct order at the target service. This component implements the <a href="http://www.enterpriseintegrationpatterns.com/Resequencer.html">Resequencer</a> pattern.<br/><br/><br/><img border="0" src="http://www.enterpriseintegrationpatterns.com/img/Resequencer.gif"/><br/><br/><br/>It works on (continuous) streams of message exchanges using a timeout policy. Si
 nce the resequencer doesn't make batch reads there's no need to know the number of messages to be re-ordered in advance (although a <tt>capacity</tt> parameter prevents the resequencer from running out of memory). If the maximum out-of-sequence time difference between messages in a message stream is known, the resequencer's <tt>timeout</tt> parameter should be set to this value (milliseconds). In this case it is guaranteed that all elements of a stream are delivered in correct order to the target service. The lower the <tt>timeout</tt> value is compared to the out-of-sequence time difference the higher is the probability for out-of-sequence messages sent by this resequencer. Large <tt>timeout</tt> values should be supported by sufficiently high <tt>capacity</tt> values.<br/><br/><br/>For comparing elements of a sequence the resequencer component can be configured with a sequence element comparator. A default comparator is provided that compares message exchanges based on <tt
 >Long</tt> sequence numbers. This comparator expects the sequence number to be the value of the <tt>org.apache.servicemix.eip.sequence.number</tt> property of the exchanges's <tt>in</tt>\-NormalizedMessage. The name of the property can be customized in the comparator configuration (see below). You may also provide a custom comparator by implementing the <a href="http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-eip/trunk/src/main/java/org/apache/servicemix/eip/support/resequence/SequenceElementComparator.java?view=markup">SequenceElementComparator</a> interface.<br/><br/></p><div class="syntax"><div class="highlight"><pre> <span class="nt">&lt;eip:resequencer</span>&#x000A;   <span class="na">service=</span><span class="s">&quot;sample:Resequencer&quot;</span>&#x000A;   <span class="na">endpoint=</span><span class="s">&quot;ResequencerEndpoint&quot;</span>&#x000A;   <span class="na">comparator=</span><span class="s">&quot;#comparator&quot;</span>&#x000A; 
   <span class="na">capacity=</span><span class="s">&quot;100&quot;</span>&#x000A;   <span class="na">timeout=</span><span class="s">&quot;2000&quot;</span><span class="nt">&gt;</span>&#x000A;   <span class="nt">&lt;eip:target&gt;</span>&#x000A;     <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;sample:SampleTarget&quot;</span> <span class="nt">/&gt;</span>&#x000A;   <span class="nt">&lt;/eip:target&gt;</span>&#x000A; <span class="nt">&lt;/eip:resequencer&gt;</span>&#x000A; <span class="c">&lt;!-- Configure default comparator with custom sequence number property --&gt;</span>&#x000A; <span class="nt">&lt;eip:default-comparator</span> <span class="na">id=</span><span class="s">&quot;comparator&quot;</span> <span class="na">sequenceNumberKey=</span><span class="s">&quot;seqnum&quot;</span><span class="nt">/&gt;</span>&#x000A;</pre></div>&#x000A;</div><p><br/><br/>A running example can be downloaded from <a href="^resequence
 r-sample.zip">here</a>. In this example, a custom-coded message sender sends messages in "wrong" order to the resequencer. The resequencer re-orders these messages and (synchronously) sends them to a file sender-endpoint. The file sender-enpoint writes the messages (in proper order) to the <tt>work/output</tt> directory.</p><h4 id="Endpointproperties10">Endpoint properties</h4><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> capacity </td><td class="confluenceTd"> <em>int</em> </td><td class="confluenceTd"> The capacity of this resequencer. The capacity determines the maximum number of message that will be kept in memory to put the messages back in sequence. This determine how far two messages can be in the list of messages while still being put back in sequence. </td></tr><tr><td class="confluenceTd"> compar
 ator </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.resequence.SequenceElementComparatortypes">org.apache.servicemix.eip.support.resequence.SequenceElementComparator</a></em> </td><td class="confluenceTd"> The comparator used to determine the sequence order of elements. </td></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td clas
 s="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd">  </td></tr><tr><td cl
 ass="confluenceTd"> timeout </td><td class="confluenceTd"> <em>long</em> </td><td class="confluenceTd"> Set the timeout of this resequencer. This specifies the maximum number of milliseconds that can elapse between two out-of-sync messages. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be expo
 sed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="AsyncBridge">Async Bridge</h3><p>The AsyncBridge expects an InOut mep as input. It then uses the exchange id of the InOut mep as the correlation id and creates an InOnly message by copying the input message and sends it to the target (with the correlation id set as a property). Next it expects an InOnly to come back with the same correlation id property. When this happens, the message is copied to the out message of the original exchange and sent back. If no response is received during the configured am
 ount of time (timeout property in milliseconds), an error will be sent back to the original consumer.</p><div class="syntax"><div class="highlight"><pre> <span class="nt">&lt;eip:async-bridge</span>&#x000A;  <span class="na">service=</span><span class="s">&quot;sample:AsyncBridge&quot;</span>&#x000A;  <span class="na">endpoint=</span><span class="s">&quot;AsyncBridgeEndpoint&quot;</span>&#x000A;  <span class="err">&lt;eip:target</span><span class="nt">&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;sample:SampleTarget&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:target&gt;</span>&#x000A;<span class="nt">&lt;/eip:async-bridge&gt;</span>&#x000A;</pre></div>&#x000A;</div><h4 id="CorrelationId">Correlation Id</h4><p>There is a convention between the AsyncBridge and the target on how the correlation id is transmitted. The correlation id can only be transmitted from the An
 sycBridge to the target using a message property . The property name can be customized. On the other hand, the correlation id coming back from the target could be set in a message property or the message payload. The AsyncBridge could use an Expression to extract the correlation id from the message returning from the target.<br/><br/></p><div class="syntax"><div class="highlight"><pre> <span class="nt">&lt;eip:async-bridge</span>&#x000A;         <span class="na">service=</span><span class="s">&quot;sample:AsyncBridge&quot;</span>&#x000A;         <span class="na">endpoint=</span><span class="s">&quot;AsyncBridgeEndpoint&quot;</span>&#x000A;         <span class="na">responseCorrIdProperty=</span><span class="s">&quot;correlationIdProperty&quot;</span>&#x000A;         <span class="na">responseCorrId=</span><span class="s">&quot;#responseCorrIdExpression&quot;</span><span class="nt">&gt;</span>&#x000A;         <span class="nt">&lt;eip:target&gt;</span>&#x000A;             <span 
 class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;sample:SampleTarget&quot;</span> <span class="nt">/&gt;</span>&#x000A;         <span class="nt">&lt;/eip:target&gt;</span>&#x000A; <span class="nt">&lt;/eip:async-bridge&gt;</span>&#x000A;&#x000A; <span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">&quot;responseCorrIdExpression&quot;</span> <span class="na">class=</span><span class="s">&quot;org.apache.servicemix.expression.JAXPStringXPathExpression&quot;</span> <span class="nt">&gt;</span>&#x000A;       <span class="nt">&lt;contructor-arg</span> <span class="na">value=</span><span class="s">&quot;/my-response/message/@corrId&quot;</span><span class="nt">/&gt;</span>&#x000A; <span class="nt">&lt;/bean&gt;</span>   &#x000A;</pre></div>&#x000A;</div><p><br/><br/>As you can see from the sample above the responseCorrIdProperty is used to set the name of the property that the target will query to get the correl
 ation id sent by the AsyncBridge. In other words, the target will do something like this to extract the correlation id<br/><br/></p><div class="syntax"><div class="highlight"><pre> String correlationId = exchange.getProperty(&quot;correlationIdProperty&quot;);&#x000A;</pre></div>&#x000A;</div><p>The responseCorrId is set with an instance of type org.apache.servicemix.expression.Expression, in this case the class org.apache.servicemix.expression.JAXPStringXPathExpression.<br/>This expression resolves the location of the correlation id coming back from the target. In the above example the expression shows that the correlation id comes as part of the message payload in an attribute called "corrId" of the /my-response/message element. In a similar manner the class org.apache.servicemix.expression.PropertyExpression could have been used to locate the correlation id in a message property.</p><h4 id="Endpointproperties11">Endpoint properties</h4><div class="table-wrap"><table class
 ="confluenceTable"><tr><th class="confluenceTh"> Property Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> endpoint </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> The name of the endpoint. </td></tr><tr><td class="confluenceTd"> interfaceName </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the interface exposed by the endpoint. </td></tr><tr><td class="confluenceTd"> lockManager </td><td class="confluenceTd"> <em>org.apache.servicemix.common.locks.LockManager</em> </td><td class="confluenceTd"> The lock manager to use for this endpoint. If none is explicitely specified a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> requestCorrId </td><td class="confluenceTd"> <em>org.apache.servicemix.expression.Expression</em> </td><td class="confluenceTd"> The expression
  used to compute the correlation id used to correlate the response and the request. The default behavior is to use the exchange id of the incoming In-Out exchange as the correlation id. </td></tr><tr><td class="confluenceTd"> responseCorrId </td><td class="confluenceTd"> <em>org.apache.servicemix.expression.Expression</em> </td><td class="confluenceTd"> The expression used to compute the correlation id from the response exchange. The value computed by this expression must match the one from the {@link #setRequestCorrId} expression. The default value is null, but if no specific expression is configured, an expression will be created which will extract the response correlation id from the {@link #setResponseCorrIdProperty(String)} property on the exchange. </td></tr><tr><td class="confluenceTd"> responseCorrIdProperty </td><td class="confluenceTd"> <em>java.lang.String</em> </td><td class="confluenceTd"> Name of the property used by default to compute the correlation id on the
  response exchange. </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> <em>javax.xml.namespace.QName</em> </td><td class="confluenceTd"> The qualified name of the service the endpoint exposes. </td></tr><tr><td class="confluenceTd"> store </td><td class="confluenceTd"> <em>org.apache.servicemix.store.Store</em> </td><td class="confluenceTd"> Configure the store to use. If none is explicitely configured, the storeFactory will be used to create one. </td></tr><tr><td class="confluenceTd"> storeFactory </td><td class="confluenceTd"> <em>org.apache.servicemix.store.StoreFactory</em> </td><td class="confluenceTd"> The store factory to use when creating a store. If no factory is explicitely defined, an in-memory only factory will be created. </td></tr><tr><td class="confluenceTd"> target </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td c
 lass="confluenceTd"> The target which will be used to send an In-Only or Robust-In-Only exchange to. When receiving an In-Out exchange, the async bridge will create an In-Only request and send it to the specified target. It then expects another In-Only exchange to come back as the response, which will be set as the Out message on the In-Out exchange. This property is mandatory and must be set to a valid target. </td></tr><tr><td class="confluenceTd"> timeout </td><td class="confluenceTd"> <em>long</em> </td><td class="confluenceTd"> The timeout property controls the amount of time that the async bridge will wait for the response after having sent the request. The default value is 0 which means that no timeout apply. If set to a non zero value, a timer will be started when after the request is sent. When the timer expires, the In-Out exchange will be sent back with an error status and a {@link java.util.concurrent.TimeoutException} as the cause of the error. The value represe
 nts the number of milliseconds to wait. </td></tr><tr><td class="confluenceTd"> timerManager </td><td class="confluenceTd"> <em>org.apache.servicemix.timers.TimerManager</em> </td><td class="confluenceTd"> The timer manager to use for this endpoint. If none is explicitely configured, a default implementation will be provided. </td></tr><tr><td class="confluenceTd"> useRobustInOnly </td><td class="confluenceTd"> <em>boolean</em> </td><td class="confluenceTd"> Boolean flag to control if In-Only or Robust-In-Only exchange should be used when sending the request. The default value is &lt;code>false&lt;/code> which means that an In-Only exchange will be used. When using a Robust-In-Only exchange and when a fault is received, this fault will be sent back to the consumer on the In-Out exchange and the response exchange (if any) would be discarded. For both In-Only and Robust-In-Only, if the request exchange comes back with an Error status, this error will be conveyed back to the co
 nsumer in the same way. </td></tr><tr><td class="confluenceTd"> wsdlExchangeTarget </td><td class="confluenceTd"> <em><a href="#org.apache.servicemix.eip.support.ExchangeTargettypes">org.apache.servicemix.eip.support.ExchangeTarget</a></em> </td><td class="confluenceTd"> An exchange target pointing to a JBI endpoint that will be used to load the WSDL describing this endpoint. This can be used when the endpoint proxies another endpoint so that the same WSDL definition will be exposed." </td></tr><tr><td class="confluenceTd"> wsdlResource </td><td class="confluenceTd"> <em>org.springframework.core.io.Resource</em> </td><td class="confluenceTd"> When specified, this spring resource will be used to load the WSDL that will be exposed as a description for this endpoint. This property can be used to explicitely define the WSDL to be exposed by this endpoint. This property takes precedence over the wsdlExchangeTarget property. </td></tr></table></div><h3 id="Tips">Tips</h3><h4 id="E
 xchangeTarget">ExchangeTarget</h4><p>All patterns use the <strong>&lt;exchange-target /></strong> tag to specify the target of a JBI exchange.<br/>This element has the following attributes:</p><div class="table-wrap"><table class="confluenceTable"><tr><th class="confluenceTh"> Name </th><th class="confluenceTh"> Type </th><th class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd"> interface </td><td class="confluenceTd"> QName </td><td class="confluenceTd"> the QName of the target interface. One of service or interface attribute is required </td></tr><tr><td class="confluenceTd"> operation </td><td class="confluenceTd"> QName </td><td class="confluenceTd"> the QName of the target operation (optional) </td></tr><tr><td class="confluenceTd"> service </td><td class="confluenceTd"> QName </td><td class="confluenceTd"> the QName of the target service. One of service or interface attribute is required </td></tr><tr><td class="confluenceTd"> endpoint </td><td clas
 s="confluenceTd"> String </td><td class="confluenceTd"> the name of the target JBI endpoint, only used when service is set </td></tr><tr><td class="confluenceTd"> uri </td><td class="confluenceTd"> String </td><td class="confluenceTd"> uri used to target the exchange (see <a href="URIs.html">URIs</a>) </td></tr></table></div><p>If you want to target a given interface, just set the interface attribute.  Else you have to set the service attribute, and optionally the endpoint attribute if you want to specify the JBI endpoint instead of a service name.</p><h4 id="NamespaceContext">NamespaceContext</h4><p>Some patterns use XPath expression.  To use such expressions on an xml with namespaces, you need to define a NamespaceContext.<br/><br/><br/>This NamespaceContext can be referenced by a <strong>namespaceContext</strong> attribute as shown in the XPathSplitter or MessageFilter examples.</p><h4 id="Predicates">Predicates</h4><p>Some patterns uses predicates to test a given JBI exc
 hange.  The only predicate currently implemented is the XPathPredicate, but you can implement your own and deploy it with the service unit.</p><h4 id="Configuringtemporarymessagestorage">Configuring temporary message storage</h4><p>Many of the pattern implementation need to store MessageExchanges temporarily.  An example: the aggregator will need to keep track of the <tt>MessageExchange</tt> it is aggregating.  By default, the EIPs use a plain <tt>MemoryStoreFactory</tt> to create in-memory stores, but there are other options.  If you set the <tt>timeout</tt> property on the <tt>MemoryStoreFactory</tt>, it will evict old object from the in-memory store to avoid a memory leak. You can also use a <tt>JDBCStoreFactory</tt> to store data in a database instead of in memory.</p><p>Example: to use an in-memory store with timeout for a storing active and closed aggregations in a <tt>&lt;split-aggregator/></tt>, you can do</p><div class="syntax"><div class="highlight"><pre><span clas
 s="nt">&lt;eip:split-aggregator</span> <span class="na">service=</span><span class="s">&quot;test:aggregator&quot;</span> <span class="na">endpoint=</span><span class="s">&quot;endpoint&quot;</span>&#x000A;                      <span class="na">storeFactory=</span><span class="s">&quot;#StoreFactory&quot;</span> <span class="na">closedAggregateStoreFactory=</span><span class="s">&quot;#StoreFactory&quot;</span><span class="nt">&gt;</span>&#x000A;  <span class="nt">&lt;eip:target&gt;</span>&#x000A;    <span class="nt">&lt;eip:exchange-target</span> <span class="na">service=</span><span class="s">&quot;test:trace5&quot;</span> <span class="nt">/&gt;</span>&#x000A;  <span class="nt">&lt;/eip:target&gt;</span>&#x000A;<span class="nt">&lt;/eip:split-aggregator&gt;</span>&#x000A;&#x000A;<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">&quot;StoreFactory&quot;</span> <span class="na">class=</span><span class="s">&quot;org.apache.servicemix.store.MemorySto
 reFactory&quot;</span><span class="nt">&gt;</span>&#x000A;  <span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">&quot;timeout&quot;</span> <span class="na">value=</span><span class="s">&quot;120000&quot;</span><span class="nt">/&gt;</span> <span class="c">&lt;!-- 2 minute timeout --&gt;</span>&#x000A;<span class="nt">&lt;/bean&gt;</span>&#x000A;</pre></div>&#x000A;</div><h4 id="Creatingyourownpatterns">Creating your own patterns</h4><p>Some classes have been designed to be extensible, this includes:</p><ul><li>org.apache.servicemix.eip.support.AbstractAggregator</li><li>org.apache.servicemix.eip.support.AbstractSplitter</li></ul>

[... 5 lines stripped ...]