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

<document>

  <properties>
    <title>The lightweight ESB - Version 1.0</title>
  </properties>

<body>

<section name="Apache Synapse - the lightweight ESB">
  <p>
 Apache Synapse is a simple, lightweight and high performance Enterprise Service Bus (ESB) from Apache. Based on a small asynchronous core, Apache Synapse has excellent support for XML and Web services - as well as binary and text formats. The Synapse engine is configured with a simple XML format and comes with a set of useful transports and mediators. We recommend you start by reading the QuickStart and then trying out the samples.
  </p>
  <p>For more information, see:</p>

  <ul>
  <li><a href="./quickstart.html">Quick Start Guide</a></li>
  <li><a href="./configuration.html">The Synapse Configuration Language</a></li>
  <li><a href="./samples.html">A Quick start with Synapse Samples</a></li>
  <li><a href="./extending.html">Extending Synapse</a></li>
  <li>The WS Wiki <a href="http://wiki.apache.org/ws/Synapse">http://wiki.apache.org/ws/Synapse</a></li>
  </ul>
</section>

<section name="Status">
	<p>Synapse graduated from the Apache Incubator on the 2nd of January 2007, and has been
    officially accepted as a sub-project of the Apache Web Services project</p>

	<p>This release of Synapse is <a href="http://synapse.apache.org/download/1.1/download.cgi">1.1</a>. Its key features are </p>

	<ul>
        <li><p>Proxy services - facilitating transport, interface (WSDL/Schema/Policy), message format (SOAP/POX), QoS (WS-Security/RM) and optimization switching (MTOM/SwA)</p></li>
        <li><p>Non-blocking http/s transports based on Apache <a target="_blank" href="http://hc.apache.org/httpcomponents-core/index.html">HttpCore</a> for ultrafast execution and support for thousands of connections</p></li>
        <li><p>Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, JS, ..)</p></li>
        <li><p>Easily extended via custom Java class/Spring mediators, or BSF Scripting languages (Javascript, Ruby etc)</p></li>
        <li><p>Load-balancing/Fail-over and Throttling support</p></li>
        <li><p>WS-Security, WS-Reliable Messaging &amp; Throttling configurable via WS-Policies</p></li>
        <li><p>JMS message support for binary, plain text and XML and SOAP payloads</p></li>
        <li><p>Lightweight, XML and Web services centric messaging model</p></li>
        <li><p>Configurations serialized into a file system for versioning/backup and restoration</p></li>
        <li><p>Support for Error handling and timeouts, and recovery</p></li>
    	<li><p>Many samples and a built-in Axis2 server to try out and experiment with samples (Samples includes WS-Security, JMS POX/Text messages, Script mediation and many more samples which can be run out of the box) </p></li>
	    <li><p>Enhanced documentation</p></li>
	</ul>
</section>
</body>
</document>
