<?xml version="1.0"?>

<document>
    <properties>
    <title>
      Synapse 1.1 Release
    </title>
  </properties>
  <body>
    <div class="section">
      <h2>
        Synapse 1.1 Release
      </h2>
        <br/>
      <table class="bodyTable">
        <tbody>
          <tr class="b">
            <th scope="col" width="20%">
              <pre class="download-header-pre">  Distribution Name  </pre>
            </th>
            <th scope="col" width="50%">
              <pre class="download-header-pre">                                             Description</pre>
            </th>
            <th scope="col">
              <pre class="download-header-pre">        Download        </pre>
            </th>
          </tr>
          <tr class="a">
            <td>
              <a name="std-bin" id="std-bin"/><strong>Standard Binary
              Distribution</strong>
            </td>
            <td>
              This is the complete version of Synapse and contains useful
              samples as well.
            </td>
            <td>
              <p class="download-pre"><a
              href="[preferred]/ws/synapse/1.1/synapse-1.1-bin.tar.gz"
              title="[preferred]/ws/synapse/1.1/Apache-Synapse-1.1-bin.zip"><strong>tar.gz </strong></a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.tar.gz.md5"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.md5">MD5</a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.tar.gz.asc"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.zip">PGP</a></p>
              <p class="download-pre"><a
              href="[preferred]/ws/synapse/1.1/synapse-1.1-bin.zip"
              title="[preferred]/ws/synapse/1.1/synapse-1.1-bin.zip"><strong>zip </strong></a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.md5"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.md5">MD5</a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.asc"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-bin.zip.zip">PGP</a></p>
            </td>
          </tr>
          <tr class="b">
            <td>
              <a name="src" id="src"/><strong>Source Distribution</strong>
            </td>
            <td>
              This contains the source code of Synapse standard distribution.
              One can generate a binary distribution from this by executing 'mvn
              clean install' followed by 'mvn assembly:assembly -Drelease'
            </td>
            <td>
              <p class="download-pre"><a
              href="[preferred]/ws/synapse/1.1/synapse-1.1-src.tar.gz"
              title="[preferred]/ws/synapse/1.1/synapse-1.1-src.zip"><strong>tar.gz </strong></a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.tar.gz.md5"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.md5"
              name="MD5" id="MD5">MD5</a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.tar.gz.asc"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.asc">PGP</a></p>
              <p class="download-pre"><a
              href="[preferred]/ws/synapse/1.1/synapse-1.1-src.zip"
              title="[preferred]/ws/synapse/1.1/synapse-1.1-src.zip"><strong>zip </strong></a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.md5"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.md5">MD5</a><a
              href="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.asc"
              class="externalLink"
              title="http://www.apache.org/dist/ws/synapse/1.1/synapse-1.1-src.zip.asc">PGP</a></p>
            </td>
          </tr>
        </tbody>
      </table>
      <br/>
      <p>
        [if-any logo] <a href="[link]"><img align="right" src="[logo]"
        border="0" alt=""/></a>[end] The currently selected mirror is <b>[preferred]</b>.
        If you encounter a problem with this mirror, please select another
        mirror. If all mirrors are failing, there are <i>backup</i>
        mirrors (at the end of the mirrors list) that should be available.
      </p>
      <form action="[location]" method="get" id="SelectMirror">
        Other mirrors: <select name="Preferred">
        [if-any http][for http]
        <option value="[http]" selected="selected">
          [http]</option>[end][end][if-any ftp][for ftp]
        <option value="[ftp]">
          [ftp]</option>[end][end][if-any backup][for backup]
        <option value="[backup]">
          [backup] (backup)
        </option>[end][end]</select>
        <input type="submit" value="Change"/>
      </form>
      <p>
        You may also consult the <a href="http://www.apache.org/mirrors/"
        class="externalLink" title="External Link">complete list of mirrors</a>.
      </p>
      <p>
        <strong>Note:</strong> when downloading from a mirror please
        check the <a href="http://www.apache.org/dev/release-signing#md5"
        class="externalLink" title="External Link">md5sum</a> and verify
        the <a href="http://www.apache.org/dev/release-signing#openpgp"
        class="externalLink" title="External Link">OpenPGP</a> compatible
        signature from the main Apache site. These can be downloaded by
        following the links above. This <a
        href="http://www.apache.org/dist/ws/synapse/KEYS" class="externalLink"
        title="External Link">KEYS</a> file contains the public keys used
        for signing release. It is recommended that (when possible) a <a
        href="http://www.apache.org/dev/release-signing#web-of-trust"
        class="externalLink" title="External Link">Web of trust</a> is
        used to confirm the identity of these keys.
      </p>
    </div>
  </body>
</document>