Added: synapse/site/3_0_2/userguide/deployment.html
URL: 
http://svn.apache.org/viewvc/synapse/site/3_0_2/userguide/deployment.html?rev=1909775&view=auto
==============================================================================
--- synapse/site/3_0_2/userguide/deployment.html (added)
+++ synapse/site/3_0_2/userguide/deployment.html Fri May 12 16:09:34 2023
@@ -0,0 +1,527 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2023-05-04 
+ | Rendered using Apache Maven Fluido Skin 1.6
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20230504" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache Synapse &#x2013; Apache Synapse - Deployment Guide</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+      <script type="text/javascript" 
src="../js/apache-maven-fluido-1.6.min.js"></script>
+      </head>
+    <body class="topBarDisabled">
+      <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><div id="bannerLeft"><h2>Apache Synapse</h2>
+</div>
+</div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2023-05-04<span 
class="divider">|</span>
+</li>
+          <li id="projectVersion">Version: 3.0.2</li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+<ul class="nav nav-list">
+          <li class="nav-header">Main Menu</li>
+    <li><a href="../index.html" title="Home"><span 
class="none"></span>Home</a>  </li>
+    <li><a href="../download.html" title="Download"><span 
class="none"></span>Download</a>  </li>
+    <li><a href="../history.html" title="History"><span 
class="none"></span>History</a>  </li>
+    <li><a href="http://www.apache.org/licenses/LICENSE-2.0"; 
class="externalLink" title="License"><span class="none"></span>License</a>  
</li>
+    <li><a href="http://www.apache.org/foundation/thanks.html"; 
class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
+    <li><a href="http://www.apache.org/foundation/sponsorship.html"; 
class="externalLink" title="Sponsorship"><span 
class="none"></span>Sponsorship</a>  </li>
+    <li><a href="http://www.apache.org/security/"; class="externalLink" 
title="Security"><span class="none"></span>Security</a>  </li>
+          <li class="nav-header">Documentation</li>
+    <li><a href="../userguide/installation.html" title="Installation 
Guide"><span class="none"></span>Installation Guide</a>  </li>
+    <li><a href="../userguide/quick_start.html" title="Quick Start 
Guide"><span class="none"></span>Quick Start Guide</a>  </li>
+    <li><a href="../userguide/samples/setup/index.html" title="Samples Setup 
Guide"><span class="none"></span>Samples Setup Guide</a>  </li>
+    <li><a href="../userguide/samples.html" title="Samples Catalog"><span 
class="none"></span>Samples Catalog</a>  </li>
+    <li><a href="../userguide/config.html" title="Configuration 
Language"><span class="none"></span>Configuration Language</a>  </li>
+    <li><a href="../userguide/mediators.html" title="Mediators Catalog"><span 
class="none"></span>Mediators Catalog</a>  </li>
+    <li><a href="../userguide/transports.html" title="Transports 
Catalog"><span class="none"></span>Transports Catalog</a>  </li>
+    <li><a href="../userguide/properties.html" title="Properties 
Catalog"><span class="none"></span>Properties Catalog</a>  </li>
+    <li><a href="../userguide/xpath.html" title="XPath functions and 
Variables"><span class="none"></span>XPath functions and Variables</a>  </li>
+    <li><a href="../userguide/extending.html" title="Extending Synapse"><span 
class="none"></span>Extending Synapse</a>  </li>
+    <li><a href="../userguide/template_library.html" title="Synapse Template 
Libraries"><span class="none"></span>Synapse Template Libraries</a>  </li>
+    <li><a href="../userguide/upgrading.html" title="Upgrading"><span 
class="none"></span>Upgrading</a>  </li>
+    <li class="active"><a href="#"><span class="none"></span>Deployment</a>
+  </li>
+    <li><a href="../apidocs/" title="Javadocs"><span 
class="none"></span>Javadocs</a>  </li>
+    <li><a href="../userguide/faq.html" title="FAQ"><span 
class="none"></span>FAQ</a>  </li>
+          <li class="nav-header">Developer Resources</li>
+    <li><a href="../dev/developer-guide.html" title="Developer Guide"><span 
class="none"></span>Developer Guide</a>  </li>
+    <li><a href="../dev/best-practices.html" title="Development Best 
Practices"><span class="none"></span>Development Best Practices</a>  </li>
+    <li><a href="../dev/release-process.html" title="Release Process"><span 
class="none"></span>Release Process</a>  </li>
+          <li class="nav-header">Project Details</li>
+    <li><a href="../project-info.html" title="Overview"><span 
class="none"></span>Overview</a>  </li>
+    <li><a href="../mail-lists.html" title="Mailing Lists"><span 
class="none"></span>Mailing Lists</a>  </li>
+    <li><a href="../source-repository.html" title="Source Repository"><span 
class="none"></span>Source Repository</a>  </li>
+    <li><a href="../issue-tracking.html" title="Issue Tracking"><span 
class="none"></span>Issue Tracking</a>  </li>
+    <li><a href="../dependency-management.html" title="Dependencies"><span 
class="none"></span>Dependencies</a>  </li>
+    <li><a href="../team-list.html" title="Project Team"><span 
class="none"></span>Project Team</a>  </li>
+  </ul>
+          <hr />
+          <div id="poweredBy">
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+  <a href="http://maven.apache.org/"; title="Built by Maven" 
class="poweredBy"><img class="builtBy" alt="Built by Maven" 
src="../images/logos/maven-feather.png" /></a>
+              </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+
+    
+        <div class="section">
+<h2><a name="Deployment_Guide"></a>Deployment Guide</h2>
+            
+<p>
+                This article explains the various approaches that can be taken 
to deploy an
+                Apache Synapse server instance. It provides information on 
each deployment
+                option along with their software requirements and steps that 
need to be carried
+                out.
+            </p>
+        </div>
+        
+<div class="section">
+<h2><a name="Contents"></a>Contents</h2>
+            
+<ul>
+                
+<li>
+                    <a href="#Platform_requirements">Platform requirements</a>
+                </li>
+                
+<li>
+                    <a 
href="#Overview_of_available_deployment_options">Overview of available 
deployment options</a>
+                </li>
+                
+<li>
+                    <a href="#Stand-alone_deployment">Stand-alone 
deployment</a>
+                    
+<ul>
+                        
+<li>
+                            <a 
href="#Using_the_standard_binary_distribution">Using the standard binary 
distribution</a>
+                        </li>
+                        
+<li>
+                            <a 
href="#Using_Maven_to_build_a_custom_distribution">Using Maven to build a 
custom distribution</a>
+                        </li>
+                    </ul>
+                </li>
+                
+<li>
+                    <a href="#WAR_deployment">WAR deployment</a>
+                </li>
+            </ul>
+        </div>
+        <a name="Platform_requirements"></a>
+<div class="section" id="Platform_requirements">
+<h2><a name="Platform_requirements"></a>Platform requirements</h2>
+
+            
+<p>
+                Synapse requires Java 1.6 or higher and has been tested on 
Java runtime environments
+                from Sun, IBM and Apple.Synapse is used on various operation 
systems,
+                including Linux, Mac OS X, Solaris, Windows and AIX,
+                as well as mainframe environments. The recommended operation 
system for production use
+                is Linux since it offers a wider range of options to tune the 
TCP/IP stack. This is
+                important to optimize the performance of the NIO HTTP 
transport.
+            </p>
+            
+<p>
+                When selecting the environment for deployment, the following 
known issues should be taken into account:
+            </p>
+            
+<ul>
+                
+<li>
+                    The <tt>synapse.bat</tt> and <tt>synapse.sh</tt> scripts 
included in the binary
+                    distribution use the <tt>-server</tt> option which is not 
supported by IBM's JRE.
+                    This problem can be easily solved by manually editing 
these scripts to
+                    remove the unsupported <tt>-server</tt> option. See
+                    <a class="externalLink" 
href="https://issues.apache.org/jira/browse/SYNAPSE-454";>SYNAPSE-454</a>
+                    .
+                </li>
+                
+<li>
+                    In the past several issues related to subtle concurrency 
problems have been reported
+                    with the non-blocking HTTP transport (which is the 
recommended HTTP implementation
+                    for Synapse) when used on more &quot;exotic&quot; 
platforms. While this has been
+                    improved it is recommended to thoroughly test the HTTP 
transport before deploying
+                    Synapse in a production environment based on these 
platforms. Please don't hesitate
+                    to report any issues using JIRA or by posting a message on 
the mailing list.
+                </li>
+            </ul>
+        </div>
+
+        <a name="Overview_of_available_deployment_options"></a>
+<div class="section" id="Overview_of_available_deployment_options">
+<h2><a name="Overview_of_available_deployment_options"></a>Overview of 
available deployment options</h2>
+
+            
+<p>Synapse can be deployed in two different ways:</p>
+            
+<ul>
+                
+<li>Stand-alone, i.e. as an independently managed Java process.</li>
+                
+<li>
+                    As a J2EE application (WAR) deployed into a simple servlet 
container (e.g. Tomcat)
+                    or a full-featured J2EE application server.
+                </li>
+            </ul>
+            
+<p>
+                Since Synapse doesn't rely on any container API, the features 
offered are the same in
+                both deployment scenarios, with very few exceptions:
+            </p>
+            
+<ul>
+                
+<li>
+                    There is a minor issue that prevents classpath resources 
from being used in a
+                    WAR deployment. See <a class="externalLink" 
href="https://issues.apache.org/jira/browse/SYNAPSE-207";>SYNAPSE-207</a>
+                    .
+                </li>
+                
+<li>
+                    When deployed as a WAR file, Synapse can be configured 
with the standard Axis2
+                    servlet based HTTP transport: while the recommended HTTP 
implementation for Synapse
+                    is the NIO HTTP transport, there might be situations where 
it is preferable or
+                    mandatory to use the HTTP protocol implementation of the 
application server.
+                </li>
+            </ul>
+            
+<p>
+                In some scenarios Synapse is used to proxy services that are 
deployed themselves on
+                an application server. In these cases it would be interesting 
to deploy Synapse on
+                the same application server and use an in-VM transport instead 
of HTTP to communicate
+                with these services. Note that for the moment no 
production-grade implementation of
+                this type of transport exists yet for Axis2, but this might 
change in the future.
+            </p>
+            
+<p>
+                Since the features offered are almost the same, the 
differences between the two
+                deployment options are mainly related to packaging and 
operational considerations:
+            </p>
+            
+<ul>
+                
+<li>
+                    Many IT departments prefer deploying J2EE applications 
than managing stand-alone
+                    Java processes, because this allows them to leverage the 
management and monitoring
+                    facilities offered by the application server.
+                </li>
+                
+<li>
+                    If the use case relies on JNDI resources such as JMS 
connection factories,
+                    JDBC data source and transactions it might be easier to 
set up and configure these
+                    resources when Synapse is deployed directly on the 
application
+                    server that hosts these resources.
+                </li>
+            </ul>
+        </div>
+
+        <a name="Stand-alone_deployment"></a>
+<div class="section" id="Stand-alone_deployment">
+<h2><a name="Stand-alone_deployment"></a>Stand-alone deployment</h2>
+            <a name="Using_the_standard_binary_distribution"></a>
+<div class="section" id="Using_the_standard_binary_distribution">
+<h3><a name="Using_the_standard_binary_distribution"></a>Using the standard 
binary distribution</h3>
+                
+<p>
+                    The easiest way to get started with a stand-alone 
deployment is using the standard
+                    binary distribution ZIP or tarball (see <a 
href="../download.html">download.html</a>).
+                    It already contains everything that is needed to run 
Synapse stand-alone and you
+                    only need to customize it according to your requirements:
+                </p>
+                
+<ul>
+                    
+<li>
+                        Place your mediation configuration in 
<tt>repository/conf/synapse-config</tt>
+                        directory.
+                    </li>
+                    
+<li>
+                        Place any additional files such as WSDL files, 
endpoint definitions, etc.
+                        referenced by your configuration in the 
<tt>repository</tt> directory.
+                    </li>
+                    
+<li>
+                        Customize <tt>repository/conf/axis2.xml</tt>
+                        to enable and disable transports according to your 
needs.
+                    </li>
+                    
+<li>
+                        Add any additional libraries required by your 
mediation to the
+                        <tt>lib</tt>directory. Alternatively modify 
<tt>repository/conf/wrapper.conf</tt>
+                        to add directories and JAR files to the classpath.
+                    </li>
+                    
+<li>
+                        Add any required modules to 
<tt>repository/modules</tt>.
+                    </li>
+                    
+<li>
+                        If necessary, modify <tt>lib/log4j.properties</tt> to 
configure logging.
+                    </li>
+                </ul>
+                
+<p>
+                    Since the standard binary distribution also contains 
samples and documentation,
+                    you might want to remove the following folders:
+                </p>
+                
+<ul>
+                    
+<li>
+                        <tt>docs</tt>
+                    </li>
+                    
+<li>
+                        <tt>repository/conf/sample</tt>
+                    </li>
+                    
+<li>
+                        <tt>samples</tt>
+                    </li>
+                </ul>
+                
+<p>
+                    The <tt>bin</tt> directory contains Unix and Windows 
scripts to run Synapse:
+                </p>
+                
+<ul>
+                    
+<li>
+                        <tt>synapse.sh</tt> and <tt>synapse.bat</tt> allow to 
run Synapse in non
+                        daemon mode.
+                    </li>
+                    
+<li>
+                        <tt>synapse-daemon.sh</tt> is a Sys V init script that 
can be used on Unix
+                        systems to start and stop Synapse in daemon mode.
+                    </li>
+                    
+<li>
+                        <tt>install-synapse-service.bat</tt> and 
<tt>uninstall-synapse-service.bat</tt>
+                        can be used on Windows to install Synapse as an NT 
service.
+                    </li>
+                </ul>
+            </div>
+            <a name="Using_Maven_to_build_a_custom_distribution"></a>
+<div class="section" id="Using_Maven_to_build_a_custom_distribution">
+<h3><a name="Using_Maven_to_build_a_custom_distribution"></a>Using Maven to 
build a custom distribution</h3>
+                
+<p>
+                    Building a custom Synapse package based on the standard 
binary distribution is a
+                    manual process and this has some drawbacks:
+                </p>
+                
+<ul>
+                    
+<li>
+                        The JAR files required to run Synapse must be selected 
manually and it is not easy to identify unused JARs
+                        that could be safely removed.
+                    </li>
+                    
+<li>
+                        The process is not suitable if there is a requirement 
for strict configuration management. In particular:
+                        
+<ul>
+                            
+<li>
+                                Because of the large number of JAR files, 
managing the artifacts using
+                                a source control repository is not practical.
+                            </li>
+                            
+<li>
+                                The process is not repeatable and there is no 
way to go back to a
+                                previous version of the artifacts.
+                            </li>
+                        </ul>
+                    </li>
+                    
+<li>
+                        When upgrading to a newer version of Synapse (or when 
working with snapshot
+                        versions), it is necessary either to manually replace 
the JARs in the current
+                        package or to start again from a new version of the 
standard binary
+                        distribution.
+                    </li>
+                    
+<li>
+                        If Synapse needs to be deployed with slightly 
different configurations in
+                        multiple environments (e.g. test and production), the 
corresponding packages
+                        need to be prepared manually.
+                    </li>
+                </ul>
+                
+<p>
+                    Note that these problems not only arise in the development 
and maintenance phases
+                    of a project, but also when doing proof of concepts that 
you want to keep in a safe
+                    place for later reuse. One approach to overcome these 
difficulties is to use Maven
+                    to assemble a custom package. When used correctly, this 
approach solves all of the
+                    issues identified above. In particular Maven's dependency 
management together with
+                    the excellent <a class="externalLink" 
href="http://maven.apache.org/plugins/maven-assembly-plugin/";>assembly 
plugin</a>
+                    can be used to automatically select the relevant JARs to 
include and pull them
+                    from Maven repositories. The remaining artifacts required 
to assemble the package
+                    can then be easily stored in a source control repository.
+                </p>
+                
+<p>
+                    Synapse provides a Maven archetype that allows to set up 
this kind of project in
+                    only a few simple steps. To begin with, change to the 
directory where you want to
+                    create the project and issue the following command:
+                </p>
+                
+<div class="command">mvn archetype:generate 
-DarchetypeCatalog=http://synapse.apache.org</div>
+                
+<p>
+                    In case of problems, you can try to use the latest version 
of the archetype catalog:
+                </p>
+                
+<div class="command">mvn archetype:generate 
-DarchetypeCatalog=http://svn.apache.org/repos/asf/synapse/trunk/java/src/site/resources</div>
+                
+<p>
+                    Finally, if you have build Synapse from sources, you don't 
need to specify a
+                    catalog at all: the archetype is added automatically to 
the local catalog during
+                    the build.
+                </p>
+                
+<p>
+                    In any case, when prompted by Maven, select 
<tt>synapse-package-archetype</tt>
+                    for the Synapse version you want to use. In the next step 
enter the values for
+                    <tt>groupId</tt>, <tt>artifactId</tt> and <tt>version</tt> 
for your project. You
+                    will also be prompted for a package name. Since the 
archetype doesn't contain any source
+                    code, this value is irrelevant and you can continue with 
the default value.
+                </p>
+                
+<p>
+                    At this stage a Maven project has been created in a 
sub-directory with the same
+                    name as the <tt>artifactId</tt> specified previously. You 
should now customize this
+                    projects according to your needs:
+                </p>
+                
+<ul>
+                    
+<li>
+                        Add your mediation configuration to 
<tt>repository/conf/synapse-config</tt>
+                        directory.
+                    </li>
+                    
+<li>
+                        Customize the dependencies in <tt>pom.xml</tt>. In 
particular if additional
+                        transports such as JMS are needed, add the required 
dependencies here. Additional
+                        Axis2 modules should also be added here.
+                    </li>
+                    
+<li>
+                        Enable and configure additional transports in 
<tt>repository/conf/axis2.xml</tt>.
+                    </li>
+                    
+<li>
+                        Place any other files referenced by mediation 
configuration into the
+                        <tt>repository</tt> directory.
+                    </li>
+                </ul>
+                
+<p>
+                    The project is built as usual with the following command:
+                </p>
+                
+<div class="command">mvn package</div>
+                
+<p>
+                    This will create a ZIP file (in the <tt>target</tt> 
directory) containing
+                    everything that is needed to run your custom Synapse 
configuration. You only
+                    need to extract it and use the appropriate script in the 
<tt>bin</tt>
+                    directory to start Synapse.
+                </p>
+            </div>
+        </div>
+        <a name="WAR_deployment"></a>
+<div class="section" id="WAR_deployment">
+<h2><a name="WAR_deployment"></a>WAR deployment</h2>
+            
+<p>
+                Synapse provides a standard WAR file that can be used to 
deploy mediation on a servlet
+                container or on a J2EE application server. Note that this WAR 
file is not part of the
+                downloadable distributions. It can be retrieved from the 
following location:
+            </p>
+            
+<ul>
+                
+<li>
+                    <a class="externalLink" 
href="http://repo1.maven.org/maven2/org/apache/synapse/synapse-war/";>http://repo1.maven.org/maven2/org/apache/synapse/synapse-war/</a>
+                    for released versions.
+                </li>
+                
+<li>
+                    <a class="externalLink" 
href="https://builds.apache.org/view/All/job/Synapse%20-%20Trunk/lastBuild/org.apache.synapse$synapse-war/";>https://builds.apache.org/view/All/job/Synapse%20-%20Trunk/lastBuild/org.apache.synapse$synapse-war/
+                    </a>
+                    for snapshot versions.
+                </li>
+            </ul>
+            
+<p>
+                Customization of the Web application is similar to the 
stand-alone option, but the
+                default directory structure is different:
+            </p>
+            
+<ul>
+                
+<li>
+                    <tt>synapse.xml</tt> and <tt>axis2.xml</tt> are placed 
into the <tt>WEB-INF/conf</tt>
+                    directory. All other files referenced by your mediation 
should go to the
+                    <tt>WEB-INF/repository</tt>
+                    directory.
+                </li>
+                
+<li>
+                    Additional libraries must be placed into the standard 
<tt>WEB-INF/lib</tt>
+                    directory.
+                </li>
+                
+<li>
+                    Axis2 modules are located in <tt>repository/modules</tt>.
+                </li>
+                
+<li>
+                    <tt>log4j.properties</tt> is located in 
<tt>WEB-INF/classes</tt>.
+                </li>
+            </ul>
+        </div>
+    
+
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+            <p>Copyright &copy;2005&#x2013;2023
+<a href="http://www.apache.org/";>Apache Software Foundation</a>.
+All rights reserved.</p>
+        </div>
+        </div>
+    </footer>
+    </body>
+</html>

Added: synapse/site/3_0_2/userguide/extending.html
URL: 
http://svn.apache.org/viewvc/synapse/site/3_0_2/userguide/extending.html?rev=1909775&view=auto
==============================================================================
--- synapse/site/3_0_2/userguide/extending.html (added)
+++ synapse/site/3_0_2/userguide/extending.html Fri May 12 16:09:34 2023
@@ -0,0 +1,610 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2023-05-04 
+ | Rendered using Apache Maven Fluido Skin 1.6
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20230504" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache Synapse &#x2013; Apache Synapse - Extending Synapse</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+      <script type="text/javascript" 
src="../js/apache-maven-fluido-1.6.min.js"></script>
+      </head>
+    <body class="topBarDisabled">
+      <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><div id="bannerLeft"><h2>Apache Synapse</h2>
+</div>
+</div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2023-05-04<span 
class="divider">|</span>
+</li>
+          <li id="projectVersion">Version: 3.0.2</li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+<ul class="nav nav-list">
+          <li class="nav-header">Main Menu</li>
+    <li><a href="../index.html" title="Home"><span 
class="none"></span>Home</a>  </li>
+    <li><a href="../download.html" title="Download"><span 
class="none"></span>Download</a>  </li>
+    <li><a href="../history.html" title="History"><span 
class="none"></span>History</a>  </li>
+    <li><a href="http://www.apache.org/licenses/LICENSE-2.0"; 
class="externalLink" title="License"><span class="none"></span>License</a>  
</li>
+    <li><a href="http://www.apache.org/foundation/thanks.html"; 
class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
+    <li><a href="http://www.apache.org/foundation/sponsorship.html"; 
class="externalLink" title="Sponsorship"><span 
class="none"></span>Sponsorship</a>  </li>
+    <li><a href="http://www.apache.org/security/"; class="externalLink" 
title="Security"><span class="none"></span>Security</a>  </li>
+          <li class="nav-header">Documentation</li>
+    <li><a href="../userguide/installation.html" title="Installation 
Guide"><span class="none"></span>Installation Guide</a>  </li>
+    <li><a href="../userguide/quick_start.html" title="Quick Start 
Guide"><span class="none"></span>Quick Start Guide</a>  </li>
+    <li><a href="../userguide/samples/setup/index.html" title="Samples Setup 
Guide"><span class="none"></span>Samples Setup Guide</a>  </li>
+    <li><a href="../userguide/samples.html" title="Samples Catalog"><span 
class="none"></span>Samples Catalog</a>  </li>
+    <li><a href="../userguide/config.html" title="Configuration 
Language"><span class="none"></span>Configuration Language</a>  </li>
+    <li><a href="../userguide/mediators.html" title="Mediators Catalog"><span 
class="none"></span>Mediators Catalog</a>  </li>
+    <li><a href="../userguide/transports.html" title="Transports 
Catalog"><span class="none"></span>Transports Catalog</a>  </li>
+    <li><a href="../userguide/properties.html" title="Properties 
Catalog"><span class="none"></span>Properties Catalog</a>  </li>
+    <li><a href="../userguide/xpath.html" title="XPath functions and 
Variables"><span class="none"></span>XPath functions and Variables</a>  </li>
+    <li class="active"><a href="#"><span class="none"></span>Extending 
Synapse</a>
+  </li>
+    <li><a href="../userguide/template_library.html" title="Synapse Template 
Libraries"><span class="none"></span>Synapse Template Libraries</a>  </li>
+    <li><a href="../userguide/upgrading.html" title="Upgrading"><span 
class="none"></span>Upgrading</a>  </li>
+    <li><a href="../userguide/deployment.html" title="Deployment"><span 
class="none"></span>Deployment</a>  </li>
+    <li><a href="../apidocs/" title="Javadocs"><span 
class="none"></span>Javadocs</a>  </li>
+    <li><a href="../userguide/faq.html" title="FAQ"><span 
class="none"></span>FAQ</a>  </li>
+          <li class="nav-header">Developer Resources</li>
+    <li><a href="../dev/developer-guide.html" title="Developer Guide"><span 
class="none"></span>Developer Guide</a>  </li>
+    <li><a href="../dev/best-practices.html" title="Development Best 
Practices"><span class="none"></span>Development Best Practices</a>  </li>
+    <li><a href="../dev/release-process.html" title="Release Process"><span 
class="none"></span>Release Process</a>  </li>
+          <li class="nav-header">Project Details</li>
+    <li><a href="../project-info.html" title="Overview"><span 
class="none"></span>Overview</a>  </li>
+    <li><a href="../mail-lists.html" title="Mailing Lists"><span 
class="none"></span>Mailing Lists</a>  </li>
+    <li><a href="../source-repository.html" title="Source Repository"><span 
class="none"></span>Source Repository</a>  </li>
+    <li><a href="../issue-tracking.html" title="Issue Tracking"><span 
class="none"></span>Issue Tracking</a>  </li>
+    <li><a href="../dependency-management.html" title="Dependencies"><span 
class="none"></span>Dependencies</a>  </li>
+    <li><a href="../team-list.html" title="Project Team"><span 
class="none"></span>Project Team</a>  </li>
+  </ul>
+          <hr />
+          <div id="poweredBy">
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+  <a href="http://maven.apache.org/"; title="Built by Maven" 
class="poweredBy"><img class="builtBy" alt="Built by Maven" 
src="../images/logos/maven-feather.png" /></a>
+              </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+
+       
+                       <div id="contentBox">
+                                  
+<div class="section">
+<h2><a name="Apache_Synapse_ESB_-_Extending_Synapse"></a>Apache Synapse ESB - 
Extending Synapse</h2>
+                                       
+<p>
+                                               Apache Synapse provides a 
number of extension points so that
+                                               users can plug-in custom 
developed code to extend the
+                                               functionality of the ESB. While 
the built-in mediators are sufficient to implement
+                                               most integration scenarios, 
sometimes it is very helpful to be able to deploy some custom code into the
+                                               service bus and make the 
solution simpler. Most Synapse APIs are in Java and
+                                               therefore the users looking to 
extend Synapse are expected to have a
+                                               decent knowledge and experience 
in Java programming.
+                                       </p>
+                                       </div>
+                                       
+<div class="section">
+<h2><a name="Writing_custom_Mediator_implementations"></a>Writing custom 
Mediator implementations</h2>
+                               
+                                       
+<p>
+                                               The primary interface of the 
Synapse API is the MessageContext
+                                               interface defined below. This 
essentially defines the per-message
+                                               context passed through the 
chain of mediators, for each and every
+                                               message received and processed 
by Synapse. Each message instance is
+                                               wrapped within a MessageContext 
instance, and the message context
+                                               is set with the references to 
the SynapseConfiguration and
+                                               SynapseEnvironment objects. The
+                                               <a 
href="../apidocs/org/apache/synapse/config/SynapseConfiguration.html">SynapseConfiguration</a>
+
+                                               object holds the global 
configuration model that defines
+                                               mediation rules, local registry 
entries and other and configuration, while
+                                               the
+                                               <a 
href="../apidocs/org/apache/synapse/core/SynapseEnvironment.html">SynapseEnvironment</a>
+
+                                               object gives access to the 
underlying SOAP implementation used -
+                                               Axis2. A typical mediator would 
need to manipulate the
+                                               MessageContext by referring to 
the SynapseConfiguration. However, it
+                                               is strongly recommended that 
the SynapseConfiguration is not
+                                               updated by mediator instances 
as it is shared by all messages, and
+                                               may be updated by Synapse 
administration or configuration modules.
+                                               Mediator instances may store 
local message properties into the
+                                               MessageContext for later 
retrieval by successive mediators.
+                                               <br />
+                                       </p>
+                                       
+<div class="section">
+<div class="section">
+<h4><a name="MessageContextInterface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/MessageContext.java?view=markup";>MessageContext
+                                                       Interface
+                                               </a>
+                                       </h4>
+                                       
+<div class="xmlConf">package org.apache.synapse;
+
+import ...
+
+public interface MessageContext {
+
+    /**
+     * Get a reference to the current SynapseConfiguration
+     *
+     * @return the current synapse configuration
+     */
+    public SynapseConfiguration getConfiguration();
+
+    /**
+     * Set or replace the Synapse Configuration instance to be used. May be 
used to
+     * programmatically change the configuration at runtime etc.
+     *
+     * @param cfg The new synapse configuration instance
+     */
+    public void setConfiguration(SynapseConfiguration cfg);
+
+    /**
+     * Returns a reference to the host Synapse Environment
+     * @return the Synapse Environment
+     */
+    public SynapseEnvironment getEnvironment();
+
+    /**
+     * Sets the SynapseEnvironment reference to this context
+     * @param se the reference to the Synapse Environment
+     */
+    public void setEnvironment(SynapseEnvironment se);
+
+    /**
+     * Get the value of a custom (local) property set on the message instance
+     * @param key key to look up property
+     * @return value for the given key
+     */
+    public Object getProperty(String key);
+
+    /**
+     * Set a custom (local) property with the given name on the message 
instance
+     * @param key key to be used
+     * @param value value to be saved
+     */
+    public void setProperty(String key, Object value);
+
+    /**
+     * Returns the Set of keys over the properties on this message context
+     * @return a Set of keys over message properties
+     */
+    public Set getPropertyKeySet();
+
+    /**
+     * Get the SOAP envelope of this message
+     * @return the SOAP envelope of the message
+     */
+    public SOAPEnvelope getEnvelope();
+
+    /**
+     * Sets the given envelope as the current SOAPEnvelope for this message
+     * @param envelope the envelope to be set
+     * @throws org.apache.axis2.AxisFault on exception
+     */
+    public void setEnvelope(SOAPEnvelope envelope) throws AxisFault;
+
+    /**
+     * SOAP message related getters and setters
+     */
+    public ....get/set()...
+
+}</div>
+                                       
+<p>
+                                               The MessageContext interface is 
based on the Axis2
+                                               MessageContext  interface, and 
uses the Axis2 EndpointReference and
+                                               SOAPEnvelope 
classes/interfaces. The purpose of this interface is
+                                               to capture a message as it 
flows through the system. As you will
+                                               see the message payload is 
represented using the SOAP infoset.
+                                               Binary messages can be embedded 
in the Envelope using MTOM or SwA
+                                               attachments using the AXIOM 
object model.
+                                       </p>
+                                       </div>
+<div class="section">
+<h4><a name="Mediatorinterface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Mediator.java?view=markup";>Mediator
+                                                       interface
+                                               </a>
+                                       </h4>
+                                       
+<p>
+                                               The second key interface for 
mediator writers is the Mediator
+                                               interface:
+                                       </p>
+                                       
+<div class="xmlConf">package org.apache.synapse;
+
+import org.apache.synapse.MessageContext;
+
+/**
+ * All Synapse mediators must implement this Mediator interface. As a message 
passes
+ * through the synapse system, each mediator's mediate() method is invoked in 
the
+ * sequence/order defined in the SynapseConfiguration.
+ */
+public interface <span style="font-weight: bold;">Mediator </span>{
+
+    /**
+     * Invokes the mediator passing the current message for mediation. Each
+     * mediator performs its mediation action, and returns true if mediation
+     * should continue, or false if further mediation should be aborted.
+     *
+     * @param synCtx the current message for mediation
+     * @return true if further mediation should continue
+     */
+    public boolean mediate(MessageContext synCtx);
+
+    /**
+     * This is used for debugging purposes and exposes the type of the current
+     * mediator for logging and debugging purposes
+     * @return a String representation of the mediator type
+     */
+    public String getType();
+}</div>
+                                       
+<p>
+                                               A mediator can read and/or 
modify the message encapsulated in
+                                               the MessageContext in any 
suitable manner - adjusting the routing
+                                               headers or changing the message 
body. If the mediate() method
+                                               returns false, it signals to 
the Synapse processing model to stop
+                                               further processing of the 
message. For example, if the mediator is
+                                               a security agent it may decide 
that this message is dangerous and
+                                               should not be processed 
further. This is generally the exception as
+                                               mediators are usually designed 
to co-operate to rocess the message
+                                               onwards.
+                                       </p>
+                                       </div></div></div>
+                                       
+                                       
+<div class="section">
+<h3><a name="Leaf_and_Node_Mediators_List_mediators_and_Filter_mediators"></a>
+                                               Leaf and Node Mediators, List 
mediators and Filter mediators
+                                       </h3>
+                                       
+<p>
+                                               Mediators may be Node mediators 
(i.e. these that can contain
+                                               child mediators) or Leaf 
mediators (mediators that does not hold
+                                               any     other child mediators). 
A Node mediator must implement the
+                                               
org.apache.synapse.mediators.ListMediator interface listed below,
+                                               or extend from the
+                                               
org.apache.synapse.mediators.AbstractListMediator.
+                                       </p>
+                                       
+<div class="section">
+<h4><a name="TheListMediator_interface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/ListMediator.java?view=markup";>The
+                                                       ListMediator interface
+                                               </a>
+                                       </h4>
+                                       
+<div class="xmlConf">package org.apache.synapse.mediators;
+
+import java.util.List;
+
+/**
+* The List mediator executes a given sequence/list of child mediators
+*/
+public interface ListMediator extends Mediator {
+    /**
+    * Appends the specified mediator to the end of this mediator's (children) 
list
+    * @param m the mediator to be added
+    * @return true (as per the general contract of the Collection.add method)
+    */
+    public boolean addChild(Mediator m);
+
+    /**
+    * Appends all of the mediators in the specified collection to the end of 
this mediator's (children)
+    * list, in the order that they are returned by the specified collection's 
iterator
+    * @param c the list of mediators to be added
+    * @return true if this list changed as a result of the call
+    */
+    public boolean addAll(List c);
+
+    /**
+    * Returns the mediator at the specified position
+    * @param pos index of mediator to return
+    * @return the mediator at the specified position in this list
+    */
+    public Mediator getChild(int pos);
+
+    /**
+    * Removes the first occurrence in this list of the specified mediator
+    * @param m mediator to be removed from this list, if present
+    * @return true if this list contained the specified mediator
+    */
+    public boolean removeChild(Mediator m);
+
+    /**
+    * Removes the mediator at the specified position in this list
+    * @param pos the index of the mediator to remove
+    * @return the mediator previously at the specified position
+    */
+    public Mediator removeChild(int pos);
+
+    /**
+    * Return the list of mediators of this List mediator instance
+    * @return the child/sub mediator list
+    */
+    public List getList();
+}</div>
+                                       
+<p>
+                                               A ListMediator implementation 
should call super.mediate(synCtx)
+                                               to process      its sub 
mediator sequence. A FilterMediator is a
+                                               ListMediator which executes its 
sequence of sub mediators on
+                                               successful outcome of a test 
condition. The Mediator instance which
+                                               performs filtering should 
implement the FilterMediator interface.
+                                       </p>
+                                       </div>
+<div class="section">
+<h4><a name="FilterMediatorinterface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/FilterMediator.java?view=markup";>FilterMediator
+                                                       interface
+                                               </a>
+                                       </h4>
+                                       
+<div class="xmlConf">package org.apache.synapse.mediators;
+
+import org.apache.synapse.MessageContext;
+
+/**
+ * The filter mediator is a list mediator, which executes the given (sub) list 
of mediators
+ * if the specified condition is satisfied
+ *
+ * @see FilterMediator#test(org.apache.synapse.MessageContext)
+ */
+public interface <span style="font-weight: bold;">FilterMediator 
</span>extends ListMediator {
+
+    /**
+     * Should return true if the sub/child mediators should execute. i.e. if 
the filter
+     * condition is satisfied
+     * @param synCtx
+     * @return true if the configured filter condition evaluates to true
+     */
+    public boolean test(MessageContext synCtx);
+}</div>
+                               </div>
+                               </div></div>
+<div class="section">
+<h2><a 
name="Writing_custom_Configuration_implementations_for_mediators"></a>Writing 
custom Configuration implementations for mediators</h2>
+                                       
+<p>
+                                               You may write your own custom 
configurator for the Mediator
+                                               implementation  you write 
without relying on the Class mediator or
+                                               Spring extension for its 
initialization. You could thus write a
+                                               MediatorFactory implementation  
which defines how to digest a custom
+                                               XML configuration element to be 
used to create and configure the
+                                               custom mediator instance. A 
MediatorSerializer implementation
+                                               defines how a configuration 
should be serialized back into
+                                               an XML configuration. The 
custom MediatorFactory &amp;
+                                               MediatorSerializer      
implementations and the mediator class/es must be bundled in a JAR
+                                               file conforming to the J2SE 
Service Provider model (See the
+                                               description for Extensions 
below for more details and examples) and
+                                               placed into the 
SYNAPSE_HOME/lib folder, so that the Synapse
+                                               runtime could find and load the 
definition. Essentially this means
+                                               that a custom JAR file must 
bundle your class implementing the
+                                               Mediator interface, and the 
MediatorFactory implementation class and
+                                               contain two text files named
+                                               
&quot;org.apache.synapse.config.xml.MediatorFactory&quot; and
+                                               
&quot;org.apache.synapse.config.xml.MediatorSerializer&quot; which
+                                               will contain the fully 
qualified name(s) of your MediatorFactory
+                                               and MediatorSerializer 
implementation classes. You should also
+                                               place any dependency JARs into 
the same lib folder so that the
+                                               correct classpath references 
could be made.
+                                               The MediatorFactory interface 
listing is given below, which you
+                                               should implement, and its 
getTagQName() method must define the fully qualified
+                                               element of interest for custom 
configuration. The Synapse
+                                               initialization will call back 
to this MediatorFactory instance through the
+                                               createMediator(OMElement elem) 
method passing in this XML element,
+                                               so that an instance of the 
mediator could be created utilizing the
+                                               custom XML specification and 
returned. See the ValidateMediator and
+                                               the ValidateMediatorFactory 
classes under modules/extensions in the
+                                               Synapse source distribution for 
examples.
+                                       </p>
+                                       
+<div class="section">
+<div class="section">
+<h4><a name="TheMediatorFactory_interface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorFactory.java?view=markup";>The
+                                                       MediatorFactory 
interface
+                                               </a>
+                                       </h4>
+                                       
+<div class="xmlConf">package org.apache.synapse.config.xml;
+
+import ...
+
+/**
+ * A mediator factory capable of creating an instance of a mediator through a 
given
+ * XML should implement this interface
+ */
+public interface MediatorFactory {
+    /**
+     * Creates an instance of the mediator using the OMElement
+     * @param elem
+     * @return the created mediator
+     */
+    public Mediator createMediator(OMElement elem);
+
+    /**
+     * The QName of this mediator element in the XML config
+     * @return QName of the mediator element
+     */
+    public QName getTagQName();
+}</div>
+                                       </div>
+<div class="section">
+<h4><a name="TheMediatorSerializer_interface"></a>
+                                               <a class="externalLink" 
href="http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/MediatorSerializer.java?view=markup";>The
+                                                       MediatorSerializer 
interface
+                                               </a>
+                                       </h4>
+                                       
+<div class="xmlConf">package org.apache.synapse.config.xml;
+
+import ...
+
+/**
+ * Interface which should be implemented by mediator serializers. Does the
+ * reverse of the MediatorFactory
+ */
+public interface MediatorSerializer {
+
+    /**
+     * Return the XML representation of this mediator
+     * @param m mediator to be serialized
+     * @param parent the OMElement to which the serialization should be 
attached
+     * @return the serialized mediator XML
+     */
+    public OMElement serializeMediator(OMElement parent, Mediator m);
+
+    /**
+     * Return the class name of the mediator which can be serialized
+     * @return the class name
+     */
+    public String getMediatorClassName();
+}</div>
+                               </div></div></div>
+                               
+<div class="section">
+<h2><a name="Configuring_mediators"></a>Configuring mediators</h2>
+                                       
+<p>
+                                               Mediators could access the 
Synapse registry to load resources
+                                               and configure the local 
behaviour. Refer to the Spring mediator and
+                                               Script mediator implementations 
for examples on how this could be
+                                               achieved.
+                                       </p>
+                                       
+<div class="section">
+<div class="section">
+<h4><a name="Loading_of_Extensions_by_the_Synapse_runtime"></a>
+                                               Loading of Extensions by the 
Synapse runtime
+                                       </h4>
+                                       
+<p>
+                                               Synapse loads available 
extensions from the runtime classpath
+                                               using the
+                                               <a class="externalLink" 
href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider";>J2SE
+                                                       Service Provider model
+                                               </a>
+                                               . This essentially iterates 
over the available JAR files, for a META-INF/services directory within each 
file,
+                                               and looks for a text file with 
the name org.apache.synapse.config.xml.MediatorFactory
+                                               which contains a list of fully 
qualified classname that implement
+                                               the above interface, listing 
each class in a separate line. e.g. The
+                                               built-in synapse-extensions.jar 
contains the following structure
+                                       </p>
+                                       
+<div class="xmlConf">synapse-extensions.jar
+    /META-INF/services
+        org.apache.synapse.config.xml.MediatorFactory
+        org.apache.synapse.config.xml.MediatorSerializer
+    /... the implementation classes as usual...</div>
+                               </div></div></div>
+                               
+                               
+                               
+<div class="section">
+<h2><a name="Writing_Synapse_Observers"></a>Writing Synapse Observers</h2>
+                                       
+<p>
+                                               A Synapse observer is developed 
by either implementing the
+                                               
org.apache.synapse.config.SynapseObserver interface or by
+                                               extending the 
org.apache.synapse.config.AbstractSynapseObserver
+                                               class. A Synapse observer is 
notified by the Synapse configuration
+                                               when new elements are added to 
the configuration and
+                                               when existing elements are 
removed from the configuration. The
+                                               following event handlers are 
available to the Synapse observer implementations.
+                                       </p>
+                                       
+<div class="xmlConf"> public void sequenceAdded(Mediator sequence);
+ public void sequenceRemoved(Mediator sequence);
+ public void entryAdded(Entry entry);
+ public void entryRemoved(Entry entry);
+ public void endpointAdded(Endpoint endpoint);
+ public void endpointRemoved(Endpoint endpoint);
+ public void proxyServiceAdded(ProxyService proxy);
+ public void proxyServiceRemoved(ProxyService proxy);
+ public void startupAdded(Startup startup);
+ public void startupRemoved(Startup startup);
+ public void eventSourceAdded(SynapseEventSource eventSource);
+ public void eventSourceRemoved(SynapseEventSource eventSource);</div>
+                                       
+<p>
+                                               The AbstractSynapseObserver 
provides default implementations to
+                                               all these event handlers. It 
simply logs any received events.
+                                       </p>
+                                       
+<p>
+                                               In situations where the custom 
code has access to the
+                                               SynapseConfiguration class 
observers can be directly registered
+                                               with the SynapseConfiguration 
by using
+                                               the 
registerObserver(SynapseObserver o) method. Otherwise
+                                               SynapseObserver implementations
+                                               can be defined in the 
synapse.properties file which resides in the
+                                               SYNAPSE_HOME/lib directory. The 
following example shows how two observers are
+                                               registered with the Synapse 
configuration using the
+                                               synapse.properties file.
+                                       </p>
+                                       
+<div class="xmlConf">synapse.observers=test.LoggingObserverImpl, 
test.SimpleObserverImpl</div>
+                               </div>
+                               
+        
+<div class="section">
+<h2><a name="Scheduled_Tasks"></a>Scheduled Tasks</h2>
+            
+<p>
+                A scheduled task is a custom developed piece of Java code that
+                is scheduled in the ESB to execute periodically. A scheduled 
task
+                must implement the org.apache.synapse.task.Task
+                interface. This interface has a single 'execute' method. Once 
scheduled the
+                execute method is called by Synapse periodically.
+            </p>
+            
+<p>
+                Synapse also comes with a built-in task implementation known as
+                the    MessageInjector. This task can be used to inject 
messages into
+                the service bus        periodically. Refer     sample 300 to 
see how to use the
+                MessageInjector task.
+            </p>
+         </div>
+       
+
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+            <p>Copyright &copy;2005&#x2013;2023
+<a href="http://www.apache.org/";>Apache Software Foundation</a>.
+All rights reserved.</p>
+        </div>
+        </div>
+    </footer>
+    </body>
+</html>

Added: synapse/site/3_0_2/userguide/faq.html
URL: 
http://svn.apache.org/viewvc/synapse/site/3_0_2/userguide/faq.html?rev=1909775&view=auto
==============================================================================
--- synapse/site/3_0_2/userguide/faq.html (added)
+++ synapse/site/3_0_2/userguide/faq.html Fri May 12 16:09:34 2023
@@ -0,0 +1,480 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2023-05-04 
+ | Rendered using Apache Maven Fluido Skin 1.6
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20230504" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Apache Synapse &#x2013; FAQ</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+      <script type="text/javascript" 
src="../js/apache-maven-fluido-1.6.min.js"></script>
+      </head>
+    <body class="topBarDisabled">
+      <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><div id="bannerLeft"><h2>Apache Synapse</h2>
+</div>
+</div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2023-05-04<span 
class="divider">|</span>
+</li>
+          <li id="projectVersion">Version: 3.0.2</li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+<ul class="nav nav-list">
+          <li class="nav-header">Main Menu</li>
+    <li><a href="../index.html" title="Home"><span 
class="none"></span>Home</a>  </li>
+    <li><a href="../download.html" title="Download"><span 
class="none"></span>Download</a>  </li>
+    <li><a href="../history.html" title="History"><span 
class="none"></span>History</a>  </li>
+    <li><a href="http://www.apache.org/licenses/LICENSE-2.0"; 
class="externalLink" title="License"><span class="none"></span>License</a>  
</li>
+    <li><a href="http://www.apache.org/foundation/thanks.html"; 
class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
+    <li><a href="http://www.apache.org/foundation/sponsorship.html"; 
class="externalLink" title="Sponsorship"><span 
class="none"></span>Sponsorship</a>  </li>
+    <li><a href="http://www.apache.org/security/"; class="externalLink" 
title="Security"><span class="none"></span>Security</a>  </li>
+          <li class="nav-header">Documentation</li>
+    <li><a href="../userguide/installation.html" title="Installation 
Guide"><span class="none"></span>Installation Guide</a>  </li>
+    <li><a href="../userguide/quick_start.html" title="Quick Start 
Guide"><span class="none"></span>Quick Start Guide</a>  </li>
+    <li><a href="../userguide/samples/setup/index.html" title="Samples Setup 
Guide"><span class="none"></span>Samples Setup Guide</a>  </li>
+    <li><a href="../userguide/samples.html" title="Samples Catalog"><span 
class="none"></span>Samples Catalog</a>  </li>
+    <li><a href="../userguide/config.html" title="Configuration 
Language"><span class="none"></span>Configuration Language</a>  </li>
+    <li><a href="../userguide/mediators.html" title="Mediators Catalog"><span 
class="none"></span>Mediators Catalog</a>  </li>
+    <li><a href="../userguide/transports.html" title="Transports 
Catalog"><span class="none"></span>Transports Catalog</a>  </li>
+    <li><a href="../userguide/properties.html" title="Properties 
Catalog"><span class="none"></span>Properties Catalog</a>  </li>
+    <li><a href="../userguide/xpath.html" title="XPath functions and 
Variables"><span class="none"></span>XPath functions and Variables</a>  </li>
+    <li><a href="../userguide/extending.html" title="Extending Synapse"><span 
class="none"></span>Extending Synapse</a>  </li>
+    <li><a href="../userguide/template_library.html" title="Synapse Template 
Libraries"><span class="none"></span>Synapse Template Libraries</a>  </li>
+    <li><a href="../userguide/upgrading.html" title="Upgrading"><span 
class="none"></span>Upgrading</a>  </li>
+    <li><a href="../userguide/deployment.html" title="Deployment"><span 
class="none"></span>Deployment</a>  </li>
+    <li><a href="../apidocs/" title="Javadocs"><span 
class="none"></span>Javadocs</a>  </li>
+    <li class="active"><a href="#"><span class="none"></span>FAQ</a>
+  </li>
+          <li class="nav-header">Developer Resources</li>
+    <li><a href="../dev/developer-guide.html" title="Developer Guide"><span 
class="none"></span>Developer Guide</a>  </li>
+    <li><a href="../dev/best-practices.html" title="Development Best 
Practices"><span class="none"></span>Development Best Practices</a>  </li>
+    <li><a href="../dev/release-process.html" title="Release Process"><span 
class="none"></span>Release Process</a>  </li>
+          <li class="nav-header">Project Details</li>
+    <li><a href="../project-info.html" title="Overview"><span 
class="none"></span>Overview</a>  </li>
+    <li><a href="../mail-lists.html" title="Mailing Lists"><span 
class="none"></span>Mailing Lists</a>  </li>
+    <li><a href="../source-repository.html" title="Source Repository"><span 
class="none"></span>Source Repository</a>  </li>
+    <li><a href="../issue-tracking.html" title="Issue Tracking"><span 
class="none"></span>Issue Tracking</a>  </li>
+    <li><a href="../dependency-management.html" title="Dependencies"><span 
class="none"></span>Dependencies</a>  </li>
+    <li><a href="../team-list.html" title="Project Team"><span 
class="none"></span>Project Team</a>  </li>
+  </ul>
+          <hr />
+          <div id="poweredBy">
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+              <div class="clear"></div>
+  <a href="http://maven.apache.org/"; title="Built by Maven" 
class="poweredBy"><img class="builtBy" alt="Built by Maven" 
src="../images/logos/maven-feather.png" /></a>
+              </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+
+    
+        <div class="section">
+<h2><a name="Apache_Synapse_FAQs"></a>Apache Synapse FAQs</h2>
+            
+<p>
+                Welcome to Apache Synapse FAQs.
+            </p>
+        </div>
+        
+<div class="section">
+<h2><a 
name="GeneralGeneralApache_Synapse_questions_-_Non_technical"></a>General(GeneralApache
 Synapse questions - Non technical)</h2>
+            
+<ol style="list-style-type: decimal">
+                
+<li>
+                    What is Apache Synapse?
+                    
+<ul>
+                        
+<li>
+                            Apache Synapse is a lightweight and 
high-performance Enterprise Service
+                            Bus (ESB).
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+
+                
+<li>
+                    What makes Apache Synapse unique?
+                    
+<ul>
+                        
+<li>
+                            Apache Synapse is fast and able to handle 
thousands of concurrent
+                            connections
+                            with constant memory usage. It comes with a rich 
set of mediators to
+                            support almost any integration scenario out of the 
box. It is also
+                            easily
+                            extensible and highly customizable.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is the license?
+                    
+<ul>
+                        
+<li>
+                            Apache Synapse comes with Apache 2.0 licence.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+            </ol>
+        </div>
+
+        
+<div class="section">
+<h2><a 
name="MediationQuestions_related_to_sequences_endpoints_proxies_etc"></a>Mediation(Questions
 related to sequences, endpoints, proxies etc)</h2>
+            
+<ol style="list-style-type: decimal">
+                
+<li>
+                    What is a proxy service?
+                    
+<ul>
+                        
+<li>
+                            A proxy service is a virtual service hosted on the 
ESB. It can accept
+                            requests from service clients, just like a real 
Web Service. A proxy
+                            service can process requests and forward them to 
an actual Web Service
+                            (back end service) to be further processed. The 
responses coming back
+                            from
+                            the back end service can be routed back to the 
original client. Proxy
+                            services are mostly used to expose an existing 
service over a different
+                            transport, format or QoS configuration.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+
+                
+<li>
+                    What is a mediator?
+                    
+<ul>
+                        
+<li>
+                            A mediator is the basic message processing unit in 
the ESB. A mediator
+                            can take a message, carry out some predefined 
actions on it and output
+                            the modified message. Apache Synapse ships with a 
range of mediators capable
+                            of carrying out various tasks on input messages.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is a sequence?
+                    
+<ul>
+                        
+<li>
+                            A sequence is an ordered list of mediators (a 
mediator chain). When a
+                            sequence is given a message, it will go through 
all the mediators in the
+                            sequence. A sequence can also handover messages to 
other sequences.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is an Endpoint?
+                    
+<ul>
+                        
+<li>
+                            A logical representation of an actual endpoint or 
a group of endpoints
+                            (i.e. Load Balancing and Fail Over).
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What are Local Entries?
+                    
+<ul>
+                        
+<li>
+                            Local entries can be used to hold various 
configuration elements
+                            required by sequences and proxy services. Usually 
they are used to hold
+                            WSDLs, XSDs, XSLT files etc. A local entry can 
contain XML content as
+                            well
+                            as plain text content. A local entry can be 
configured to load content
+                            from a remote file too.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+
+                
+<li>
+                    What is a Message Mediation?
+                    
+<ul>
+                        
+<li>
+                            Managing and transforming the messages flowing 
between the client and a
+                            service in an enterprise.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+
+                
+<li>
+                    What is Message Mediation?
+                    
+<ul>
+                        
+<li>
+                            Mediating messages coming into a specific service 
by specifying the
+                            target URI as a Synapse mediation service.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is Service Mediation?
+                    
+<ul>
+                        
+<li>
+                            Mediating messages coming into a specific service 
by specifying the
+                            target URI as a Synapse mediation service.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is a Message Store?
+                    
+<ul>
+                        
+<li>
+                            Message Store is the storage for ESB messages. It 
can be an in-memory
+                            store
+                            or can be JMS store with an external Message 
Broker. You can always plug
+                            your
+                            own message store implementations as well.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is a Message Processor?
+                    
+<ul>
+                        
+<li>
+                            Message processor can be used to implement 
different messaging and
+                            integration patters along with Message stores. 
Message processors will
+                            consume
+                            the messages in message stores and do the 
processing of them.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is a Template?
+                    
+<ul>
+                        
+<li>
+                            ESB Templates try to minimize this redundancy by 
creating prototypes
+                            that
+                            users can re-use and utilize as and when needed. 
This is very much
+                            analogous
+                            to classes and instances of classes where-as, a 
template is a class that
+                            can be used to wield instance objects such as 
templates and endpoints.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is the REST Api?
+                    
+<ul>
+                        
+<li>
+                            REST Api can be used to mediate HTTP POST, GET, 
PUT and DELETE request
+                            through Synapse and to integrate various RESTful 
services.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    Can Endpoint perform error handling?
+                    
+<ul>
+                        
+<li>
+                            Yes. Endpoints can do error handling. User can 
configure the behavior
+                            of an endpoints when it faced to a erroneous 
situation.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+            </ol>
+        </div>
+        
+<div class="section">
+<h2><a name="TransportsTransport_related_questions"></a>Transports(Transport 
related questions)</h2>
+            
+<ol style="list-style-type: decimal">
+                
+<li>
+                    What are the transports supported by the Apache Synapse?
+                    
+<ul>
+                        
+<li>
+                            HTTP, HTTPS, VFS based file transport, FIX, 
Hessian, HL7,UDP, JMS, Mail,
+                            TCP, XMPP
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+
+                
+<li>
+                    Do I need an external JMS broker for the JMS transport?
+                    
+<ul>
+                        
+<li>
+                            Yes, Apache Synapse requires an external JMS 
broker like Apache ActiveMQ
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    Does Apache Synapse support two way JMS scenario 
(request/response) ?
+                    
+<ul>
+                        
+<li>
+                            Yes, you can refer sample 264 which demonstrates 
exactly the JMS
+                            request/response scenario.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is the Passthrough transport?
+                    
+<ul>
+                        
+<li>
+                            This is the default HTTP transport used by Apache 
Synapse. HTTP PassThrough Transport
+                            is a non-blocking HTTP transport implementation 
based on HTTP Core NIO and specially
+                            designed for streaming messages. It is similar to 
the old message relay transport,
+                            but it does not care about the content type and 
simply streams all received messages
+                            through. It also has a simpler and cleaner model 
for forwarding messages back and forth.
+                            It can be used as an alternative to the NHTTP 
transport.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is the NHTTP transport?
+                    
+<ul>
+                        
+<li>
+                            NHTTP stands for non-blocking HTTP. NHTTP 
transport uses the Java Non-blocking I/O API.
+                            This allows the NHTTP transport to scale into 
handling hundreds of connections
+                            without blocking the threads. The server worker 
threads used by the NHTTP
+                            transport do not get blocked on I/O until the 
Synapse receives responses
+                            for the already forwarded requests. Therefore 
Apache Synapse can accept
+                            more concurrent connections and requests than most 
HTTP server products.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+                
+<li>
+                    What is the underlying HTTP library used by the 
NHTTP/Passthrough transport?
+                    
+<ul>
+                        
+<li>
+                           NHTTP transport uses the Apache Http Core NIO 
library underneath. This
+                           library provides low level I/O handling and HTTP 
level detail handling.
+                        </li>
+                    </ul>
+                </li>
+                
+<p></p>
+            </ol>
+        </div>
+
+    
+
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+            <p>Copyright &copy;2005&#x2013;2023
+<a href="http://www.apache.org/";>Apache Software Foundation</a>.
+All rights reserved.</p>
+        </div>
+        </div>
+    </footer>
+    </body>
+</html>


Reply via email to