<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~  Copyright (c) 2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
  ~
  ~  WSO2 Inc. 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.
  -->

<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
        <title>
            WSO2 EI - Frequently Asked Questions
        </title>
        <link href="css/EI-docs.css" rel="stylesheet"/>
        <link href="styles/dist-docs.css" rel="stylesheet" type="text/css" media="all"/>
    </head>
    <body xml:lang="en">
        [ <a href="docs_index.html"> Documentation Index </a> ]
        <h1>WSO2 Enterprise Integrator (EI) Frequently Asked Questions</h1>
        <p>
            This article provides answers to most commonly asked questions regarding WSO2 EI,
            its underlying Carbon framework, EI deployment and configuration.
        </p>
        <h2>Contents</h2>


        <div class="toc">
            <h3>General (General EI questions - Non technical)</h3>
            <ol>
                <li>
                    <a href="#general-whatis">What is WSO2 EI?</a>
                </li>
                <li>
                    <a href="#general-unique-EI">What makes WSO2 EI unique?</a>
                </li>
                <li>
                    <a href="#general-license">What is the Open Source License of WSO2 EI?</a>
                </li>
                <li>
                    <a href="#general-get-EI">How do I get WSO2 EI?</a>
                </li>
                <li>
                    <a href="#general-performance">Does WSO2 EI has performance comparison with other popular EIs?</a>
                </li>
                <li>
                    <a href="#general-support">Is their commercial support available for WSO2 EI?</a>
                </li>
                <li>
                    <a href="#general-get-invloved">Can I get involved with the EI development activities?</a>
                </li>
            </ol>

            <h3>Core (Questions related to the Carbon core and underlying framework)</h3>
            <ol>
                <li>
                    <a href="#core-underneath-tech">What are the technologies used underneath WSO2 EI?</a>
                </li>
                <li>
                    <a href="#core-requirement">What are the minimum requirements to run WSO2 EI?</a>
                </li>
                <li>
                    <a href="#core-EI-fast">What makes WSO2 EI so fast?</a>
                </li>
                <li>
                    <a href="#core-EI-clustering">Does WSO2 EI support clustering?</a>
                </li>
                <li>
                    <a href="#core-deploy-libs-occasions">In what occasions do I have to deploy a third party library into WSO2 EI?</a>
                </li>
                <li>
                    <a href="#core-how-to-deploy-libs">How do I deploy a third party library into the EI?</a>
                </li>
                <li>
                    <a href="#core-extend-mgmt-console">Can I extend the management console UI to add custom UIs ?</a>
                </li>
                <li>
                    <a href="#core-external-store">Can I use an external user store to manage and authenticate WSO2 EI users?</a>
                </li>
                <li>
                    <a href="#core-dotnet-interop">Does WSO2 EI interop with a .net client/service?</a>
                </li>
                <li>
                    <a href="#core-hessian-binary-ws">Does WSO2 EI support hessian binary web service protocol</a>
                </li>
                <li>
                    <a href="#core-omit-features">I don't want some of the features that come with WSO2 EI. Can I get rid of them?</a>
                </li>
                <li>
                    <a href="#core-multiple-languages">Can I add support for other language for the management console ?</a>
                </li>
            </ol>

            <h3>Mediation (Questions related to sequences, endpoints, proxies etc)</h3>
            <ol>
                <li>
                    <a href="#mediation-proxy-service">What is a proxy service?</a>
                </li>
                <li>
                    <a href="#mediation-transactions">Does WSO2 EI has support for transactions ?</a>
                </li>
                <li>
                    <a href="#mediation-peppol-support">Does WSO2 EI has support for PEPPOL?</a>
                </li>
                <li>
                    <a href="#mediation-put-mediators">Where do I have to put my custom mediators in WSO2 EI?</a>
                </li>
                <li>
                    <a href="#mediation-load-config">Where does WSO2 EI load its configuration from?</a>
                </li>
                <li>
                    <a href="#mediation-load-config-reg">Can I get the EI to load mediation configuration from the registry?</a>
                </li>
                <li>
                    <a href="#mediation-mediator">What is a mediator?</a>
                </li>
                <li>
                    <a href="#mediation-sequence">What is a sequence?</a>
                </li>
                <li>
                    <a href="#mediation-endpoint">What is an Endpoint?</a>
                </li>
                <li>
                    <a href="#mediation-endpoint-error-handling">Can Endpoint perform error handling?</a>
                </li>
                <li>
                    <a href="#mediation-localentries">What are local entries?</a>
                </li>
                <li>
                    <a href="#mediation-refer-seq">How can a sequence refer to another sequence?</a>
                </li>
                <li>
                    <a href="#mediation-seq-dynamic-ep">How does dynamic endpoints and sequences work?</a>
                </li>
                <li>
                    <a href="#mediation-change-ep-dynamic">How can I change the endpoint dynamically?</a>
                </li>
                <li>
                    <a href="#mediation-dynamic-proxies">I have heard of dynamic sequences and endpoints. Are there also dynamic proxy services?</a>
                </li>
                <li>
                    <a href="#mediation-binary-content-mediation">
                        I want to mediate messages containing binary content through the EI. What are the features
                        available in WSO2 EI to support my requirement?
                    </a>
                </li>
                <li>
                    <a href="#mediation-persistence">How can I implement a persistence mechanism within my mediation chain?</a>
                </li>
                <li>
                    <a href="#mediation-persistence-details">
                        I have some dynamic sequences which are loaded from the registry. What will happen to my EI if
                        the registry goes down or registry becomes unusable for a while?
                    </a>
                </li>
            </ol>

            <h3>Transports (Transport related questions)</h3>
            <ol>
                <li>
                    <a href="#transports-supported">What are the transports supported by the WSO2 EI?</a>
                </li>
                <li>
                    <a href="#transport-jms">Do I need a external JMS broker for the JMS transport?</a>
                </li>
                <li>
                    <a href="#transport-amqp">Does WSO2 EI support AMQP ?</a>
                </li>
                <li>
                    <a href="#transport-change-host">How to change the host name in WSO2 EI?</a>
                </li>
                <li>
                    <a href="#transport-proxies-connection-factories">
                        I have several JMS connection factories defined under the JMS transport receiver in the axis2.xml.
                        How can I get a particular proxy service to receive messages from one of those connection factories?
                    </a>
                </li>
                <li>
                    <a href="#transport-2way-jms">Does WSO2 EI support two way JMS scenario (request/response) ?</a>
                </li>
                <li>
                    <a href="#transport-jms-brokers">What are the JMS brokers that work with WSO2 EI?</a>
                </li>
                <li>
                    <a href="#nhttp-what-is-nhttp">What is the NHTTP transport?</a>
                </li>
                <li>
                    <a href="#nhttp-lib">What is the underlying HTTP library used by the NHTTP transport?</a>
                </li>
                <li>
                    <a href="#nhttp-tune">How can I tune up the NHTTP transport?</a>
                </li>
                <li>
                    <a href="#nhttp-general-config">Where is the general configuration of NHTTP transport?</a>
                </li>
            </ol>

            <h3>Production (Questions related to production environments)</h3>
            <ol>
                <li>
                    <a href="#production-wsdl-location">Where do I keep the WSDLs required by my proxy services?</a>
                </li>
                <li>
                    <a href="#production-graceful">What is a graceful shut down?</a>
                </li>
                <li>
                    <a href="#production-hot-update-implications">What are the implications of hot deployment/hot update in a production environment?</a>
                </li>
                <li>
                    <a href="#production-greg">I already have a WSO2 Governance Registry instance that contains my organization's SOA metadata.
                    Can I get WSO2 EI to use that registry instance as the metadata store?</a>
                </li><li>
                <a href="#production-clustering">
                    I need to setup a cluster of EI instances. How can I share the same configuration
                    among all the EI nodes?</a>
                </li>
            </ol>

            <h3>Deployment Questions (Questions related to EI deployments)</h3>
            <ol>
                <li>
                    <a href="#deploy-jdk-verions">What are the versions of Java supported by the EI?</a>
                </li>
                <li>
                    <a href="#deployment-minimum-artifacts">What are the minimum artifacts required to deploy WSO2?</a>
                </li>
                <li>
                    <a href="#deployment-disable-mgmt-console">How can I disable the management console ?</a>
                </li>
                <li>
                    <a href="#deployment-appservers">Does WSO2 EI supports application server deployments?</a>
                </li>
                <li>
                    <a href="#deployment-sysreq">What are the recommended hardware and software configurations for a typical WSO2 EI deployment?</a>
                </li>
                <li>
                    <a href="#deployment-customtask">How can I deploy a custom task?</a>
                </li>
                <li>
                    <a href="#deployment-custom-registry">How do I embed a third party registry with WSO2 EI?</a>
                </li>
                <li>
                    <a href="#deployment-dbms">What is the database management system used in WSO2 EI?</a>
                </li>
                <li>
                    <a href="#deployment-memallocation">How can I change the memory allocation for the WSO2 EI?</a>
                </li>
            </ol>

            <h3>Monitoring</h3>
            <ol>
                <li>
                    <a href="#monitoring-jmx">Does EI supports JMX monitoring?</a>
                </li>
                <li>
                    <a href="#monitoring-custom-stat-col">Does EI allows custom statistics collection?</a>
                </li>
                <li>
                    <a href="#monitoring-logging">What is logging framework used in WSO2 EI?</a>
                </li>
                <li>
                    <a href="#monitoring-debug-seq">
                        I have a sequence which does not behave the way I want it to. How can I find out what's
                        wrong with it?
                    </a>
                </li>
                <li>
                    <a href="#monitoring-debug-stat">
                        My WSO2 EI instance is receiving messages. But why I don't see any statistics on the
                        mediation statistics page?
                    </a>
                </li>
                <li>
                    <a href="#monitoring-debug-issues">
                        My EI instance is behaving weird for certain input messages. What are the tools provided
                        in the EI to help me debug the issue?
                    </a>
                </li>
            </ol>
        </div>

        <h2>General (General EI questions - Non technical)</h2>
        <ol>
            <li>
                <h3 id="general-whatis">
                    What is WSO2 EI?
                </h3>
                <p>
                    WSO2 EI is a fast, lightweight, open source Enterprise Integrator implementation. It supports
                    message routing, inter-mediation, transformation, logging, load balancing, fail over routing,
                    task scheduling, eventing and much more.
                </p>
            </li>
            <li>
                <h3 id="general-unique-EI">
                    What makes WSO2 EI unique?
                </h3>
                <p>
                    WSO2 EI 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. The feature rich admin console makes it
                    so easy to configure, control and monitor the EI runtime.
                </p>
            </li>
            <li>
                <h3 id="general-license">
                    What is the Open Source License of WSO2 EI?
                </h3>
                <p>
                    It is released under <a href="http://www.apache.org/licenses/LICENSE-2.0">
                    Apache Software License Version 2.0</a>.
                </p>
            </li>
            <li>
                <h3 id="general-get-EI">
                    How do I get WSO2 EI?
                </h3>
                <p>
                    WSO2 EI is distributed completely free and all the distribution packs can be downloaded from the
                    WSO2 Oxygen Tank. WSO2 EI can be downloaded as a binary distribution or a source distribution and
                    if required one can even checkout the complete source code from the
                    <a href="http://wso2.org/svn" >WSO2 SVN repository.</a>
                </p>
            </li>
            <li>
                <h3 id="general-performance">
                    Does WSO2 EI has performance comparison with other popular EIs?
                </h3>
                <p>
                    Yes, several rounds of performance comparison has been carried out and the results are available
                    in <a href="http://wso2.org/library/1721" >WSO2 Oxygen Tank</a>
                </p>
            </li>
            <li>
               <h3 id="general-support">
                   Is their commercial support available for WSO2 EI?
               </h3>
                <p>
                    We are committed to ensuring that your enterprise middleware deployment is completely supported
                    from evaluation to production. Our unique approach ensures that all support leverages our open
                    development methodology and is provided by the very same engineers who build the technology. For
                    more details and to take advantage of this unique opportunity please visit
                    <a href="http://wso2.com/support/">WSO2 Support</a>.

                </p>
            </li>
            <li>
                <h3 id="general-get-invloved">
                    Can I get involved with the EI development activities?
                </h3>
                <p>
                    Not only you are allowed, but it is encouraged. You can start by subscribing to carbon-dev@wso2.org
                    and architecture@wso2.org mailing lists. Feel free to provide ideas, feed back and help us make our
                    code better. You can also report bugs on our issue tracker and you can even submit patches. Visit
                    <a href="http://wso2.org/mail">WSO2 Oxygen Tank</a> for more information about our mailig lists.
                </p>
            </li>
        </ol>

        <h2>Core (Questions related to the Carbon core and underlying framework)</h2>
        <ol>
            <li>
                <h3 id="core-underneath-tech">
                    What are the technologies used underneath WSO2 EI?
                </h3>
                <p>
                    WSO2 EI is built on top of WSO2 Carbon, an OSGi based components framework for SOA. It uses
                    <a href="http://synapse.apache.org">Apache Synapse</a> as the underlying mediation engine.
                    Java is the primary programming language used to develop WSO2 EI.
                </p>
            </li>
            <li>
                <h3 id="core-requirement">
                    What are the minimum requirements to run WSO2 EI?
                </h3>
                <ul>
                    <li>
                        <strong>Hardware Requirements:</strong>
                        <ul>
                            <li>Pentium 800MHz or equivalent processor</li>
                            <li>256 MB of memory</li>
                            <li>The extracted binary distribution of WSO2 EI takes up about 130 MB of disk space
                                (WSO2 EI will require more disk space at runtime to keep temporary files,
                                server logs etc)
                            </li>
                        </ul>
                    </li>
                    <li>
                        <strong>Software Requirements:</strong>
                        <ul>
                            <li>Java Runtime Environment 1.5 or above</li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>
                <h3 id="core-EI-fast">
                    What makes WSO2 EI so fast?
                </h3>
                <p>
                    The mediation core of WSO2 EI is designed to be completely asynchronous, non-blocking and
                    streaming. It comes with a non-blocking HTTP transport adapter based on Apache HTTP Core-NIO which
                    is capable of handling a large number of concurrent connections. WSO2 EI also uses Apache AXIOM, a
                    StAX based XML infoset model, to process XML and SOAP. This enables WSO2 EI to stream messages
                    through the mediation engine without having to invoke slow XML processing routines for each and
                    every message.
                </p>
            </li>

            <li>
                <h3 id="core-EI-clustering">
                        Does WSO2 EI support clustering?
                </h3>
                <p>Yes, it supports clustered deployment. WSO2 EI uses the Apache Axis2 clustering framework to
                    support the following two clustering schemes:</p>
                <ul>
                    <li>Multicast based clustering</li>
                    <li>Well known addressing based clustering</li>
                </ul>
            </li>

            <li>
                <h3 id="core-deploy-libs-occasions">
                     In what occasions do I have to deploy a third party library into WSO2 EI?
                </h3>
                <ul>
                    <li>When enabling a new transport you will have to deploy the libraries required by the
                        transport implementation (eg: When enabling JMS you need to deploy the client libraries required
                        to connect to your JMS broker)
                    </li>
                    <li>When adding a custom mediator or a task you might have to deploy the dependencies required
                        by the custom code</li>
                </ul>
            </li>

            <li>
                <h3 id="core-how-to-deploy-libs">
                    How do I deploy a third party library into the EI?
                </h3>
                <p>
                    You can deploy any third party jar into the repository/components/lib directory. You also need to
                    restart the server for the newly deployed jars to be picked up by the server runtime. WSO2 EI will
                    convert any jar files copied into the above location into OSGi bundles. These OSGi bundles are
                    placed in the repository/components/dropins directory.
                </p>
            </li>

            <li>
                <h3 id="core-extend-mgmt-console">
                    Can I extend the management console UI to add custom UIs ?
                </h3>
                <p>
                   Yes, you can extend the management console easily by writing a custom UI component.
                </p>
            </li>

            <li>
                <h3 id="core-external-store">
                    Can I use an external user store to manage and authenticate WSO2 EI users?
                </h3>
                <p>
                    Yes you can. You can connect WSO2 EI with any external user store implementation.
                    The user store could be LDAP based, JDBC based or a custom developed user store. Please
                    refer <a href="user.core/admin_guide.html">user core documentation</a> for more details.
                </p>
            </li>

            <li>
                <h3 id="core-dotnet-interop">
                    Does WSO2 EI interop with a .net client/service?
                </h3>
                <p>
                    Yes, it does with both. WSO2 EI can be easily configured to bridge Java services with .NET clients
                    and .NET services with Java clients.
                </p>
            </li>

            <li>
                <h3 id="core-hessian-binary-ws">
                    Does WSO2 EI support hessian binary web service protocol
                </h3>
                <p>
                    Yes, it does
                </p>
            </li>

            <li>
                <h3 id="core-omit-features">
                    I don't want some of the features that come with WSO2 EI. Can I get rid of them?
                </h3>
                <p>
                    Yes you can. Login to the EI management console and browse to the Feature Manager. Open the
                    'Installed Features' tab. From here you can uninstall any unwanted features.
                </p>
            </li>

            <li>
                <h3 id="core-multiple-languages">
                    Can I add support for other language for the management console ?
                </h3>
                <p>
                    Yes, WSO2 EI comes with a UI framework which supports i18n (internationalization) which lets you
                    to use a language of your choice for the management console.
                </p>
            </li>

        </ol>

        <h2>Mediation (Questions related to sequences, endpoints, proxies etc)</h2>
        <ol>
            <li>
                <h3 id="mediation-proxy-service">
                    What is a proxy service?
                </h3>
                <p>
                    A proxy service is a virtual service hosted on the EI. 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.
                </p>
            </li>

            <li>
                <h3 id="mediation-transactions">
                    Does WSO2 EI has support for transactions ?
                </h3>
                <p>
                    Yes it does. It has support for distributed transaction, local JMS transactions and distributed JMS
                    transactions.
                </p>
            </li>
            <li>
                <h3 id="mediation-peppol-support">
                    Does WSO2 EI has support for PEPPOL?
                </h3>
                <p>
                    Yes it does. You can use WSO2 EI in an Access point.
                </p>
            </li>
            <li>
                <h3 id="mediation-put-mediators">
                    Where do I have to put my custom mediators in WSO2 EI?
                </h3>
                <p>
                    In version 3.0.1 you can place your non-OSGi custom mediators and class mediators in
                    $EI_HOME/repository/components/mediators and OSGi bundles
                    in $EI_HOME/repository/components/dropins.
                </p>
            </li>
            <li>
                <h3 id="mediation-load-config">
                    Where does WSO2 EI load its configuration from?
                </h3>
                <p>
                    WSO2 EI reads its mediation configuration from a set of XML files located at
                    repository/conf/synapse-config directory. XML files are written in the Synapse configuration
                    language. Any changes done to the configuration through the UI are saved back to the configuration
                    files. (Configuration is also written to the registry by default)
                </p>
            </li>
            <li>
                <h3 id="mediation-load-config-reg">
                    Can I get the EI to load mediation configuration from the registry?
                </h3>
                <p>
                    Yes you can. The necessary steps are given in the <a href="admin_guide.html#Registry">
                    EI administrator guide</a>.
                </p>
            </li>

            <li>
                <h3 id="mediation-mediator">
                    What is a mediator?
                </h3>
                <p>
                    A mediator is the basic message processing unit in the EI. A mediator can take a message, carry
                    out some predefined actions on it and output the modified message. WSO2 EI ships with a range of
                    mediators capable of carrying out various tasks on input messages.
                </p>
                <ul>
                    <li>Log mediator - Logs the input message</li>
                    <li>Send mediator - Sends the input message to a given endpoint</li>
                    <li>XSLT mediator - Transforms the input message using a given XSLT </li>
                </ul>
            </li>

            <li>
                <h3 id="mediation-sequence">
                    What is a sequence?
                </h3>
                <p>
                    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.
                </p>
            </li>

            <li>
                <h3 id="mediation-endpoint">
                    What is an Endpoint?
                </h3>
                <p>
                    Endpoint is a target or collection of targets that a message can deliver.
                </p>
            </li>

            <li>
                <h3 id="mediation-endpoint-error-handling">
                    Can Endpoint perform error handling?
                </h3>
                <p>
                    Yes. Endpoints can do error handling. User can configure the behavior of an endpoints when it
                    faced to a erroneous situation.  You can find detailed article about endpoint error handling
                    <a href="http://wso2.org/library/articles/wso2-enterprise-service-bus-endpoint-error-handling">
                        here.
                    </a>
                </p>
            </li>

            <li>
                <h3 id="mediation-localentries">
                    What are local entries?
                </h3>
                <p>
                    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.
                </p>
            </li>

            <li>
                <h3 id="mediation-refer-seq">
                    How can a sequence refer to another sequence?
                </h3>
                <p>
                    To refer to a sequence named foo use the sequence mediator as follows:
                </p>
                <pre xml:space="preserve">
&lt;sequence key="foo"/&gt;
                </pre>
                <p>
                    You can also refer to dynamic sequences saved in the registry by specifying the registry key to the
                    sequence resource as follows:
                </p>
                <pre xml:space="preserve">
&lt;sequence key="gov:/dev/sequences/foo"/&gt;
                </pre>
                <p>The above sequence mediator will load the sequence configuration from the resource at
                    /dev/sequences/foo in the governance registry.</p>
            </li>

            <li>
                <h3 id="mediation-seq-dynamic-ep">
                    How does dynamic endpoints and sequences work?
                </h3>
                <p>
                    Dynamic endpoints and sequences are just XML configuration bits saved in the registry. These
                    configurations are loaded to the mediation configuration at runtime. Once loaded they will be cached
                    for a specified duration in the memory. Once the cache is expired it will be loaded again from the
                    registry. Therefore changes done to dynamic sequences and endpoints at runtime will take effect
                    once the EI reloads them after a cache timeout.
                </p>
                <p>To use dynamic sequences and endpoints the mediation registry must be included in the
                    mediation configuration as follows:
                </p>
                <pre xml:space="preserve">
&lt;sequence key="foo"/&gt;
&lt;registry xmlns="http://ws.apache.org/ns/synapse" provider="org.wso2.carbon.mediation.registry.WSO2Registry"&gt;
    &lt;parameter name="cachableDuration">15000&lt;/parameter&gt;
&lt;/registry>
                </pre>
                <p>
                    This configuration can be found in a file named registry.xml in the repository/conf/synapse-config
                    directory by default. Note how the cache duration is set to 15000 ms (15s). This duration can be
                    reduced or extended as necessary by editing the registry.xml file or through the configuration
                    source editor in the UI.
                </p>
            </li>

            <li>
                <h3 id="mediation-change-ep-dynamic">
                    How can I change the endpoint dynamically?
                </h3>
                <p>
                    If you want to change the endpoint dynamically per each message, you can use a header mediator to
                    calculate the new 'To' address.
                </p>
                <pre xml:space="preserve">
&lt;header name="To" expression="XPath to create the address dynamically"/&gt;
                </pre>
            </li>

            <li>
                <h3 id="mediation-dynamic-proxies">
                    I have heard of dynamic sequences and endpoints. Are there also dynamic proxy services?
                </h3>
                <p>
                    WSO2 EI does not support dynamic proxy services. But a proxy service may use a dynamic
                    endpoint as the target endpoint and dynamic sequences as the in sequence and the out sequence.
                    This effectively makes the entire proxy service dynamic.
                </p>
            </li>

            <li>
                <h3 id="mediation-binary-content-mediation">
                    I want to mediate messages containing binary content through the EI. What are the features
                    available in WSO2 EI to support my requirement?
                </h3>
                <p>
                </p>
            </li>

            <li>
                <h3 id="mediation-persistence">
                    How can I implement a persistence mechanism within my mediation chain?
                </h3>
                <p>
                    You have two options. One option is to use dbreport and dblookup mediators to
                    persist the message into a database and lookup it later from the database. The other option is
                    to use JMS transport in which you can use a JMS broker to persist the message.
                </p>
            </li>

            <li>
                <h3 id="mediation-persistence-details">
                    I have some dynamic sequences which are loaded from the registry. What will happen to my EI if
                    the registry goes down or registry becomes unusable for a while?
                </h3>
                <p>
                    If the dynamic sequences are loaded to the memory at least once, the EI will continue to use the
                    cached version of the sequence, as long as the registry is unreachable. A warning will be logged
                    every time EI attempts to load the sequence from the registry and fails. As soon as the registry
                    comes back on-line, EI will load the sequence from the registry.
                </p>
            </li>
        </ol>

        <h2>Transports (Transport related questions)</h2>
        <ol>
            <li>
                <h3 id="transport-supported">
                    What are the transports supported by the WSO2 EI?
                </h3>
                <p>
                    HTTP, HTTPS, VFS based file transport, FIX, Hessian, HL7,UDP, JMS, Mail, TCP, XMPP
                </p>
            </li>

            <li>
                <h3 id="transport-jms">
                    Do I need an external JMS broker for the JMS transport?
                </h3>
                <p>
                    Yes, WSO2 EI requires an external JMS broker like <a href="http://activemq.apache.org">
                    Apache ActiveMQ</a>.
                </p>
            </li>

            <li>
                <h3 id="transport-amqp">
                    Does WSO2 EI support AMQP?
                </h3>
                <p>
                    WSO2 EI supports AMQP through its JMS transport. The JMS transport can be configured to
                    connect to an AMQP broker as if it was connecting to a JMS broker. This functionality has been
                    tested with <a href="http://qpid.apache.org">Apache Qpid</a> and RabbitMQ.
                </p>
            </li>

            <li>
                <h3 id="transport-change-host">
                    How to change the host name in WSO2 EI?
                </h3>
                <p>
                    You can edit parameter bind-address in http/https transport receiver to change the host name of WSO2
                    EI. This hostname will be displayed on service endpoints and generated WSDLs.
                </p>
            </li>

            <li>
                <h3 id="transport-proxies-connection-factories">
                    I have several JMS connection factories defined under the JMS transport receiver in the axis2.xml.
                    How can I get a particular proxy service to receive messages from one of those connection factories?
                </h3>
                <p>
                    You can specify the preferred connection factory by adding the following parameter to the proxy
                    service configuration.
                </p>
                <pre xml:space="preserve">
&lt;parameter name="transport.jms.ConnectionFactory"&gt;MyConnectionFactory&lt;/parameter&gt;
                </pre>
                <p>Replace 'MyConnectionFactory' with the name of the appropriate connection factory.
                    If the above parameter is not specified, proxy service will bind to the connection
                    factory named 'default'.
                </p>
            </li>

            <li>
                <h3 id="transport-2way-jms">
                    Does WSO2 EI support two way JMS scenario (request/response) ?
                </h3>
                <p>
                    Yes, you can refer <a href="samples/transport_samples.html#Sample264">sample 264</a>
                    which demonstrates exactly the JMS request/response scenario.
                </p>
            </li>

            <li>
                <h3 id="transport-jms-brokers">
                    What are the JMS brokers that work with WSO2 EI?
                </h3>
                <p>
                    Any JMS broker that provides JNDI support can be integrated with WSO2 EI. The default
                    configurations are for Apache ActiveMQ. WSO2 EI has also been tested with IBM Websphere MQ,
                    Swift MQ and JBOSS MQ.
                </p>
            </li>
            <li>
                <h3 id="nhttp-what-is-nhttp">
                    What is the NHTTP transport?
                </h3>
                <p>
                    This is the default HTTP transport used by WSO2 EI. 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 EI receives responses for the already
                    forwarded requests. Therefore WSO2 EI can accept more concurrent connections and requests than
                    most HTTP server products.
                </p>
            </li>

            <li>
                <h3 id="nhttp-lib">
                    What is the underlying HTTP library used by the NHTTP transport?
                </h3>
                <p>
                    NHTTP transport uses the <a href="http://hc.apache.org/httpcomponents-core-ga/httpcore-nio/">
                    Apache Http Core NIO</a> library underneath. This library provides low level
                    I/O handling and HTTP level detail handling.
                </p>
            </li>

            <li>
                <h3 id="nhttp-tune">
                    How can I tune up the NHTTP transport?
                </h3>
                <p>
                    There is a file called nhttp.properties in the webapps/ROOT/WEB-INF/classes directory. User can
                    change various configuration parameters like number of threads, keep alive connections through
                    this file. More information can be found in the <a href="admin_guide.html#PerfTune">EI Administrator Guide</a>.
                </p>
            </li>

            <li>
                <h3 id="nhttp-general-config">
                    Where is the general configuration of NHTTP transport?
                </h3>
                <p>
                    The NHTTP transport configuration has two parts and they are transportReceiver and transportSender.
                    Both configuration are located axis2.xml file.
                </p>
            </li>
        </ol>


        <!-- ==================================================================================================== -->
        <h2>Production (Questions related to production environments)</h2>

        <ol>
            <li>
                <h3 id="production_wsdl_location">
                    Where do I keep the WSDLs required by my proxy services?
                </h3>
                <p>
                    You can keep them as local entries. But it is recommended to keep them in the registry instead, for
                    easier and better management.
                </p>
            </li>

            <li>
                <h3 id="production-graceful">
                    What is a graceful shut down?
                </h3>
                <p>
                    When a graceful shut down is initiated EI will serve the accepted requests but stops processing
                    new requests
                </p>
            </li>

            <li>
                <h3 id="production-hot-update-implications">
                    What are the implications of hot deployment/hot update in a production environment?
                </h3>
                <p>
                    Hot deployment/hot update may take the system to inconsistent states if the updates are not properly
                    coordinated. Therefore it is recommended to turn hot deployment and hot update off for
                    production deployments.
                </p>
            </li>

            <li>
                <h3 id="production-greg">
                    I already have a WSO2 Governance Registry instance that contains my organization's SOA metadata.
                    Can I get WSO2 EI to use that registry instance as the metadata store?
                </h3>
                <p>
                    WSO2 EI integrates with WSO2 Governance Registry out of the box. Refer the administrator
                    guide for the necessary steps involved in remote registry configuration.
                </p>
            </li>

            <li>
                <h3 id="production-clustering">
                    I need to setup a cluster of EI instances. How can I share the same configuration
                    among all the EI nodes?
                </h3>
                <p>
                    You just need to put the configuration into the registry and point all EI instances to that
                    registry instance.
                </p>
            </li>
        </ol>

        <h2>Deployment (Questions related to EI deployments)</h2>
        <ol>
            <li>
                <h3 id="deployment-java-support">
                    What are the versions of Java supported by the EI?
                </h3>
                <p>
                    It is tested on JDK 1.5 and JDK 1.6. Sun JDK and IBM JDK are supported.
                </p>
            </li>

            <li>
                <h3 id="deployment-minimum-artifacts">
                    What are the minimum artifacts required to deploy WSO2?
                </h3>
                <p>
                    When deploying you can remove, $EI_HOME/samples and $EI_HOME/samples/service-bus from the
                    standard distribution.
                </p>
            </li>

            <li>
                <h3 id="deployment-disable-mgmt-console">
                    How can I disable the management console ?
                </h3>
                <p>
                    You can uninstall all the UI components using the feature manager which will disable the
                    management console.
                </p>
            </li>

           <li>
                <h3 id="deployment-appservers">
                    Does WSO2 EI supports application server deployments?
                </h3>
                <p>
                    Yes it has been tested on the following app servers. JBoss, Weblogic, Websphere and Tomcat.
                </p>
            </li>

            <li>
                <h3 id="deployment-sysreq">
                    What are the recommended hardware and software configurations for a typical WSO2 EI deployment?
                </h3>
                <ul>
                    <li>
                        <strong>Hardware configuration:</strong>
                        <ul>
                            <li>2 GHz Multicore processor</li>
                            <li>2 GB of memory</li>
                            <li>The extracted binary distribution of WSO2 EI takes up about 130 MB of disk space
                                (WSO2 EI will require more disk space at runtime to keep temporary files,
                                server logs etc)
                            </li>
                        </ul>
                    </li>
                    <li>
                        <strong>Software Requirements:</strong>
                        <ul>
                            <li>Java Runtime Environment 1.6</li>
                        </ul>
                    </li>
                </ul>
            </li>

            <li>
                <h3 id="deployment-customtask">
                    How can I deploy a custom task?
                </h3>
                <p>
                    See the documentation to see how to write a custom task. Put your non-OSGi task jar
                    into $EIhome/repository/components/lib directory. WSO2 EI will automatically deploy
                    your custom task.
                </p>
            </li>

            <li>
                <h3 id="deployment-custom-registry">
                    How do I embed a third party registry with WSO2 EI?
                </h3>
                <p>
                    You need to write a class implementing the org.apache.synapse.registry.Registry interface to
                    integrate the third party registry to WSO2 EI.
                </p>
            </li>

            <li>
                <h3 id="deployment-dbms">
                    What is the database management system used in WSO2 EI?
                </h3>
                <p>
                    WSO2 EI ships with an embedded H2 database. However any database management system can be plugged
                    into the EI via JDBC. The relevant database configurations are available in
                    repository/conf/registry.xml and repository/cong/user-mgt.xml files. WSO2 EI has been tested
                    with MySQL, Oracle, MSSQL and PostgreSQL databases.
                </p>
            </li>

            <li>
                <h3 id="deployment-memallocation">
                    How can I change the memory allocation for the WSO2 EI?
                </h3>
                <p>
                    The memory allocation setting are in the integrator.sh. The user can change the memory allocation
                    settings by changing the following configuration.
                </p>
                <p>
                    -Xms256m -Xmx512m -XX:MaxPermSize=128m
                </p>
            </li>


        </ol>


        <h2>Monitoring</h2>
        <ol>
            <li>
                <h3 id="monitoring-jmx">
                    Does EI supports JMX monitoring?
                </h3>
                <p>
                    Yes it support JMX monitoring. Users can use the JConsole for simple monitoring and use
                    JMX clients for
                    custom monitoring
                </p>
            </li>
            <li>
                <h3 id="monitoring-custom-stat-col">
                     Does EI allows custom statistics collection?
                </h3>
                <p>
                    Users can write and plug their own statistics collection mechanisms to the EI. This allows users
                    to report statistics to their own statistics collection systems.
                </p>
            </li>

            <li>
                <h3 id="monitoring-logging">
                    What is logging framework used in WSO2 EI?
                </h3>
                <p>
                    WSO2 EI uses Apache Log4/J over Apache Commons Logging as the logging framework.
                    Logging configuration is loaded from the log4j.properties file in the lib directory.
                    The UI also allows configuring logging at runtime. The generated server logs can be found in
                    the repository/logs directory.
                </p>
            </li>

            <li>
                <h3 id="monitoring-debug-seq">
                     I have a sequence which does not behave the way I want it to. How can I find out what's
                    wrong with it?
                </h3>
                <p>
                    Login to the EI management console and go to the sequence management page. Enable tracing for the
                    sequence you want to debug. Send a few messages to the sequence and go to the system logs viewer in
                    the UI (or open the wso2-EI.log file in repository/logs). Go through the generated trace logs and
                    locate the problem.
                </p>
            </li>

            <li>
                <h3 id="monitoring-debug-stat">
                    My WSO2 EI instance is receiving messages. But why I don't see any statistics on the
                    mediation statistics page?
                </h3>
                <p>
                    You  need to enable statistics on sequences, endpoints, proxy services for the EI to collect
                    statistics on them. By default WSO2 EI does not collect statistics on anything to keep the overhead
                    at a minimum. Simply enable statistics for the items you are interested in using the UI and
                    mediation statistics page will start to get updated.
                </p>
            </li>

            <li>
                <h3 id="monitoring-debug-issues">
                    My EI instance is behaving weird for certain input messages. What are the tools provided
                    in the EI to help me debug the issue?
                </h3>
                <p>
                    You can use the SOAP tracer in the UI to capture and monitor actual content of the incoming
                    messages. Enable tracing on the appropriate sequences to trace the flow of messages through
                    the EI. EI also comes with Apache TCPMon which is a simple but extremely useful too for
                    monitoring message flows.
                </p>
            </li>
        </ol>

    </body>
</html>
