<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--
  ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you under the Apache License, Version 2.0 (the
  ~  "License"); you may not use this file except in compliance
  ~  with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing,
  ~  software distributed under the License is distributed on an
  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~  KIND, either express or implied.  See the License for the
  ~  specific language governing permissions and limitations
  ~  under the License.
  -->

<document>
    <properties>
        <title>Apache Synapse - Transports Catalog</title>
    </properties>
	<body>
		<section name="Transports Catalog" id="Introduction">
			<p>
                The Synapse project has developed a set of transport implementations that provide
                protocol support and/or features that go beyond what is provided out of the box by
                Axis2:
			</p>
			<ul>
				<li>
                    A non-blocking HTTP transport that gives better performance in a highly
                    asynchronous environment like Synapse.
				</li>
				<li>
                    A VFS transport that can read messages from files and write outgoing messages to
                    a file system. The file system can be local or remote, and several remote
                    protocols are supported, such as FTP, SSH, WebDAV, etc.
				</li>
				<li>
					A transport supporting the
					<a class="externalLink" href="http://www.fixprotocol.org">Financial Information eXchange</a>
					protocol. FIX is a public-domain messaging standard developed specifically for
                    the real-time electronic exchange of securities transactions. It has a large user
                    base and is developed by the collaborative effort of banks, broker-dealers,
                    exchanges, industry utilities and associations, institutional investors, and IT
                    providers around the world.
				</li>
                <li>
                    A AMQP transport which support the AMQP protocol.
                    <a class="externalLink" href="http://www.amqp.org/">AMQP</a>  is a messaging
                    protocol.
                </li>
			</ul>
			<p>Note that while these transports are developed as part of the Synapse project,
                they can be used with any Axis2 based application.
			</p>
			<p>
				The Synapse distribution also comes bundled with the following transports from
                the <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/index.html">Axis2 Transport</a>
				project:
			</p>
			<ul>
				<li>
					A
					<a class="externalLink" href="http://axis.apache.org/axis2/java/transports/jms.html">JMS transport</a>
					supporting any JMS 1.0 or 1.1 provider.
				</li>
				<li>
					A
					<a class="externalLink" href="http://axis.apache.org/axis2/java/transports/mail.html">Mail transport</a>
					able to send messages using SMTP and poll messages from a POP3 or IMAP account.
					<p>
                        Apache Synapse is also compatible with the following transport implementations
                        from the Apache Axis2 Transports project:
					</p>
				</li>
				<li>
					<a class="externalLink" href="http://axis.apache.org/axis2/java/transports/tcp-transport.html">TCP transport</a>
				</li>
				<li>
					<a class="externalLink" href="http://axis.apache.org/axis2/java/transports/sms.html">SMS transport</a>
				</li>
				<li>UDP transport</li>
				<li>
					XMPP transport
					<p>
						These transports are not shipped with Apache Synapse by default and hence they
                        should be
						<a class="externalLink" href="http://axis.apache.org/axis2/java/transports/download.cgi">downloaded separately</a>
						from the Axis2 transport website and installed in the Synapse runtime.
					</p>
				</li>
			</ul>
		</section>
		<section name="Content" id="Content">
			<ul>
				<li>
					<a href="#Introduction">Introduction</a>
				</li>
				<li>
					<a href="#Contents">Contents</a>
				</li>
				<li>
					<a href="#Passthrough_HTTP_transport">Passthrough HTTP transport</a>
					<ul>
						<li>
							<a href="#Example_configurations">Example configurations</a>
						</li>
						<li>
							<a href="#Transport_listener_parameters">Transport listener parameters</a>
						</li>
						<li>
							<a href="#Transport_sender_parameters">Transport sender parameters</a>
						</li>
					</ul>
				</li>
				<li>
					<a href="#Non-blocking_HTTP(NHTTP)_transport">Non-blocking HTTP(NHTTP) transport</a>
					<ul>
						<li>
							<a href="#Example_configurations">Example configurations</a>
						</li>
						<li>
							<a href="#Transport_listener_parameters">Transport listener parameters</a>
						</li>
						<li>
							<a href="#Transport_sender_parameters">Transport sender parameters</a>
						</li>
					</ul>
				</li>
				<li>
					<a href="#VFS_transport">VFS transport</a>
					<ul>
						<li>
							<a href="#Transport_listener">Transport listener</a>
						</li>
						<li>
							<a href="#Transport_sender">Transport sender</a>
						</li>
						<li>
							<a href="#Using_SFTP">Using SFTP</a>
						</li>
						<li>
							<a href="#Known_issues">Known issues</a>
						</li>
					</ul>
				</li>
				<li>
					<a href="#FIX_transport">FIX transport</a>
					<ul>
						<li>
							<a href="#Setting_up_the_FIX_Transport">Setting up the FIX Transport</a>
						</li>
						<li>
							<a href="#FIX_Transport_Parameters">FIX Transport Parameters</a>
						</li>
					</ul>
				</li>
                <li>
                    <a href="#amqp_transport">AMQP transport</a>
                    <ul>
                        <li>
                            <a href="#setting_up_the_amqp_transport">Setting up the AMQP Transport</a>
                        </li>
                        <li>
                            <a href="#amqp_transport_parameters">AMQP Transport Parameters</a>
                        </li>
                        <li>
                            <a href="#amqp_transport_ex">Sample Configurations</a>
                        </li>
                    </ul>
                </li>
			</ul>
		</section>
		<section name="Passthrough HTTP transport" id="Passthrough_HTTP_transport">
			<subsection name="Example configuration" id="Example_configurations">
				<div class="xmlConf">&lt;transportReceiver name=&quot;http&quot; class=&quot;org.apache.synapse.transport.passthru.PassThroughHttpListener&quot;&gt;
	&lt;parameter name=&quot;port&quot;&gt;8280&lt;/parameter&gt;
	&lt;parameter name=&quot;httpGetProcessor&quot;locked=&quot;org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor&quot;&gt;true&lt;/parameter&gt;
&lt;/transportReceiver&gt;

&lt;transportReceiver name=&quot;https&quot; class=&quot;org.apache.synapse.transport.passthru.PassThroughHttpSSLListener&quot;&gt;
	&lt;parameter name=&quot;port&quot; locked=&quot;false&quot;&gt;8243&lt;/parameter&gt;
	&lt;parameter name=&quot;httpGetProcessor&quot;locked=&quot;org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor&quot;&gt;true&lt;/parameter&gt;
	&lt;parameter name=&quot;keystore&quot; locked=&quot;false&quot;&gt;
		&lt;KeyStore&gt;
			&lt;Location&gt;lib/identity.jks&lt;/Location&gt;
			&lt;Type&gt;JKS&lt;/Type&gt;
			&lt;Password&gt;password&lt;/Password&gt;
			&lt;KeyPassword&gt;password&lt;/KeyPassword&gt;
		&lt;/KeyStore&gt;
	&lt;/parameter&gt;
	&lt;parameter name=&quot;truststore&quot; locked=&quot;false&quot;&gt;
		&lt;TrustStore&gt;
			&lt;Location&gt;lib/trust.jks&lt;/Location&gt;
			&lt;Type&gt;JKS&lt;/Type&gt;
			&lt;Password&gt;password&lt;/Password&gt;
		&lt;/TrustStore&gt;
	&lt;/parameter&gt;
&lt;/transportReceiver&gt;

&lt;transportSender name=&quot;http&quot;  class=&quot;org.apache.synapse.transport.passthru.PassThroughHttpSender&quot;&gt;
&lt;/transportSender&gt;

&lt;transportSender name=&quot;https&quot; class=&quot;org.apache.synapse.transport.passthru.PassThroughHttpSSLSender&quot;&gt;
	&lt;parameter name=&quot;keystore&quot; locked=&quot;false&quot;&gt;
		&lt;KeyStore&gt;
			&lt;Location&gt;lib/identity.jks&lt;/Location&gt;
			&lt;Type&gt;JKS&lt;/Type&gt;
			&lt;Password&gt;password&lt;/Password&gt;
			&lt;KeyPassword&gt;password&lt;/KeyPassword&gt;
		&lt;/KeyStore&gt;
	&lt;/parameter&gt;
	&lt;parameter name=&quot;truststore&quot; locked=&quot;false&quot;&gt;
		&lt;TrustStore&gt;
			&lt;Location&gt;lib/trust.jks&lt;/Location&gt;
			&lt;Type&gt;JKS&lt;/Type&gt;
			&lt;Password&gt;password&lt;/Password&gt;
		&lt;/TrustStore&gt;
	&lt;/parameter&gt;
	&lt;parameter name="CertificateRevocationVerifier"&gt;
		&lt;CacheSize&gt;50&lt;/CacheSize&gt;
	&lt;CacheDurationMins&gt;5&lt;/CacheDurationMins&gt;
	&lt;/parameter&gt;
&lt;/transportSender&gt;</div>
			</subsection>
			<subsection name="Transport listener parameters" id="Transport_listener_parameters">
				<p>The following parameters are supported by both the HTTP and the HTTPS listener:</p>
				<dl>
					<dt>
						<tt>port</tt>
					</dt>
					<dd>The TCP port to bind the listener to.</dd>
					<dt>
						<tt>bind-address</tt>
					</dt>
					<dd>
						The IP address to bind the listener to. This can be used on hosts that have
						more than one network interface or IP address to run multiple Synapse instances
						listening to the same port. If this parameter is not specified, the
						listener will accept connections on any IP address.
					</dd>
					<dt>
						<tt>hostname</tt>
					</dt>
					<dd>
						The host name to use when computing endpoint references in generated WSDL files.
						The default value is the host name as provided by the operation system or
						<tt>localhost</tt> if the host name can't be determined. The value of this
						parameter is ignored if <tt>WSDLEPRPrefix</tt> is specified.
					</dd>
					<dt>
						<tt>WSDLEPRPrefix</tt>
					</dt>
					<dd>
						The URL prefix to use when computing endpoint references in generated WSDL files.
						The value must be a valid URL with at least a protocol and host. If this value
						is unspecified, endpoint references will be computed based on the listener type
						(HTTP or HTTPS) and <tt>hostname</tt> and <tt>port</tt> parameters.
						<p>
							This parameter should be used if clients connect to Synapse through a frontend
							server, e.g. a (load balancing) Apache, and these clients rely on the address
							information in the WSDL documents exposed through <tt>...?wsdl</tt> URLs.
						</p>
					</dd>
				</dl>
				<p>The following parameters are specific to the HTTPS listener: </p>
				<dl>
					<dt>
						<tt>keystore</tt>
					</dt>
					<dd>
						The keystore configuration. The value of this parameter must be a
						<tt>&lt;KeyStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>truststore</tt>
					</dt>
					<dd>
						The truststore configuration. The value of this parameter must be a
						<tt>&lt;TrustStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>SSLVerifyClient</tt>
					</dt>
					<dd>
						This parameter has the same meaning as the corresponding
						<a class="externalLink" href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyclient">mod_ssl directive</a>
						and sets the desired certificate verification level for client authentication:
						<ul>
							<li>
								<tt>none</tt> (default): no client certificate is required at all
							</li>
							<li>
								<tt>optional</tt>: the client may present a valid certificate, but is
								not required to do so
							</li>
							<li>
								<tt>require</tt>: the client has to present a valid certificate,
								otherwise the connection request will be terminated during SSL handshake
							</li>
						</ul>
					</dd>
				</dl>
			</subsection>
			<subsection name="Transport sender parameters" id="Transport_sender_parameters">
				<p>
					The following property can be used to control based on content-types whether the
					HTTP/HTTPS sender shall output a warning for responses with HTTP status code 500.
				</p>
				<dl>
					<dt>
						<tt>warnOnHTTP500</tt>
					</dt>
					<dd>
						A list of content-types for which Synapse shall output a warning when receiving
						an HTTP 500 response (each value each separated by a |). By default, Synapse
						outputs a warning for any HTTP 500 response, irrespective of the content-type.
						Consequently, also for each SOAP fault a warning will be logged. If only for
						specific content-types a warning shall be logged, please provide a |-separated
						list. To output the warning for messages which do not have a content-type set,
						please use the value 'none'.
						<p>
							Example value: x-application/hessian|none
						</p>
					</dd>
				</dl>
				<p>
					The following properties can be used to configure the HTTP sender to use a proxy.
					They can be specified either as transport parameters in declared in
					<tt>&lt;transportSender&gt;</tt> or as system properties.
				</p>
				<dl>
					<dt>
						<tt>http.proxyHost</tt>
					</dt>
					<dd>The host name or address of the proxy server.</dd>
					<dt>
						<tt>http.proxyPort</tt>
					</dt>
					<dd>The TCP port of the proxy server.</dd>
					<dt>
						<tt>http.nonProxyHosts</tt>
					</dt>
					<dd>
						The hosts to which the HTTP sender should connect directly and not through
						the proxy server. The value can be a list of hosts, each separated by a |, and
						in addition a wildcard character (*) can be used for matching.
						<p>
							Example value:
							<tt>*.foo.com|localhost</tt>
						</p>
					</dd>
				</dl>
				<p>Note that the HTTPS sender has no proxy support yet.</p>
				<p>The following parameters are specific to the HTTPS sender:</p>
				<dl>
					<dt>
						<tt>keystore</tt>
					</dt>
					<dd>
						The keystore configuration. The value of this parameter must be a
						<tt>&lt;KeyStore&gt;</tt> element as shown in the example configurations
						above.
					</dd>
					<dt>
						<tt>truststore</tt>
					</dt>
					<dd>
						The truststore configuration. The value of this parameter must be a
						<tt>&lt;TrustStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>novalidatecert</tt>
					</dt>
					<dd>
						When set to <tt>true</tt>, this parameter disables server certificate
						validation (trust). The default value is <tt>false</tt>. This parameter will
						be ignored if <tt>truststore</tt> is set.
						<p>
							Setting his parameter to <tt>true</tt>
							is useful in development and test environments, but should not be used in
							production environments. If validation is disabled, a warning message will
							be logged at startup.
						</p>
					</dd>
					<dt>
						<tt>HostnameVerifier</tt>
					</dt>
					<dd>
						This optional parameter specifies the policy to apply when checking that the
						hostname of the server matches the names stored inside the X.509 certificate
						presented by the server. Possible values are <tt>Strict</tt>, <tt>AllowAll</tt>
						and <tt>DefaultAndLocalhost</tt>. See the
						<a href="../apidocs/org/apache/synapse/transport/nhttp/HostnameVerifier.html">HostnameVerifier Javadoc</a>
						for more details.
					</dd>
					<dt>
						<tt>CertificateRevocationVerifier</tt>
					</dt>
					<dd>
						This is an optional parameter to validate the revocation status of the host
						certificates using <a href="http://www.ietf.org/rfc/rfc2560.txt">OCSP</a> and
						<a href="http://www.ietf.org/rfc/rfc5280.txt">CRL</a> when making HTTPS connections.
						Simply uncomment this parameter in the axis2.xml file to enable the feature.
						Two LRU caches are used to cache CRLs and OCSP responses until they are expired. "CacheSize"
						property defines the maximum size of a cache. When this limit is reached, the
						old values will be automatically removed and updated with new values. "CacheDurationMins"
						is used to configure the time duration (in minutes) between two consecutive
						runs of the CacheManager task which periodically performs housekeeping work
						in each cache. Refer the example configuration above to see how to configure
						these properties. The scheduled CacheManager tasks for OCSP and CRL caches can
						be manually controlled using the JMX MBeans registered under the "CacheController"
						category.
					</dd>
				</dl>
			</subsection>
		</section>
	    <section name="Non-blocking HTTP (NHTTP) transport" id="Non-blocking_HTTP(NHTTP)_transport">
			<subsection name="Example configuration" id="Example_configurations">
				<div class="xmlConf">&lt;transportReceiver name=&quot;http&quot; class=&quot;org.apache.synapse.transport.nhttp.HttpCoreNIOListener&quot;&gt;
    &lt;parameter name=&quot;port&quot;&gt;8280&lt;/parameter&gt;
    &lt;parameter name=&quot;non-blocking&quot;&gt;true&lt;/parameter&gt;
&lt;/transportReceiver&gt;

&lt;transportReceiver name=&quot;https&quot; class=&quot;org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener&quot;&gt;
    &lt;parameter name=&quot;port&quot; locked=&quot;false&quot;&gt;8243&lt;/parameter&gt;
    &lt;parameter name=&quot;non-blocking&quot; locked=&quot;false&quot;&gt;true&lt;/parameter&gt;
    &lt;parameter name=&quot;keystore&quot; locked=&quot;false&quot;&gt;
        &lt;KeyStore&gt;
            &lt;Location&gt;lib/identity.jks&lt;/Location&gt;
            &lt;Type&gt;JKS&lt;/Type&gt;
            &lt;Password&gt;password&lt;/Password&gt;
            &lt;KeyPassword&gt;password&lt;/KeyPassword&gt;
        &lt;/KeyStore&gt;
    &lt;/parameter&gt;
    &lt;parameter name=&quot;truststore&quot; locked=&quot;false&quot;&gt;
        &lt;TrustStore&gt;
            &lt;Location&gt;lib/trust.jks&lt;/Location&gt;
            &lt;Type&gt;JKS&lt;/Type&gt;
            &lt;Password&gt;password&lt;/Password&gt;
        &lt;/TrustStore&gt;
    &lt;/parameter&gt;
&lt;/transportReceiver&gt;

&lt;transportSender name=&quot;http&quot;  class=&quot;org.apache.synapse.transport.nhttp.HttpCoreNIOSender&quot;&gt;
    &lt;parameter name=&quot;non-blocking&quot; locked=&quot;false&quot;&gt;true&lt;/parameter&gt;
    &lt;parameter name=&quot;warnOnHTTP500&quot; locked=&quot;false&quot;&gt;*&lt;/parameter&gt;
&lt;/transportSender&gt;

&lt;transportSender name=&quot;https&quot; class=&quot;org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender&quot;&gt;
    &lt;parameter name=&quot;non-blocking&quot; locked=&quot;false&quot;&gt;true&lt;/parameter&gt;
    &lt;parameter name=&quot;warnOnHTTP500&quot; locked=&quot;false&quot;&gt;*&lt;/parameter&gt;
    &lt;parameter name=&quot;keystore&quot; locked=&quot;false&quot;&gt;
        &lt;KeyStore&gt;
            &lt;Location&gt;lib/identity.jks&lt;/Location&gt;
            &lt;Type&gt;JKS&lt;/Type&gt;
            &lt;Password&gt;password&lt;/Password&gt;
            &lt;KeyPassword&gt;password&lt;/KeyPassword&gt;
        &lt;/KeyStore&gt;
    &lt;/parameter&gt;
    &lt;parameter name=&quot;truststore&quot; locked=&quot;false&quot;&gt;
        &lt;TrustStore&gt;
            &lt;Location&gt;lib/trust.jks&lt;/Location&gt;
            &lt;Type&gt;JKS&lt;/Type&gt;
            &lt;Password&gt;password&lt;/Password&gt;
        &lt;/TrustStore&gt;
    &lt;/parameter&gt;
    &lt;parameter name="CertificateRevocationVerifier"&gt;
            &lt;CacheSize&gt;50&lt;/CacheSize&gt;
            &lt;CacheDurationMins&gt;5&lt;/CacheDurationMins&gt;
    &lt;/parameter&gt;
&lt;/transportSender&gt;</div>
			</subsection>
			<subsection name="Transport listener parameters" id="Transport_listener_parameters">
				<p>The following parameters are supported by both the HTTP and the HTTPS listener:</p>
				<dl>
					<dt>
						<tt>port</tt>
					</dt>
					<dd>The TCP port to bind the listener to.</dd>
					<dt>
						<tt>bind-address</tt>
					</dt>
					<dd>
                        The IP address to bind the listener to. This can be used on hosts that have
                        more than one network interface or IP address to run multiple Synapse instances
                        listening to the same port. If this parameter is not specified, the
						listener will accept connections on any IP address.
					</dd>
					<dt>
						<tt>hostname</tt>
					</dt>
					<dd>
						The host name to use when computing endpoint references in generated WSDL files.
                        The default value is the host name as provided by the operation system or
						<tt>localhost</tt> if the host name can't be determined. The value of this
                        parameter is ignored if <tt>WSDLEPRPrefix</tt> is specified.
					</dd>
					<dt>
						<tt>WSDLEPRPrefix</tt>
					</dt>
					<dd>
						The URL prefix to use when computing endpoint references in generated WSDL files.
                        The value must be a valid URL with at least a protocol and host. If this value
                        is unspecified, endpoint references will be computed based on the listener type
                        (HTTP or HTTPS) and <tt>hostname</tt> and <tt>port</tt> parameters.
						<p>
							This parameter should be used if clients connect to Synapse through a frontend
                            server, e.g. a (load balancing) Apache, and these clients rely on the address
                            information in the WSDL documents exposed through <tt>...?wsdl</tt> URLs.
						</p>
					</dd>
				</dl>
				<p>The following parameters are specific to the HTTPS listener: </p>
				<dl>
					<dt>
						<tt>keystore</tt>
					</dt>
					<dd>
						The keystore configuration. The value of this parameter must be a
						<tt>&lt;KeyStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>truststore</tt>
					</dt>
					<dd>
						The truststore configuration. The value of this parameter must be a
						<tt>&lt;TrustStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>SSLVerifyClient</tt>
					</dt>
					<dd>
						This parameter has the same meaning as the corresponding
						<a class="externalLink" href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyclient">mod_ssl directive</a>
						and sets the desired certificate verification level for client authentication:
						<ul>
							<li>
								<tt>none</tt> (default): no client certificate is required at all
							</li>
							<li>
								<tt>optional</tt>: the client may present a valid certificate, but is
                                not required to do so
							</li>
							<li>
								<tt>require</tt>: the client has to present a valid certificate,
                                otherwise the connection request will be terminated during SSL handshake
							</li>
						</ul>
					</dd>
				</dl>
			</subsection>
			<subsection name="Transport sender parameters" id="Transport_sender_parameters">
				<p>
                    The following property can be used to control based on content-types whether the
                    HTTP/HTTPS sender shall output a warning for responses with HTTP status code 500.
				</p>
				<dl>
					<dt>
						<tt>warnOnHTTP500</tt>
					</dt>
					<dd>
                        A list of content-types for which Synapse shall output a warning when receiving
                        an HTTP 500 response (each value each separated by a |). By default, Synapse
                        outputs a warning for any HTTP 500 response, irrespective of the content-type.
                        Consequently, also for each SOAP fault a warning will be logged. If only for
                        specific content-types a warning shall be logged, please provide a |-separated
                        list. To output the warning for messages which do not have a content-type set,
                        please use the value 'none'.
						<p>
                            Example value: x-application/hessian|none
                        </p>
					</dd>
				</dl>
				<p>
					The following properties can be used to configure the HTTP sender to use a proxy.
                    They can be specified either as transport parameters in declared in
					<tt>&lt;transportSender&gt;</tt> or as system properties.
				</p>
				<dl>
					<dt>
						<tt>http.proxyHost</tt>
					</dt>
					<dd>The host name or address of the proxy server.</dd>
					<dt>
						<tt>http.proxyPort</tt>
					</dt>
					<dd>The TCP port of the proxy server.</dd>
					<dt>
						<tt>http.nonProxyHosts</tt>
					</dt>
					<dd>
						The hosts to which the HTTP sender should connect directly and not through
                        the proxy server. The value can be a list of hosts, each separated by a |, and
                        in addition a wildcard character (*) can be used for matching.
						<p>
							Example value:
							<tt>*.foo.com|localhost</tt>
						</p>
					</dd>
				</dl>
				<p>Note that the HTTPS sender has no proxy support yet.</p>
				<p>The following parameters are specific to the HTTPS sender:</p>
				<dl>
					<dt>
						<tt>keystore</tt>
					</dt>
					<dd>
						The keystore configuration. The value of this parameter must be a
						<tt>&lt;KeyStore&gt;</tt> element as shown in the example configurations
                        above.
					</dd>
					<dt>
						<tt>truststore</tt>
					</dt>
					<dd>
						The truststore configuration. The value of this parameter must be a
						<tt>&lt;TrustStore&gt;</tt>
						element as shown in the example configurations above.
					</dd>
					<dt>
						<tt>novalidatecert</tt>
					</dt>
					<dd>
						When set to <tt>true</tt>, this parameter disables server certificate
                        validation (trust). The default value is <tt>false</tt>. This parameter will
                        be ignored if <tt>truststore</tt> is set.
						<p>
							Setting his parameter to <tt>true</tt>
							is useful in development and test environments, but should not be used in
                            production environments. If validation is disabled, a warning message will
                            be logged at startup.
						</p>
					</dd>
					<dt>
						<tt>HostnameVerifier</tt>
					</dt>
					<dd>
						This optional parameter specifies the policy to apply when checking that the
                        hostname of the server matches the names stored inside the X.509 certificate
                        presented by the server. Possible values are <tt>Strict</tt>, <tt>AllowAll</tt>
                        and <tt>DefaultAndLocalhost</tt>. See the
						<a href="../apidocs/org/apache/synapse/transport/nhttp/HostnameVerifier.html">HostnameVerifier Javadoc</a>
						for more details.
					</dd>
                    <dt>
                        <tt>CertificateRevocationVerifier</tt>
                    </dt>
                    <dd>
                        This is an optional parameter to validate the revocation status of the host
                        certificates using <a href="http://www.ietf.org/rfc/rfc2560.txt">OCSP</a> and
                        <a href="http://www.ietf.org/rfc/rfc5280.txt">CRL</a> when making HTTPS connections.
                        Simply uncomment this parameter in the axis2.xml file to enable the feature.
                        Two LRU caches are used to cache CRLs and OCSP responses until they are expired. "CacheSize"
                        property defines the maximum size of a cache. When this limit is reached, the
                        old values will be automatically removed and updated with new values. "CacheDurationMins"
                        is used to configure the time duration (in minutes) between two consecutive
                        runs of the CacheManager task which periodically performs housekeeping work
                        in each cache. Refer the example configuration above to see how to configure
                        these properties. The scheduled CacheManager tasks for OCSP and CRL caches can
                        be manually controlled using the JMX MBeans registered under the "CacheController"
                        category.
                    </dd>
				</dl>
		</subsection>
		</section>
		 <section name="VFS transport" id="VFS_transport">
			<subsection name="Transport listener" id="Transport_listener">
		
				<p>
                    The VFS transport listener receives messages dropped in a given local or remote file
                    system location. The location is specified by a URL that either identifies a single
                    file or a directory. The transport listener will periodically poll the specified
                    location and process any file(s) found. After a file has been processed it will be
					deleted or moved to another location. Note that this is absolutely mandatory to
                    prevent the listener from processing files multiple times. Therefore, the VFS transport
                    listener can only be used in situations where it has write access to the file system
                    location and where deleting or moving the dropped files is acceptable.
				</p>
				<p>
					The transport is based on
					<a class="externalLink" href="http://commons.apache.org/vfs/">Apache Commons VFS</a>
					and supports any protocol for which a VFS provider is available. The transport is
                    pre-configured with providers for local files (
					<tt>file:</tt>
					scheme), HTTP, HTTPS, FTP and SFTP (i.e. file transfer over SSH).
				</p>
				<p>
                    There is a fundamental difference between the VFS transport and transports such as
                    HTTP and it is important to understand this difference to be able to use the VFS
                    transport correctly. The HTTP transport binds to a single protocol endpoint, i.e.
                    a TCP port on which it accepts incoming HTTP requests. These requests are then
                    dispatched to the right service based on the request URI. On the other hand, the
                    VFS transport only receives the payload of a message, but no additional information
                    that could be used to dispatch the message to a service. This means that file system
                    locations must be explicitly mapped to services. This is done using a set of service
                    parameters.
				</p>
				<p>For Synapse this means that the VFS transport listener can only be used in
                    conjunction with proxy services. The relevant service parameters are then specified
                    as follows:
				</p>
				<div class="xmlConf">&lt;proxy name=&quot;MyVFSService&quot; transports=&quot;vfs&quot;&gt;
    &lt;parameter name=&quot;transport.vfs.FileURI&quot;&gt;file:///var/spool/synapse/in&lt;/parameter&gt;
    &lt;parameter name=&quot;transport.vfs.ContentType&quot;&gt;application/xml&lt;/parameter&gt;
    ...
    &lt;target&gt;
	    ...
    &lt;/target&gt;
&lt;/proxy&gt;</div>
				<p>
					In this example the file system location
					<tt>file:///var/spool/synapse/in</tt>
					is explicitly bound to
					<tt>MyVFSService</tt>
					, i.e. any message dropped in that location will be predispatched to that service, bypassing any other configured
					dispatch mechanisms that would apply to messages received through HTTP.
				</p>
				<p>The VFS transport recognizes the following service parameters:</p>
				<dl>
					<dt>
						<tt>transport.vfs.FileURI</tt>(Required)
					</dt>
					<dd>
                        The primary File (or Directory) URI in the vfs* transport format, for this
                        service
                    </dd>
					<dt>
						<tt>transport.vfs.ContentType</tt> (Required)
					</dt>
					<dd>
						The expected content type for files retrieved for this service. The VFS
                        transport uses this information to select the appropriate message builder.
						<p>Examples:</p>
						<ul>
							<li>
								<tt>text/xml</tt> for plain XML or SOAP
							</li>
							<li>
								<tt>text/plain; charset=ISO-8859-1</tt> for text files
							</li>
							<li>
								<tt>application/octet-stream</tt> for binary data
							</li>
						</ul>
					</dd>
					<dt>
						<tt>transport.vfs.FileNamePattern</tt>
						(Optional)
					</dt>
					<dd>
                        A file name regex pattern to match files against a directory specified by
                        the FileURI
                    </dd>
					<dt>
						<tt>transport.PollInterval</tt> (Optional)
					</dt>
					<dd> The poll interval (in seconds)</dd>
					<dt>
						<tt>transport.vfs.ActionAfterProcess</tt> (Optional)
					</dt>
					<dd> DELETE or MOVE</dd>
					<dt>
						<tt>transport.vfs.MoveAfterProcess</tt> (Optional)
					</dt>
					<dd>
                        The directory to move files after processing (i.e. all files process
                        successfully)
                    </dd>
					<dt>
						<tt>transport.vfs.ActionAfterErrors</tt> (Optional)
					</dt>
					<dd> DELETE or MOVE</dd>
					<dt>
						<tt>transport.vfs.MoveAfterErrors</tt> (Optional)
					</dt>
					<dd>
                        The directory to move files after errors (i.e. some of the files succeed
                        but some fail)
                    </dd>
					<dt>
						<tt>transport.vfs.ActionAfterFailure</tt> (Optional)
					</dt>
					<dd> DELETE or MOVE</dd>
					<dt>
						<tt>transport.vfs.MoveAfterFailure</tt> (Optional)
					</dt>
					<dd> The directory to move after failure (i.e. all files fail)</dd>
					<dt>
						<tt>transport.vfs.ReplyFileURI</tt> (Optional)
					</dt>
					<dd> Reply file URI</dd>
					<dt>
						<tt>transport.vfs.ReplyFileName</tt> (Optional)
					</dt>
					<dd> Reply file name (defaults to response.xml)</dd>
					<dt>
						<tt>transport.vfs.MoveTimestampFormat</tt> (Optional)
					</dt>
					<dd>
                        Timestamp prefix format for processed file name. java.text.SimpleDateFormat
                        compatible string. e.g. yyMMddHHmmss'-'
					</dd>
					<dt>
						<tt>transport.vfs.Locking</tt> (Optional)
					</dt>
					<dd>
						By-default file locking is turned on in the VFS transport, and this parameter
                        lets you configure the locking behaviour on a per service basis. Possible values are
						<tt>enable</tt> or <tt>disable</tt>, and both these values are important because
                        the locking can be disabled at the global level by specifying that at the
                        receiver level and selectively enable locking only for a set of services.
					</dd>
					<dt>
						<tt>transport.vfs.Streaming</tt> (Optional)
					</dt>
					<dd>
						If this parameter is set to <tt>true</tt>, the transport will attempt to use a
						<tt>javax.activation.DataSource</tt> (instead of a <tt>java.io.InputStream</tt>
						) object to pass the content of the file to the message builder. Note that this
                        is only supported by some message builders, e.g. for plain text and binary.
						<p>
                            This allows processing of the message without storing the entire content
                            in memory. It also has two other side effects:
						</p>
						<ul>
							<li>
                                The incoming file (or connection in case of a remote file) will only
                                be opened on demand.
                            </li>
							<li>
                                Since the data is not cached, the file might be read several times.
                            </li>
						</ul>
						<p>
                            This option can be used to achieve streaming of large payloads. Note that
                            this feature is still somewhat experimental and might be superseded by a
                            more flexible mechanism in a future release.
						</p>
					</dd>
				</dl>
				<p>
					Note that since the VFS endpoints are configured at the level of the service, the
                    only parameter that is available at the listener is the file locking configuration
                    parameter which is optional and the transport listener is enabled in
					<tt>axis2.xml</tt>
					simply as follows:
				</p>
				<div class="xmlConf">&lt;transportReceiver name=&quot;vfs&quot; class=&quot;org.apache.synapse.transport.vfs.VFSTransportListener&quot;&gt;
    &lt;parameter name=&quot;transport.vfs.Locking&quot;&gt;enable | disable&lt;/parameter&gt; ?
&lt;/transportReceiver&gt;</div>
			</subsection>
			<subsection name="Transport sender" id="Transport_sender">
				<p>
                    The VFS transport sender allows to write outgoing messages to local or remote files.
                    As with the listener, the transport sender supports any protocol for which there
                    is a VFS provider.
				</p>
				<p>
					The sender is enabled be the following directive in
					<tt>axis2.xml</tt> file locking which is by-default enabled can be configured
                    using the <tt>transport.vfs.Locking</tt> parameter:
				</p>
				<div class="xmlConf">&lt;transportSender name=&quot;vfs&quot; class=&quot;org.apache.synapse.transport.vfs.VFSTransportSender&quot;&gt;
    &lt;parameter name=&quot;transport.vfs.Locking&quot;&gt;enable | disable&lt;/parameter&gt; ?
&lt;/transportSender&gt;</div>
				<p>
					To send a message using the VFS transport, the destination URI must start with
					<tt>vfs:</tt> followed by a valid VFS URL. For example, in a Synapse mediation,
                    one would use:
				</p>
				<div class="xmlConf">&lt;endpoint&gt;
    &lt;address uri=&quot;vfs:file:///var/spool/synapse/out&quot;/&gt;
&lt;/endpoint&gt;</div>
				<p>
					Other examples of valid VFS URLs are (see
					<a class="externalLink" href="http://commons.apache.org/vfs/filesystems.html">http://commons.apache.org/vfs/filesystems.html</a>
					for more samples):
				</p>
				<ul>
					<li>
						<tt>file:///directory/filename.ext</tt>
					</li>
					<li>
						<tt>file:////somehost/someshare/afile.txt</tt>
					</li>
					<li>
						<tt>jar:../lib/classes.jar!/META-INF/manifest.mf</tt>
					</li>
					<li>
						<tt>jar:zip:outer.zip!/nested.jar!/somedir</tt>
					</li>
					<li>
						<tt>ftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz[?vfs.passive=true]</tt>
					</li>
				</ul>
				<p>
					The global configuration of the file locking can be overriden by providing the
					<tt>transport.vfs.Locking</tt> as a URL parameter with the appropriate value (
					<tt>enable</tt>, or <tt>disable</tt>) on a given endpoint.
				</p>
				<p>
                    It should be noted that by its nature, the VFS transport sender doesn't support
                    synchronous responses and should only be invoked using the out-only message
                    exchange pattern. In a Synapse mediation, this can be forced using the
					following mediator:
				</p>
				<div class="xmlConf">&lt;property action=&quot;set&quot; name=&quot;OUT_ONLY&quot; value=&quot;true&quot;/&gt;</div>
			</subsection>
			<subsection name="Using SFTP" id="Using_SFTP">
				<p>
                    To avoid man-in-the-middle attacks, SSH clients will only connect to hosts with
                    a known host key. When connecting for the first time to an SSH server, a typical
                    command line SSH client would request confirmation from the user to add the
                    server and its fingerprint to the list of known hosts.
				</p>
				<p>
					The VFS transports supports SFTP through the
					<a class="externalLink" href="http://www.jcraft.com/jsch/">JSch</a>
					library and this library also requires a list of known hosts. Since Synapse is
                    not an interactive process, it can't request confirmation from the user and is
                    therefore unable to automatically add a host to the list. This implies that the
                    list of known hosts must be set up manually before the transport can connect.
				</p>
				<p>
					Jsch loads the list of known hosts from a file called <tt>known_hosts</tt> in
                    the <tt>.ssh</tt> sub-directory of the user's home directory, i.e. <tt>$HOME/.ssh</tt>
					in Unix and <tt>%HOMEPATH%\.ssh</tt> in Windows. The location and format of this
                    file are compatible with the <a class="externalLink" href="http://www.openssh.com/">OpenSSH</a>
					client.
				</p>
				<p>
					Since the file not only contains a list of host names but also the fingerprints
                    of their host keys, the easiest way to add a new host to that file is to simply
                    use the OpenSSH client to open an SSH session on the target host. The client will
                    then ask to add the credentials to the <tt>known_hosts</tt> file. Note that if
                    the SSH server is configured to only allow SFTP sessions, but no interactive
                    sessions, the connection will actually fail. Since this doesn't rollback the
                    change to the <tt>known_hosts</tt> file, this error can be ignored.
				</p>
			</subsection>
			<subsection name="Known issues" id="Known_issues">
				<p>
                    The VFS listener will start reading a file as soon as it appears in the configured
                    location. To avoid processing half written files, the creation of these files should
                    be made atomic. On most platforms, this can be achieved by writing the data to a
                    temporary file and then moving the file to the target location. Note however that
                    a move operation is only atomic if the source and destination are on the same
                    physical file system. The location for the temporary file should be chosen with
                    that constraint in mind.
				</p>
				<p>
                    It should also be noted that the VFS transport sender doesn't create files atomically.
                </p>
			</subsection>
		</section>
		<section name="FIX transport" id="FIX_transport">
			<p>A general overview about the FIX transport can be found in the following articles:</p>
			<ul>
				<li>
					<a class="externalLink" href="http://wso2.org/library/3449">Apache Synapse FIX'ed</a>
				</li>
				<li>
					<a class="externalLink" href="http://wso2.org/library/3837">Using the WSO2 ESB and FIX</a>
					(also applies to Synapse)
				</li>
			</ul>
			<subsection name="Setting up the FIX Transport" id="Setting_up_the_FIX_Transport">
				<p>
					To use the FIX transport, you need a local
					<a class="externalLink" href="http://www.quickfixj.org">Quickfix/J</a>
					installation. Download Quickfix/J from
					<a class="externalLink" href="http://www.quickfixj.org/downloads">http://www.quickfixj.org/downloads</a>
					.
				</p>
				<p>
                    To enable the FIX transport, you need to uncomment the FIX transport sender and
                    FIX transport receiver configurations in the SYNAPSE_HOME/repository/conf/axis2.xml.
                    Simply locate and uncomment the FIXTransportSender and FIXTransportListener sample
                    configurations. Also, add the following jars to the Synapse class path
					(SYNAPSE_HOME/lib directory).
				</p>
				<ul>
					<li>quickfixj-core.jar</li>
					<li>quickfixj-msg-fix40.jar</li>
					<li>quickfixj-msg-fix41.jar</li>
					<li>quickfixj-msg-fix42.jar</li>
					<li>quickfixj-msg-fix43.jar</li>
					<li>quickfixj-msg-fix44.jar</li>
					<li>mina-core.jar</li>
					<li>slf4j-api.jar</li>
					<li>slf4j-jdk14.jar</li>
				</ul>
				<p>All these jars are shipped with the Quickfix/J binary distribution.</p>
			</subsection>
			<subsection name="FIX Transport Parameters" id="FIX_Transport_Parameters">
				<p>
                    This is the list of all parameters accepted by the FIX transport. Refer the
                    sample 257 and 258 to see how some of them are used in practice.
				</p>
				<dl>
					<dt>
						<tt>transport.fix.AcceptorConfigURL</tt>
					</dt>
					<dd>
                        If a service needs to listen to incoming FIX messages from a remote initiator,
                        then Synapse needs to create an acceptor. This parameter should contain the
                        URL of the file which contains the FIX configuration for the acceptor.
						(See sample 257)
					</dd>
					<dt>
						<tt>transport.fix.InitiatorConfigURL</tt>
					</dt>
					<dd>
                        If a service needs to send FIX messages to a remote acceptor Synapse should
                        create an initiator. This parameter should contain the URL of the file which
                        contains the FIX configuration for the initiator. (See sample 257)
					</dd>
					<dt>
						<tt>transport.fix.AcceptorMessageStore</tt>
					</dt>
					<dd>
                        The type of message store to be used with the acceptor. Allowed values for
                        this parameter are 'file', 'jdbc', 'memory' and 'sleepycat'. If not specified
                        memory based message store will be used by default. Additional parameters
                        required to configure each of the message stores should be specified in the
                        acceptor configuration file.
					</dd>
					<dt>
						<tt>transport.fix.InitiatorMessageStore</tt>
					</dt>
					<dd>
                        Same as the above but applies only for the initiators. Additional parameters
                        required to configure each of the message stores should be specified in the
                        initiator configuration file.
					</dd>
					<dt>
						<tt>transport.fix.AcceptorLogFactory</tt>
					</dt>
					<dd>
                        Specifies the transport level log factory to be used to log messages going
                        through the acceptor. FIX messages are logged without putting them in SOAP
                        envelopes at this level. Accepted values are 'console', 'file' and 'jdbc'.
						If not specified no logging will be done at the transport level. Additional
                        parameters required to configure each of the lof factories should be specified
                        in the acceptor configuration file.
					</dd>
					<dt>
						<tt>transport.fix.InitiatorLogFactory</tt>
					</dt>
					<dd>
                        Specifies the transport level log factory to be used to log messages going
                        through the initiator. Functionality is similar to the above. Additional
                        parameters required to configure each of the lof factories should be specified
						in the initiator configuration file.
					</dd>
					<dt>
						<tt>transport.fix.ResponseDeliverToCompID</tt>
					</dt>
					<dd>
                        If a response FIX message sent from Synapse to a remote FIX engine should be
                        forwarded from the remote engine to another party, this parameter can be used
                        to set the DeliverToCompID field of the messages at Synapse.
					</dd>
					<dt>
						<tt>transport.fix.ResponseDeliverToSubID</tt>
					</dt>
					<dd>
                        If a response FIX message sent from Synapse to a remote FIX engine should be
                        forwarded from the remote engine to another party, this parameter can be used
                        to set the DeliverToSubID field of the messages at Synapse.
					</dd>
					<dt>
						<tt>transport.fix.ResponseDeliverToLocationID</tt>
					</dt>
					<dd>
                        If a response FIX message sent from Synapse to a remote FIX engine should be
                        forwarded from the remote engine to another party, this parameter can be used
                        to set the DeliverToLocationID field of the messages at Synapse.
					</dd>
					<dt>
						<tt>transport.fix.ServiceName</tt>
					</dt>
					<dd>
                        Used when messages coming over a different protocol has to be forwarded over
                        FIX. The value must be equal to the name of the service and the scope must be
                        'axis2-client' (See sample 258)
					</dd>
					<dt>
						<tt>transport.fix.SendAllToInSequence</tt>
					</dt>
					<dd>
                        When there are multiple responses to a FIX request and when we need only one
                        of them to be sent to the original requester this parameter has to be set to
                        'false'. This mostly comes handy when the original requester is communicating
                        over a different protocol (like HTTP). If this parameter is not set to 'false'
                        at such scenarios messages might get into a loop. (See sample 258)
					</dd>
					<dt>
						<tt>transport.fix.BeginStringValidation</tt>
					</dt>
					<dd>
                        When the FIX messages sent to Synapse should not be forwarded to a FIX session
                        with a different BeginString value this parameter can be set to 'true'. Setting
                        this parameter to 'true' will enforce this restriction.
					</dd>
				</dl>
			</subsection>
		</section>
        <section name="AMQP transport" id="amqp_transport">
            <subsection name="Setting Up the Transport" id="setting_up_the_amqp_transport">
                <p>
                    AMQP transport is based on the widely used
                    <a href="http://www.rabbitmq.com/java-client.html">Java AMQP client</a> library from
                    <a class="externalLink" href="http://www.rabbitmq.com/">RabbitMQ</a>.
                    The client library is not distributed with Apache Synapse, and hence in order to use
                    the AMQP transport, download the RabbitMQ Java client and copy the client library
                    (rabbitmq-client.jar) into Synapse classpath (SYNAPSE_HOME/lib directory).
                </p>
                <p>
                    To enable the AMQP transport, uncomment the AMQP transport sender and AMQP transport
                    receiver configurations in the SYNAPSE_HOME/repository/conf/axis2.xml.
                </p>
            </subsection>
            <subsection name="AMQP Transport Parameters" id="amqp_transport_parameters">
                <p>
                    Following parameters can be configured as part of AMQP transport receiver, sender,
                    a proxy service or an AMQP endpoint declaration.
                </p>
                <dl>
                    <dt>
                        <tt>transport.amqp.Uri</tt>
                    </dt>
                    <dd>The connection URL for the broker of the form
                        amqp://userName:password@hostName:portNumber/virtualHost</dd>
                    <dt>
                        <tt>transport.amqp.BrokerList</tt>
                    </dt>
                    <dd>The list of broker of the form, host1:port1,host2:port2... which will be used
                        as the address array in AMQP connection to the broker</dd>
                    <dt>
                        <tt>transport.amqp.ExchangeName</tt>
                    </dt>
                    <dd>The name of the exchange to connect</dd>
                    <dt>
                        <tt>transport.amqp.IsExchangeDurable</tt>
                    </dt>
                    <dd>Should the exchange be declared as durable?</dd>
                    <dt>
                        <tt>transport.amqp.IsExchangeAutoDelete</tt>
                    </dt>
                    <dd>Should the exchange be auto delete? Possible values are true or false</dd>
                    <dt>
                        <tt>transport.amqp.ChannelPreFetchSize</tt>
                    </dt>
                    <dd>The channel pre fetch size for fair dispatch</dd>
                    <dt>
                        <tt>transport.amqp.ChannelPreFetchCountSize</tt>
                    </dt>
                    <dd>The channel prefetch count for fair dispatch</dd>
                    <dt>
                        <tt>transport.amqp.ExchangeType</tt>
                    </dt>
                    <dd>Type of the exchange to use. Possible values are, fanout, direct, header or topic</dd>
                    <dt>
                        <tt>transport.amqp.ExchangeInternal</tt>
                    </dt>
                    <dd>Should the exchange be declared as internal? Possible values are true or false </dd>
                    <dt>
                        <tt>transport.amqp.BindExchange</tt>
                    </dt>
                    <dd>The name of the exchange that the publisher/consumer should publish/consume message to.</dd>
                    <dt>
                        <tt>transport.amqp.BindingKeys</tt>
                    </dt>
                    <dd>The comma separated binding keys this queue should be bound into exchange</dd>
                    <dt>
                        <tt>transport.amqp.RoutingKey</tt>
                    </dt>
                    <dd>The routing key to be used by the publisher.</dd>
                    <dt>
                        <tt>transport.amqp.ConsumerTx</tt>
                    </dt>
                    <dd>Use transactions at consumer side if set to true. By default, this will be
                        considered false and explicit acknowledgement will be done</dd>
                    <dt>
                        <tt>transport.amqp.QueueName</tt>
                    </dt>
                    <dd>The name of the queue</dd>
                    <dt>
                        <tt>transport.amqp.IsQueueDurable</tt>
                    </dt>
                    <dd>Should the queue declare as durable? Possible values are true or false.</dd>
                    <dt>
                        <tt>transport.amqp.IsQueueRestricted</tt>
                    </dt>
                    <dd>Should the queue declare as restricted? Possible values are true or false.</dd>
                    <dt>
                        <tt>transport.amqp.IsQueueAutoDelete</tt>
                    </dt>
                    <dd>Should the queue declare as auto delete when it's no longer in use?.
                    Possible values are true or false.</dd>
                    <dt>
                        <tt>transport.amqp.OperateOnBlockingMode</tt>
                    </dt>
                    <dd>True if the polling task should wait until it process  the accepted
                        messages. This can be used in conjunction with a single thread polling
                        task (in the whole transport, i.e. only a single AMQP proxy per flow)
                        to achieve in order delivery</dd>
                    <dt>
                        <tt>transport.amqp.ConnectionFactoryName</tt>
                    </dt>
                    <dd>The connection factory to be used either with consumer or producer.</dd>
                    <dt>
                        <tt>transport.amqp.ResponseConnectionFactoryName</tt>
                    </dt>
                    <dd>In a two-way scenario, which connection factory of the senders' should be used
                        to send the response</dd>
                    <dt>
                        <tt>transport.amqp.ScheduledTaskInitialDelay</tt>
                    </dt>
                    <dd>The initial delay (in milliseconds) that the polling task should delay before initial attempt</dd>
                    <dt>
                        <tt>transport.amqp.ScheduledTaskDelay</tt>
                    </dt>
                    <dd>The delay (in milliseconds) that the polling task should delay before next attempt.</dd>
                    <dt>
                        <tt>transport.amqp.ScheduledTaskTimeUnit</tt>
                    </dt>
                    <dd>The time unit which should use to calculate,
                        transport.amqp.ScheduledTaskInitialDelay and transport.amqp.ScheduledTaskDelay.</dd>
                    <dt>
                    <tt>transport.amqp.NoOfConcurrentConsumers</tt>
                    </dt>
                    <dd>Number of concurrent consumers per polling task.</dd>
                    <dt>
                        <tt>transport.amqp.NoOfDispatchingTask</tt>
                    </dt>
                    <dd>Number of dispatching task to use any request messages to actual processing task.</dd>
                    <dt>
                        <tt>transport.amqp.ContentType</tt>
                    </dt>
                    <dd>Configure the content type as a service parameter.</dd>
                    <dt>
                        <tt>AMQP_CONTENT_TYPE</tt>
                    </dt>
                    <dd>Message context property to set the AMQP message content type.</dd>
                    <dt>
                        <tt>AMQP_CONTENT_ENCODING</tt>
                    </dt>
                    <dd> Message context property to set the AMQP message encoding</dd>
                    <dt>
                        <tt>AMQP_HEADER_*</tt>
                    </dt>
                    <dd>Specify any AMQP headers as message context properties using AMQP_HEADER_*</dd>
                    <dt>
                        <tt>AMQP_DELIVERY_MODE</tt>
                    </dt>
                    <dd>Message context property to set the AMQP message delivery mode</dd>
                    <dt>
                        <tt>AMQP_PRIORITY</tt>
                    </dt>
                    <dd>Message context property to set the AMQP message priority.</dd>
                    <dt>
                        <tt>AMQP_CORRELATION_ID</tt>
                    </dt>
                    <dd>Message context property to set the AMQP message correlation id</dd>
                    <dt>
                        <tt>AMQP_REPLY_TO</tt>
                    </dt>
                    <dd>Message context property to set the AMQP message reply to header.</dd>
                    <dt>
                        <tt>AMQP_EXPIRATION</tt>
                    </dt>
                    <dd>Message context property to set the AMQP expiration.</dd>
                    <dt>
                        <tt>AMQP_MESSAGE_ID</tt>
                    </dt>
                    <dd>Message context property to set the message id of the AMQP message</dd>
                    <dt>
                        <tt>AMQP_TIME_STAMP</tt>
                    </dt>
                    <dd>Message context property to set the timestamp of the AMQP message.</dd>
                    <dt>
                        <tt>AMQP_TYPE</tt>
                    </dt>
                    <dd>Message context property to set the type of the AMQP message</dd>
                    <dt>
                        <tt>AMQP_PRODUCER_TX</tt>
                    </dt>
                    <dd>Use transactions at producer side. Possible values are tx(for blocking transactions),
                        lwpc(for light weight producer connections).
                    </dd>
                    <dt>
                        <tt>connection-factory-pool-size</tt>
                    </dt>
                    <dd>A system property to set the worker pool size of the connection factory executor service.</dd>
                    <dt>
                        <tt>worker-pool-size</tt>
                    </dt>
                    <dd>A system property to set the worker pool size used by deployed services for polling broker.</dd>
                    <dt>
                        <tt>semaphore-time-out</tt>
                    </dt>
                    <dd>A system property to set the timeout (in seconds) of semaphore which waits for
                    a response.
                    </dd>
                    <dt>
                        <tt>initial-reconnect-duration</tt>
                    </dt>
                    <dd>If a polling task encounter an exception due to some reason(most probably
                        due to broker outage) it will be suspended until a successful re-connect.
                        This system property defines the initial duration that the re-connection
                        check task should be suspended (1000 ms by default) before next re-try.</dd>
                    <dt>
                        <tt>reconnection-progression-factor</tt>
                    </dt>
                    <dd>A system property to define the factor (2.0 by default) to multiply the initial
                        suspended duration to calculate the next suspending duration for the
                        re-connection check task.</dd>
                    <dt>
                        <tt>maximum-reconnection-duration</tt>
                    </dt>
                    <dd>The maximum duration that re-connection check task should be suspended(
                        10 minutes by default). After this time is reached, the suspended duration
                        will be fall back to its original initial configured duration.
                    </dd>
                </dl>
            </subsection>
            <subsection name="Sample Configurations" id="amqp_transport_ex">
                    <p>Producer example</p>
                    <div class="xmlConf">
&lt;proxy name="ProducerProxy" transports="http"&gt;
    &lt;target&gt;
        &lt;inSequence&gt;
            &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
            &lt;property name="PRESERVE_WS_ADDRESSING" value="true"/&gt;"
            &lt;log level="custom"&gt;
                &lt;property name="status" value="At ProducerProxy"/&gt;
            &lt;/log&gt;
        &lt;/inSequence&gt;
        &lt;endpoint&gt;
            &lt;!--use the defined connection factory in AMQP transport sender--&gt;
            &lt;address
                uri="amqp://SimpleStockQuoteService?transport.amqp.ConnectionFactoryName=producer&amp;transport.amqp.QueueName=ProducerProxy"/&gt;
        &lt;/endpoint&gt;
        &lt;outSequence&gt;
            &lt;send/&gt;
        &lt;/outSequence&gt;
    &lt;/target&gt;
&lt;/proxy&gt;
                    </div>
                    <p>Consumer example</p>
                    <div class="xmlConf">
&lt;proxy name="ConsumerProxy" transports="amqp"&gt;
    &lt;target&gt;
        &lt;inSequence&gt;
            &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
            &lt;log level="custom"&gt;
                &lt;property name="status" value="At ConsumerProxy"/&gt;
            &lt;/log&gt;
        &lt;/inSequence&gt;
        &lt;endpoint&gt;
            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&gt;
        &lt;/endpoint&gt;
        &lt;outSequence&gt;
            &lt;send/&gt;
        &lt;/outSequence&gt;
    &lt;/target&gt;
    &lt;parameter name="transport.amqp.ConnectionFactoryName"&gt;consumer&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.QueueName"&gt;ProducerProxy&lt;/parameter&gt;
&lt;/proxy&gt;
                    </div>
                    <p>Routing example</p>
                    <div class="xmlConf">
&lt;proxy name="DirectPublisherProxy" transports="http"&gt;
    &lt;target&gt;
    &lt;inSequence&gt;
        &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
        &lt;log level="custom"&gt;
            &lt;property name="status" value="At DirectPublisherProxy"/&gt;
        &lt;/log&gt;
    &lt;/inSequence&gt;
    &lt;endpoint&gt;
        &lt;!--use the defined connection factory in AMQP transport sender, note how we don't provide
            any queue name because this is bind to the exchange--&gt;
        &lt;address
            uri="amqp://?transport.amqp.ConnectionFactoryName=publisher&amp;transport.amqp.ExchangeName=direct_logs&amp;transport.amqp.ExchangeType=direct&amp;transport.amqp.RoutingKey=error"/&gt;
    &lt;/endpoint&gt;
    &lt;outSequence&gt;
        &lt;send/&gt;
    &lt;/outSequence&gt;
    &lt;/target&gt;
&lt;/proxy&gt;

&lt;proxy name="DirectSubscriberProxy1" transports="amqp"&gt;
    &lt;target&gt;
        &lt;inSequence&gt;
            &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
            &lt;log level="custom"&gt;
                &lt;property name="status" value="At DirectSubscriberProxy 1"/&gt;
            &lt;/log&gt;
        &lt;/inSequence&gt;
        &lt;endpoint&gt;
            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&gt;
        &lt;/endpoint&gt;
        &lt;outSequence&gt;
            &lt;send/&gt;
        &lt;/outSequence&gt;
    &lt;/target&gt;
    &lt;parameter name="transport.amqp.ConnectionFactoryName"&gt;subscriber&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.ExchangeName"&gt;direct_logs&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.ExchangeType"&gt;direct&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.BindingKeys"&gt;warning,error&lt;/parameter&gt;
&lt;/proxy&gt;

&lt;proxy name="DirectSubscriberProxy2" transports="amqp"&gt;
    &lt;target&gt;
        &lt;inSequence&gt;
            &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
            &lt;log level="custom"&gt;
                &lt;property name="status" value="At DirectSubscriberProxy 2"/&gt;
            &lt;/log&gt;
        &lt;/inSequence&gt;
        &lt;endpoint&gt;
            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&gt;
        &lt;/endpoint&gt;
        &lt;outSequence&gt;
            &lt;send/&gt;
        &lt;/outSequence&gt;
    &lt;/target&gt;
    &lt;parameter name="transport.amqp.ConnectionFactoryName"&gt;subscriber&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.ExchangeName"&gt;direct_logs&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.ExchangeType"&gt;direct&lt;/parameter&gt;
    &lt;parameter name="transport.amqp.BindingKeys"&gt;error&lt;/parameter&gt;
&lt;/proxy&gt;
                    </div>
                    <p>Producer transactions</p>
                    <div class="xmlConf">
&lt;proxy name="ProducerTxProxy1" transports="http"&gt;
    &lt;target&gt;
        &lt;inSequence&gt;
            &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
            &lt;property action="set" name="AMQP_PRODUCER_TX" scope="axis2" value="lwpc"/&gt;
            &lt;log level="custom"&gt;
                &lt;property name="status" value="At ProducerTxProxy1, use light weight producer confirm..."/&gt;
            &lt;/log&gt;
        &lt;/inSequence&gt;
        &lt;endpoint&gt;
            &lt;!--use the defined connection factory in AMQP transport sender--&gt;
            &lt;address
                uri="amqp://SimpleStockQuoteService?transport.amqp.ConnectionFactoryName=producer&amp;transport.amqp.QueueName=ProducerProxy"/&gt;
        &lt;/endpoint&gt;
        &lt;outSequence&gt;
            &lt;send/&gt;
        &lt;/outSequence&gt;
    &lt;/target&gt;
&lt;/proxy&gt;
                    </div>
            </subsection>
        </section>
	</body>
</document>