<?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>FAQ</title>
    </properties>
    <body>
        <section name="Apache Synapse FAQs">
            <p>
                Welcome to Apache Synapse FAQs.
            </p>
        </section>
        <section name="General(GeneralApache Synapse questions - Non technical)">
            <ol>
                <li>
                    What is Apache Synapse?
                    <ul>
                        <li>
                            Apache Synapse is a lightweight and high-performance Enterprise Service
                            Bus (ESB).
                        </li>
                    </ul>
                </li>
                <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/>
                <li>
                    What is the license?
                    <ul>
                        <li>
                            Apache Synapse comes with Apache 2.0 licence.
                        </li>
                    </ul>
                </li>
                <p/>
            </ol>
        </section>

        <section name="Mediation(Questions related to sequences, endpoints, proxies etc)">
            <ol>
                <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/>

                <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/>
                <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/>
                <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/>
                <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/>

                <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/>

                <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/>
                <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/>
                <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/>
                <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/>
                <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/>
                <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/>
                <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/>
            </ol>
        </section>
        <section name="Transports(Transport related questions)">
            <ol>
                <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/>

                <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/>
                <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/>
                <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/>
                <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/>
                <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/>
            </ol>
        </section>

    </body>
</document>
