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 – 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 "exotic" 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 ©2005–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 – 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 & + 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 + "org.apache.synapse.config.xml.MediatorFactory" and + "org.apache.synapse.config.xml.MediatorSerializer" 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 ©2005–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 – 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 ©2005–2023 +<a href="http://www.apache.org/">Apache Software Foundation</a>. +All rights reserved.</p> + </div> + </div> + </footer> + </body> +</html>
