Thanks Frizhan, Udara, Lasantha for replies.

Hi Lasantha,

I am using ESB 4.8.1, which is the latest available through WSO2 website.

I have attached the axis2.xml and carbon.xml here. And following is git my
deployer class in Github.

https://github.com/lahiruchandima/event-sink/blob/master/org.wso2.carbon.event.sink/4.2.0/src/main/java/org/wso2/carbon/event/sink/EventSinkDeployer.java

Can you please have a look?

Thanks


On Sat, Nov 15, 2014 at 2:54 PM, Lasantha Fernando <lasan...@wso2.com>
wrote:

> Hi Lahiru,
>
> On 15 November 2014 14:04, Udara Liyanage <ud...@wso2.com> wrote:
>
>> Hi,
>>
>> I don't think manually touching the artifacts is a wise solution.
>> As mentioned by Lasantha artifacts are not deployed until tenant is
>> loaded. Imagine a production setup with a large number of tenants and each
>> tenant has artifacts, then it will takes a long time to deploy all
>> artifacts. Delaying artifact deployment is called ghost deployment [1].
>> Try sending a request to the not deployed artifacts and check if deploy()
>> is get called.
>>
>> [1]
>> http://blog.afkham.org/2011/11/lazy-loading-deployment-artifacts-in.html?m=1
>>
>>
>>
>> Touched, not typed. Erroneous words are a feature, not a typo.
>> On Nov 15, 2014 1:49 PM, "Firzhan Naqash" <firz...@wso2.com> wrote:
>>
>>> Hi Lahiru,
>>>
>>> You can get the carbon tenant repository by
>>> using CarbonUtils.getCarbonTenantsDirPath().
>>>
>>> With in the the tenant repository you can get the array of folder names
>>> ( tenant ID ).
>>>
>>> There after you can iterate the tenant id array and access the
>>> event-sinks folder for each tenant.
>>>
>>>
>>> Regards,
>>> Firzhan
>>>
>>> On Sat, Nov 15, 2014 at 1:32 PM, Lahiru Chandima <lahi...@wso2.com>
>>> wrote:
>>>
>>>> Thanks Frizhan for the nice solution :)
>>>>
>>>> Do you know a way to programmatically get deployment directory path of
>>>> a tenant?
>>>>
>>>> Thanks
>>>>
>>>> On Sat, Nov 15, 2014 at 1:12 PM, Firzhan Naqash <firz...@wso2.com>
>>>> wrote:
>>>>
>>>>> Hi Lahiru,
>>>>>
>>>>> On that case, you can touch(update) the artifacts of tenanat's once
>>>>> the bundle get activated :) . This is not an elegant solution.
>>>>>
>>>>> There might be other better proper ways to achieve this.
>>>>>
>>>>> Regards,
>>>>> Firzhan
>>>>>
>>>>> On Sat, Nov 15, 2014 at 12:35 PM, Lahiru Chandima <lahi...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Frizhan,
>>>>>>
>>>>>> Thanks for the information.
>>>>>>
>>>>>> Is there any way I can automatically re-deploy artifacts for tenants
>>>>>> on startup? If I log in using a tenant user to ESB, I can see the proxy
>>>>>> service artifacts that were added earlier, showing that they were somehow
>>>>>> re-deployed. So I think there should be a way.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Sat, Nov 15, 2014 at 10:31 AM, Firzhan Naqash <firz...@wso2.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Lahiru,
>>>>>>>
>>>>>>> Deployer's deploy() method will get trigger only when artifacts are
>>>>>>> being deployed.
>>>>>>>
>>>>>>> For super-tenant during the server start-up axis2 re-deploys the
>>>>>>> artifacts, thus triggering deploy(). But for tenants nothing happens 
>>>>>>> like
>>>>>>> that unless you do it manually.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>> Firzhan
>>>>>>>
>>>>>>> On Sat, Nov 15, 2014 at 7:33 AM, Lahiru Chandima <lahi...@wso2.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Lasantha,
>>>>>>>>
>>>>>>>> Thanks for the solution.
>>>>>>>>
>>>>>>>> logging in as a tenant user solved the problem. Now new artifacts
>>>>>>>> that I add after tenant is loaded get deployed.
>>>>>>>>
>>>>>>>> But, the artifacts that were already there in my tenant artifact
>>>>>>>> directory neither gets deployed at server startup nor when a tenant 
>>>>>>>> user is
>>>>>>>> logged in. But these artifacts get deployed if I do some change to them
>>>>>>>> after a tenant user logs in.
>>>>>>>>
>>>>>>>> What may be the reason for this?
>>>>>>>>
>>>>>>>
> This is actually strange. When ghost deployment is not enabled (which is
> the  default AFAIK), when the tenant is loaded all the related artifacts
> should get deployed (as explained in the blog post by Azeez which was
> suggested by Udara above). I assume you are testing this on a Carbon-4.3.0
> based server (ESB-4.9.0?). I tested this scenario for CEP 4.0.0-SNAPSHOT
> build which is also based on Carbon 4.3.0 and tenant artifacts that were
> previously there in the directory get deployed fine after the tenant is
> loaded.
>
> Can you share the configs (axis2.xml, carbon.xml) related to your test
> setup? Also, do you have any source location where your deployer code is
> committed? Maybe we can go through that and see if there is any config
> issue or similar.
>
>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Nov 15, 2014 at 12:08 AM, Lasantha Fernando <
>>>>>>>> lasan...@wso2.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Lahiru,
>>>>>>>>>
>>>>>>>>> Can you verify whether your tenant is loaded in the server? (If
>>>>>>>>> you simply login as a tenant user, the tenant should be loaded)
>>>>>>>>>
>>>>>>>>> If your tenant is not loaded, the deployment of artifacts for that
>>>>>>>>> particular tenant will not happen. AFAIK, this is the expected 
>>>>>>>>> behaviour
>>>>>>>>> for a carbon server since we load tenants lazily.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Lasantha
>>>>>>>>>
>>>>>>>>> On 14 November 2014 22:58, Lahiru Chandima <lahi...@wso2.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Firzhan,
>>>>>>>>>>
>>>>>>>>>> Thanks for the reply.
>>>>>>>>>>
>>>>>>>>>> Tried your method and its working for files deployed in
>>>>>>>>>> repository/deployment/server/event-sinks. But still no luck with 
>>>>>>>>>> deploying
>>>>>>>>>> for a tenant (in repository/tenants/1/event-sinks)
>>>>>>>>>>
>>>>>>>>>> Any idea why?
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> On Fri, Nov 14, 2014 at 8:10 PM, Firzhan Naqash <firz...@wso2.com
>>>>>>>>>> > wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Lahiru,
>>>>>>>>>>>
>>>>>>>>>>> Rathern than defining them in axis2.xml, you can define them in
>>>>>>>>>>> compnent.xml and pom.xml file which worked for me [1]
>>>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> http://architects.dzone.com/articles/writing-axis2-custom-deployers
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> Firzhan
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Nov 14, 2014 at 7:14 PM, Lahiru Chandima <
>>>>>>>>>>> lahi...@wso2.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>
>>>>>>>>>>>> I have created an Axis2 deployer to deploy an xml artifact. I
>>>>>>>>>>>> have added following to repository/conf/axis2/axis2.xml
>>>>>>>>>>>>
>>>>>>>>>>>> <deployer extension=".xml"
>>>>>>>>>>>> class="org.wso2.carbon.event.sink.EventSinkDeployer"
>>>>>>>>>>>> directory="event-sinks"/>
>>>>>>>>>>>>
>>>>>>>>>>>> And I have created a directory named event-sinks for my new
>>>>>>>>>>>> artifact type in repository/deployment/server
>>>>>>>>>>>>
>>>>>>>>>>>> When I add a new xml artifact to the event-sinks directory,
>>>>>>>>>>>> deploy(DeploymentFileData deploymentFileData) in my deployer gets 
>>>>>>>>>>>> called
>>>>>>>>>>>> without a problem.
>>>>>>>>>>>>
>>>>>>>>>>>> But, if I deploy an artifact for a tenant (eg: in directory
>>>>>>>>>>>> repository/tenants/1/event-sinks for tenant 1), deploy() method of 
>>>>>>>>>>>> my
>>>>>>>>>>>> deployer doesn't get called.
>>>>>>>>>>>>
>>>>>>>>>>>> What have I done wrong? Have I created event-sinks directory in
>>>>>>>>>>>> the wrong location for tenant 1?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks
>>>>>>>>>>>>
>>>>>>>>>>>>
> Thanks,
> Lasantha
>
>
>> --
>>>>>>>>>>>> Lahiru Chandima
>>>>>>>>>>>> *Senior Software Engineer*
>>>>>>>>>>>> Mobile : +94 (0) 772 253283
>>>>>>>>>>>> lahi...@wso2.com
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Dev mailing list
>>>>>>>>>>>> Dev@wso2.org
>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Lahiru Chandima
>>>>>>>>>> *Senior Software Engineer*
>>>>>>>>>> Mobile : +94 (0) 772 253283
>>>>>>>>>> lahi...@wso2.com
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Dev mailing list
>>>>>>>>>> Dev@wso2.org
>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Lasantha Fernando*
>>>>>>>>> Software Engineer - Data Technologies Team
>>>>>>>>> WSO2 Inc. http://wso2.com
>>>>>>>>>
>>>>>>>>> email: lasan...@wso2.com
>>>>>>>>> mobile: (+94) 71 5247551
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Lahiru Chandima
>>>>>>>> *Senior Software Engineer*
>>>>>>>> Mobile : +94 (0) 772 253283
>>>>>>>> lahi...@wso2.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Lahiru Chandima
>>>>>> *Senior Software Engineer*
>>>>>> Mobile : +94 (0) 772 253283
>>>>>> lahi...@wso2.com
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Lahiru Chandima
>>>> *Senior Software Engineer*
>>>> Mobile : +94 (0) 772 253283
>>>> lahi...@wso2.com
>>>>
>>>
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> *Lasantha Fernando*
> Software Engineer - Data Technologies Team
> WSO2 Inc. http://wso2.com
>
> email: lasan...@wso2.com
> mobile: (+94) 71 5247551
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Lahiru Chandima
*Senior Software Engineer*
Mobile : +94 (0) 772 253283
lahi...@wso2.com
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~  Copyright (c) 2005-2010, WSO2 Inc. (http://wso2.com) 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.
  -->

<axisconfig name="AxisJava2.0">
    
    <!-- ================================================= -->
    <!--                  Parameters                       -->
    <!-- ================================================= -->

    <!-- Change this to true if you want to enable hot deployment of services -->
    <parameter name="hotdeployment" locked="false">true</parameter>
    <!-- Change this to true if you want to enable hot update of services -->
    <parameter name="hotupdate" locked="false">true</parameter>

    <!-- Change this to true if you want to enable MTOM -->
    <parameter name="enableMTOM" locked="false">false</parameter>
    <!-- Change this to true if you want to enable SwA -->
    <parameter name="enableSwA" locked="false">false</parameter>

    <!-- If you want to enable file caching for attachments change this to true -->
    <parameter name="cacheAttachments" locked="false">false</parameter>
    <!-- Attachment file caching location relative to CARBON_HOME -->
    <parameter name="attachmentDIR" locked="false">work/mtom</parameter>
    <!-- Attachment file cache threshold size -->
    <parameter name="sizeThreshold" locked="false">4000</parameter>

    <!-- Completely disable REST handling in Axis2/Synapse if the value is true -->
    <parameter name="disableREST" locked="false">false</parameter>

    <!-- Sandesha2 persistance storage manager -->
    <parameter name="Sandesha2StorageManager" locked="false">inmemory</parameter>

    <!-- Our HTTP endpoints can handle both REST and SOAP under the following service path. In -->
    <!-- case of a servlet container, if you change this you have to manually change the -->
    <!-- settings of your servlet container to map this context path to proper Axis2 servlets -->
    <parameter name="servicePath" locked="false">services</parameter>

    <!--the directory in which .aar services are deployed inside axis2 repository-->
    <parameter name="ServicesDirectory">axis2services</parameter>

    <!--the directory in which modules are deployed inside axis2 repository-->
    <parameter name="ModulesDirectory">axis2modules</parameter>

    <!-- User agent and the server details to be used in the http communication -->
    <parameter name="userAgent" locked="true">WSO2 ESB 4.8.1</parameter>
    <parameter name="server" locked="true">WSO2 ESB 4.8.1</parameter>

    <!-- During a fault, stacktrace can be sent with the fault message. The following flag -->
    <!-- will control that behaviour -->
    <parameter name="sendStacktraceDetailsWithFaults" locked="false">false</parameter>
    
    <!-- If there aren't any information available to find out the fault reason, we set the -->
    <!-- message of the exception as the faultreason/Reason. But when a fault is thrown from -->
    <!-- a service or some where, it will be wrapped by different levels. Due to this the -->
    <!-- initial exception message can be lost. If this flag is set then, Axis2 tries to get -->
    <!-- the first exception and set its message as the faultreason/Reason. -->
    <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>

    <!-- Set the flag to true if you want to enable transport level session management -->
    <parameter name="manageTransportSession" locked="false">true</parameter>

    <!-- This will give out the timout of the configuration contexts, in milliseconds -->
    <parameter name="ConfigContextTimeoutInterval" locked="false">30000</parameter>

    <!-- Synapse Configuration file location relative to CARBON_HOME -->
    <parameter name="SynapseConfig.ConfigurationFile" locked="false">repository/deployment/server/synapse-configs</parameter>
    <!-- Synapse Home parameter -->
    <parameter name="SynapseConfig.HomeDirectory" locked="false">.</parameter>
    <!-- Resolve root used to resolve synapse references like schemas inside a WSDL -->
    <parameter name="SynapseConfig.ResolveRoot" locked="false">.</parameter>
    <!-- Synapse Server name parameter -->
    <parameter name="SynapseConfig.ServerName" locked="false">localhost</parameter>

    <!-- To override repository/services you need to uncomment following parameter and value -->
    <!-- SHOULD be absolute file path. -->
    <!--<parameter name="ServicesDirectory" locked="false">service</parameter>-->

    <!-- To override repository/modules you need to uncomment following parameter and value -->
    <!-- SHOULD be absolute file path. -->
    <!--<parameter name="ModulesDirectory" locked="false">modules</parameter>-->

    <!-- If you have a frontend host which exposes this webservice using a different public URL -->
    <!-- use this parameter to override autodetected url -->
    <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->

    <!-- ================================================= -->
    <!--                  Listeners                        -->
    <!-- ================================================= -->

    <!-- This deployment interceptor will be called whenever before a module is initialized or -->
    <!-- service is deployed -->
    <listener class="org.wso2.carbon.core.deployment.DeploymentInterceptor"/>

    <!-- ================================================= -->
    <!--                  Deployers                        -->
    <!-- ================================================= -->

    <!-- Deployer for the dataservice. -->
    <!--<deployer extension="dbs" directory="dataservices" class="org.wso2.dataservices.DBDeployer"/>-->

    <!-- Axis1 deployer for Axis2 -->
    <!--<deployer extension="wsdd" class="org.wso2.carbon.axis1services.Axis1Deployer" directory="axis1services"/>-->

    <!-- POJO service deployer for Jar -->
    <!--<deployer extension="jar" class="org.apache.axis2.deployment.POJODeployer" directory="pojoservices"/>-->

    <!-- POJO service deployer for Class -->
    <!--<deployer extension="class" class="org.apache.axis2.deployment.POJODeployer" directory="pojoservices"/>-->

    <!-- JAXWS service deployer -->
    <!--<deployer extension=".jar" class="org.apache.axis2.jaxws.framework.JAXWSDeployer" directory="servicejars"/>-->
    <!-- <deployer extension=".xml" class="org.wso2.carbon.event.sink.EventSinkDeployer" directory="event-sinks"/> -->

    <!-- ================================================= -->
    <!--                Message Receivers                  -->
    <!-- ================================================= -->

    <!-- This is the set of default Message Receivers for the system, if you want to have -->
    <!-- message receivers for any of the other Message exchange Patterns (MEP) implement it -->
    <!-- and add the implementation class to here, so that you can refer from any operation -->
    <!-- Note : You can override this for particular service by adding this same element to the -->
    <!-- services.xml with your preferences -->
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only";
                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/ns/wsdl/robust-in-only";
                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out";
                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>

    <!-- ================================================= -->
    <!--                Message Formatters                 -->
    <!-- ================================================= -->

    <!-- Following content type to message formatter mapping can be used to implement support -->
    <!-- for different message format serializations in Axis2. These message formats are -->
    <!-- expected to be resolved based on the content type. -->
    <messageFormatters>
        <messageFormatter contentType="application/x-www-form-urlencoded"
                          class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
        <messageFormatter contentType="multipart/form-data"
                          class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
        <messageFormatter contentType="application/xml"
                          class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
        <messageFormatter contentType="text/xml"
                         class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
        <messageFormatter contentType="application/soap+xml"
                         class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
        <messageFormatter contentType="text/plain"
                         class="org.apache.axis2.format.PlainTextFormatter"/>

        <!--JSON Message Formatters-->
        <!--messageFormatter contentType="application/json"
                          class="org.apache.synapse.commons.json.JsonFormatter"/-->
        <messageFormatter contentType="application/json"
                          class="org.apache.synapse.commons.json.JsonStreamFormatter"/>
        <!--messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONMessageFormatter"/-->
        <!--messageFormatter contentType="application/json"
                          class="org.apache.axis2.json.JSONStreamFormatter"/-->
        <messageFormatter contentType="application/json/badgerfish"
                          class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>

        <!--messageFormatter contentType="application/x-www-form-urlencoded"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
        <!--messageFormatter contentType="multipart/form-data"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
        <!--messageFormatter contentType="application/xml"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
        <!--messageFormatter contentType="text/html"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
        <!--messageFormatter contentType="application/soap+xml"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
        <!--messageFormatter contentType="text/xml"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/-->
	    <!--messageFormatter contentType="x-application/hessian"
                         class="org.apache.synapse.format.hessian.HessianMessageFormatter"/-->
        <!--messageFormatter contentType=""
                         class="org.apache.synapse.format.hessian.HessianMessageFormatter"/-->
        <!--messageFormatter contentType="application/edi-hl7"
                         class="org.wso2.carbon.business.messaging.hl7.message.HL7MessageFormatter"/-->
    </messageFormatters>

    <!-- ================================================= -->
    <!--                Message Builders                   -->
    <!-- ================================================= -->

    <!-- Following content type to builder mapping can be used to implement support for -->
    <!-- different message formats in Axis2. These message formats are expected to be -->
    <!-- resolved based on the content type. -->
    <messageBuilders>
        <messageBuilder contentType="application/xml"
                        class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
        <messageBuilder contentType="application/x-www-form-urlencoded"
                        class="org.apache.synapse.commons.builders.XFormURLEncodedBuilder"/>
        <messageBuilder contentType="multipart/form-data"
                        class="org.apache.axis2.builder.MultipartFormDataBuilder"/>
        <messageBuilder contentType="text/plain"
                        class="org.apache.axis2.format.PlainTextBuilder"/>

        <!--JSON Message Builders-->
        <!--messageBuilder contentType="application/json"
                        class="org.apache.synapse.commons.json.JsonBuilder"/-->
        <messageBuilder contentType="application/json"
                        class="org.apache.synapse.commons.json.JsonStreamBuilder"/>
        <!--messageBuilder contentType="application/json"
                        class="org.apache.axis2.json.JSONBuilder"/-->
        <!--messageBuilder contentType="application/json"
                        class="org.apache.axis2.json.JSONStreamBuilder"/-->
        <messageBuilder contentType="application/json/badgerfish"
                        class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>

	<!--messageBuilder contentType="application/xml"
                        class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="application/x-www-form-urlencoded"
                        class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="multipart/form-data"
                        class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="multipart/related"
                       class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="application/soap+xml"
                       class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="text/plain"
                       class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="text/xml"
                       class="org.wso2.carbon.relay.BinaryRelayBuilder"/-->
        <!--messageBuilder contentType="x-application/hessian"
                        class="org.apache.synapse.format.hessian.HessianMessageBuilder"/-->
        <!--messageBuilder contentType=""
                         class="org.apache.synapse.format.hessian.HessianMessageBuilder"/-->
        <!--messageBuilder contentType="application/edi-hl7"
                        class="org.wso2.carbon.business.messaging.hl7.message.HL7MessageBuilder"/-->
    </messageBuilders>

    <!-- ================================================= -->
    <!--             Transport Ins (Listeners)             -->
    <!-- ================================================= -->

     <transportReceiver name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpListener">
        <parameter name="port" locked="false">8280</parameter>
        <parameter name="non-blocking" locked="false">true</parameter>
        <!--parameter name="bind-address" locked="false">hostname or IP address</parameter-->
        <!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter-->
        <parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor</parameter>
        <!--<parameter name="priorityConfigFile" locked="false">location of priority configuration file</parameter>-->
    </transportReceiver>

     <transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener">
        <parameter name="port" locked="false">8243</parameter>
        <parameter name="non-blocking" locked="false">true</parameter>
        <!--parameter name="bind-address" locked="false">hostname or IP address</parameter-->
        <!--parameter name="WSDLEPRPrefix" locked="false">https://apachehost:port/somepath</parameter-->
 	 <parameter name="httpGetProcessor" locked="false">org.wso2.carbon.transport.nhttp.api.PassThroughNHttpGetProcessor</parameter>
        <parameter name="keystore" locked="false">
            <KeyStore>
                <Location>repository/resources/security/wso2carbon.jks</Location>
                <Type>JKS</Type>
                <Password>wso2carbon</Password>
                <KeyPassword>wso2carbon</KeyPassword>
            </KeyStore>
        </parameter>
        <parameter name="truststore" locked="false">
            <TrustStore>
                <Location>repository/resources/security/client-truststore.jks</Location>
                <Type>JKS</Type>
                <Password>wso2carbon</Password>
            </TrustStore>
        </parameter>
        <!--<parameter name="SSLVerifyClient">require</parameter>
            supports optional|require or defaults to none -->
    </transportReceiver>

    <transportReceiver name="local" class="org.wso2.carbon.core.transports.local.CarbonLocalTransportReceiver"/>

    <!--<transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/>-->

    <!--<transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener">-->
        <!-- configure any optional POP3/IMAP properties
        check com.sun.mail.pop3 and com.sun.mail.imap package documentation for more details-->
    <!--</transportReceiver>-->

    <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)
    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
		    <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        </parameter>

        <parameter name="myQueueConnectionFactory" locked="false">
        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
		    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>

        <parameter name="default" locked="false">
        	<parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
        	<parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
        	<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
		    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver>-->

    <!--Uncomment this and configure as appropriate for JMS transport support with Apache Qpid -->
    <!--transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        </parameter>

        <parameter name="myQueueConnectionFactory" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>

        <parameter name="default" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver-->

    <!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x -->
    <!--transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
           <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        </parameter>

        <parameter name="myQueueConnectionFactory" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
           <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>

        <parameter name="default" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver-->

    <!--Uncomment this for FIX transport support
    <transportReceiver name="fix" class="org.apache.synapse.transport.fix.FIXTransportListener"/>
    -->
    
    <!--transportReceiver name="hl7" class="org.wso2.carbon.business.messaging.hl7.transport.HL7TransportListener"/-->

    <!-- SAP Transport Listeners -->
    <!-- <transportReceiver name="idoc" class="org.wso2.carbon.transports.sap.SAPTransportListener"/> -->
    <!-- <transportReceiver name="bapi" class="org.wso2.carbon.transports.sap.SAPTransportListener"/> -->

    <!-- ================================================= -->
    <!--             Transport Outs (Senders)              -->
    <!-- ================================================= -->

    <transportSender name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpSender">
        <parameter name="non-blocking" locked="false">true</parameter>
        <!--<parameter name="warnOnHTTP500" locked="false">*</parameter>-->
        <!--parameter name="http.proxyHost" locked="false">localhost</parameter-->
        <!--<parameter name="http.proxyPort" locked="false">3128</parameter>-->
        <!--<parameter name="http.nonProxyHosts" locked="false">localhost|moon|sun</parameter>-->
    </transportSender>

    <transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender">
        <parameter name="non-blocking" locked="false">true</parameter>
        <parameter name="keystore" locked="false">
            <KeyStore>
                <Location>repository/resources/security/wso2carbon.jks</Location>
                <Type>JKS</Type>
                <Password>wso2carbon</Password>
                <KeyPassword>wso2carbon</KeyPassword>
            </KeyStore>
        </parameter>
        <parameter name="truststore" locked="false">
            <TrustStore>
                <Location>repository/resources/security/client-truststore.jks</Location>
                <Type>JKS</Type>
                <Password>wso2carbon</Password>
            </TrustStore>
        </parameter>
        <!--<parameter name="HostnameVerifier">DefaultAndLocalhost</parameter>-->
            <!--supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified -->
    </transportSender>

    <transportSender name="local" class="org.wso2.carbon.core.transports.local.CarbonLocalTransportSender"/>

    <!--Uncomment this local transport to use local transport in mediation flow-->
    <!--<transportSender name="local" class="org.apache.axis2.transport.local.NonBlockingLocalTransportSender"/>-->

   <!-- uncomment this and configure to use connection pools for sending messages>
     <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/-->

    <!--transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/-->

    <!-- Uncomment and configure the SMTP server information
    check com.sun.mail.smtp package documentation for descriptions of properties
    <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
        <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
        <parameter name="mail.smtp.port">587</parameter>
        <parameter name="mail.smtp.starttls.enable">true</parameter>
        <parameter name="mail.smtp.auth">true</parameter>
        <parameter name="mail.smtp.user">synapse.demo.0</parameter>
        <parameter name="mail.smtp.password">mailpassword</parameter>
        <parameter name="mail.smtp.from">synapse.dem...@gmail.com</parameter>
    </transportSender>-->

    <!--Uncomment this for FIX transport support
    <transportSender name="fix" class="org.apache.synapse.transport.fix.FIXTransportSender"/>
    -->
    
    <!--transportSender name="hl7" class="org.wso2.carbon.business.messaging.hl7.transport.HL7TransportSender"/-->

    <!-- SAP Transport Senders -->
    <!-- <transportSender name="idoc" class="org.wso2.carbon.transports.sap.SAPTransportSender"/> -->
    <!-- <transportSender name="bapi" class="org.wso2.carbon.transports.sap.SAPTransportSender"/> -->

    <!-- ================================================= -->
    <!--             Global Engaged Modules                -->
    <!-- ================================================= -->

    <!-- Comment this out to disable Addressing -->
    <module ref="addressing"/>

    <!-- ================================================= -->
    <!--                Clustering                         -->
    <!-- ================================================= -->
    <!--
     To enable clustering for this node, set the value of "enable" attribute of the "clustering"
     element to "true". The initialization of a node in the cluster is handled by the class
     corresponding to the "class" attribute of the "clustering" element. It is also responsible for
     getting this node to join the cluster.
     -->
    <clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent"
                enable="false">

        <!--
           This parameter indicates whether the cluster has to be automatically initalized
           when the AxisConfiguration is built. If set to "true" the initialization will not be
           done at that stage, and some other party will have to explictly initialize the cluster.
        -->
        <parameter name="AvoidInitiation">true</parameter>

        <!--
           The membership scheme used in this setup. The only values supported at the moment are
           "multicast" and "wka"

           1. multicast - membership is automatically discovered using multicasting
           2. wka - Well-Known Address based multicasting. Membership is discovered with the help
                    of one or more nodes running at a Well-Known Address. New members joining a
                    cluster will first connect to a well-known node, register with the well-known node
                    and get the membership list from it. When new members join, one of the well-known
                    nodes will notify the others in the group. When a member leaves the cluster or
                    is deemed to have left the cluster, it will be detected by the Group Membership
                    Service (GMS) using a TCP ping mechanism.
        -->
        <parameter name="membershipScheme">wka</parameter>
        <!--<parameter name="licenseKey">xxx</parameter>-->
        <!--<parameter name="mgtCenterURL">http://localhost:8081/mancenter/</parameter>-->

        <!--
         The clustering domain/group. Nodes in the same group will belong to the same multicast
         domain. There will not be interference between nodes in different groups.
        -->
        <parameter name="domain">wso2.carbon.domain</parameter>

        <!-- The multicast address to be used -->
        <!--<parameter name="mcastAddress">228.0.0.4</parameter>-->

        <!-- The multicast port to be used -->
        <parameter name="mcastPort">45564</parameter>

        <parameter name="mcastTTL">100</parameter>

        <parameter name="mcastTimeout">60</parameter>

        <!--
           The IP address of the network interface to which the multicasting has to be bound to.
           Multicasting would be done using this interface.
        -->
        <!--
            <parameter name="mcastBindAddress">127.0.0.1</parameter>
        -->
        <!-- The host name or IP address of this member -->

        <parameter name="localMemberHost">127.0.0.1</parameter>

        <!--
            The bind adress of this member. The difference between localMemberHost & localMemberBindAddress
            is that localMemberHost is the one that is advertised by this member, while localMemberBindAddress
            is the address to which this member is bound to.
        -->
        <!--
        <parameter name="localMemberBindAddress">127.0.0.1</parameter>
        -->

        <!--
        The TCP port used by this member. This is the port through which other nodes will
        contact this member
         -->
        <parameter name="localMemberPort">4100</parameter>

        <!--
            The bind port of this member. The difference between localMemberPort & localMemberBindPort
            is that localMemberPort is the one that is advertised by this member, while localMemberBindPort
            is the port to which this member is bound to.
        -->
        <!--
        <parameter name="localMemberBindPort">4001</parameter>
        -->

        <!--
        Properties specific to this member
        -->
        <parameter name="properties">
            <property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
            <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
 	    <!-- Manger Setup with Port Mapping-->
	    <!--property name="port.mapping.8280" value="9764"/>
            <property name="port.mapping.8243" value="9444"/>
            <property name="subDomain" value="mgt"/-->

	    <!-- Worker Setup-->
	    <!--property name="subDomain" value="worker"/-->
        </parameter>

        <!--
           The list of static or well-known members. These entries will only be valid if the
           "membershipScheme" above is set to "wka"
        -->
        <members>
            <member>
                <hostName>127.0.0.1</hostName>
                <port>4000</port>
            </member>
        </members>

        <!--
        Enable the groupManagement entry if you need to run this node as a cluster manager.
        Multiple application domains with different GroupManagementAgent implementations
        can be defined in this section.
        -->
        <groupManagement enable="false">
            <applicationDomain name="wso2.esb.domain"
                               description="ESB group"
                               agent="org.wso2.carbon.core.clustering.hazelcast.HazelcastGroupManagementAgent"
                               subDomain="worker"
                               port="2222"/>
        </groupManagement>
    </clustering>

    <!-- ================================================= -->
    <!--                   Transactions                    -->
    <!-- ================================================= -->

    <!--
        Uncomment and configure the following section to enable transactions support 
    -->
    <!--<transaction timeout="30000">
        <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
        <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
        <parameter name="UserTransactionJNDIName">UserTransaction</parameter>
        <parameter name="TransactionManagerJNDIName">TransactionManager</parameter>
    </transaction>-->

    <!-- ================================================= -->
    <!--                    Phases                         -->
    <!-- ================================================= -->

    <phaseOrder type="InFlow">
        <!--  System pre defined phases       -->
        <!--
           The MsgInObservation phase is used to observe messages as soon as they are
           received. In this phase, we could do some things such as SOAP message tracing & keeping
           track of the time at which a particular message was received

           NOTE: This should be the very first phase in this flow
        -->
        <phase name="MsgInObservation">
	    <handler name="TraceMessageBuilderDispatchHandler"
                     class="org.apache.synapse.transport.passthru.util.TraceMessageBuilderDispatchHandler"/>
	</phase>
        <phase name="Validation"/>
        <phase name="Transport">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
                <order phase="Transport"/>
            </handler>
   	        <handler name="CarbonContextConfigurator"
                     class="org.wso2.carbon.mediation.initializer.handler.CarbonContextConfigurator"/>
            <handler name="RelaySecuirtyMessageBuilderDispatchandler"
                     class="org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler"/>
            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
                <order phase="Transport"/>
            </handler>
            <!--handler name="SMTPFaultHandler"
                     class="org.wso2.carbon.core.transports.smtp.SMTPFaultHandler">
                <order phase="Transport"/>
            </handler-->
           <handler name="CacheMessageBuilderDispatchandler"
                     class="org.wso2.carbon.mediation.initializer.handler.CacheMessageBuilderDispatchandler"/>
        </phase>
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch">
            <!--Uncomment following handler to enable logging in ESB log UI-->
            <!--<handler name="TenantDomainSetter"-->
                     <!--class="org.wso2.carbon.utils.logging.handler.TenantDomainSetter"/>-->
        </phase>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>

            <handler name="HTTPLocationBasedDispatcher"
                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
            <handler name="MultitenantDispatcher"
                     class="org.wso2.carbon.tenant.dispatcher.MultitenantDispatcher"/>
            <handler name="SynapseDispatcher"
                     class="org.apache.synapse.core.axis2.SynapseDispatcher"/>
            <handler name="SynapseMustUnderstandHandler"
                     class="org.apache.synapse.core.axis2.SynapseMustUnderstandHandler"/>
        </phase>
        <!--  System pre defined phases       -->
        <phase name="RMPhase"/>
        <phase name="OpPhase"/>
        <phase name="AuthPhase"/>
        <phase name="MUPhase"/>
        <!-- After Postdispatch phase module author or or service author can add any phase he want -->
        <phase name="OperationInPhase"/>
    </phaseOrder>

    <phaseOrder type="OutFlow">
        <!-- Handlers related to unified-endpoint component are added to the UEPPhase -->
        <phase name="UEPPhase" />
        <!--      user can add his own phases to this area  -->
        <phase name="RMPhase"/>
        <phase name="MUPhase"/>
        <phase name="OpPhase"/>
        <phase name="OperationOutPhase"/>
        <!--system predefined phase-->
        <!--these phase will run irrespective of the service-->
        <phase name="PolicyDetermination"/>
        <phase name="PTSecurityOutPhase">
		<handler name="RelaySecuirtyMessageBuilderDispatchandler"
                     class="org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler"/>
	</phase>
        <phase name="PTCacheOutPhase">
             <handler name="CacheMessageBuilderDispatchandler"
                     class="org.wso2.carbon.mediation.initializer.handler.CacheMessageBuilderDispatchandler"/>
        </phase>
        <phase name="MessageOut"/>
        <phase name="Security"/>

        <!--
           The MsgOutObservation phase is used to observe messages just before the
           responses are sent out. In this phase, we could do some things such as SOAP message
           tracing & keeping track of the time at which a particular response was sent.

           NOTE: This should be the very last phase in this flow
        -->
        <phase name="MsgOutObservation"/>
    </phaseOrder>

    <phaseOrder type="InFaultFlow">
        <!--
           The MsgInObservation phase is used to observe messages as soon as they are
           received. In this phase, we could do some things such as SOAP message tracing & keeping
           track of the time at which a particular message was received

           NOTE: This should be the very first phase in this flow
        -->
        <phase name="MsgInObservation"/>
        <phase name="Validation"/>
        <phase name="Transport">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
                <order phase="Transport"/>
            </handler>
            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
                <order phase="Transport"/>
            </handler>
        </phase>
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>

            <handler name="HTTPLocationBasedDispatcher"
                     class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
        </phase>
        <!--      user can add his own phases to this area  -->
        <phase name="RMPhase"/>
        <phase name="OpPhase"/>
        <phase name="MUPhase"/>
        <phase name="OperationInFaultPhase"/>
    </phaseOrder>

    <phaseOrder type="OutFaultFlow">
        <!-- Handlers related to unified-endpoint component are added to the UEPPhase -->
        <phase name="UEPPhase" />
        <!--      user can add his own phases to this area  -->
        <phase name="RMPhase"/>
        <!-- Must Understand Header processing phase -->
        <phase name="MUPhase"/>
        <phase name="OperationOutFaultPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
        <phase name="Security"/>
	<phase name="Transport"/>
        <!--
           The MsgOutObservation phase is used to observe messages just before the
           responses are sent out. In this phase, we could do some things such as SOAP message
           tracing & keeping track of the time at which a particular response was sent.

           NOTE: This should be the very last phase in this flow
        -->
        <phase name="MsgOutObservation"/>
    </phaseOrder>

</axisconfig>
<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
  ~ Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
  ~
  ~ Licensed 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.
  -->

<!--
    This is the main server configuration file

    ${carbon.home} represents the carbon.home system property.
    Other system properties can be specified in a similar manner.
-->
<Server xmlns="http://wso2.org/projects/carbon/carbon.xml";>

    <!--
       Product Name
    -->
    <Name>WSO2 Enterprise Service Bus</Name>

    <!--
       machine readable unique key to identify each product
    -->
    <ServerKey>ESB</ServerKey>

    <!--
       Product Version
    -->
    <Version>4.8.1</Version>

    <!--
       Host name or IP address of the machine hosting this server
       e.g. www.wso2.org, 192.168.1.10
       This is will become part of the End Point Reference of the
       services deployed on this server instance.
    -->
    <!--HostName>www.wso2.org</HostName-->

    <!--
    Host name to be used for the Carbon management console
    -->
    <!--MgtHostName>mgt.wso2.org</MgtHostName-->

    <!--
        The URL of the back end server. This is where the admin services are hosted and
        will be used by the clients in the front end server.
        This is required only for the Front-end server. This is used when seperating BE server from FE server
       -->
    <ServerURL>local:/${carbon.context}/services/</ServerURL>
    <!--
    <ServerURL>https://${carbon.local.ip}:${carbon.management.port}${carbon.context}/services/</ServerURL>
    -->
     <!--
     The URL of the index page. This is where the user will be redirected after signing in to the
     carbon server.
     -->
    <!-- IndexPageURL>/carbon/admin/index.jsp</IndexPageURL-->

    <!--
    For cApp deployment, we have to identify the roles that can be acted by the current server.
    The following property is used for that purpose. Any number of roles can be defined here.
    Regular expressions can be used in the role.
    Ex : <Role>.*</Role> means this server can act any role
    -->
    <ServerRoles>
        <Role>EnterpriseServiceBus</Role>
    </ServerRoles>

    <!-- uncommnet this line to subscribe to a bam instance automatically -->
    <!--<BamServerURL>https://bamhost:bamport/services/</BamServerURL>-->

    <!--
       The fully qualified name of the server
    -->
    <Package>org.wso2.carbon</Package>

    <!--
       Webapp context root of WSO2 Carbon.
    -->
    <WebContextRoot>/</WebContextRoot>

    <!-- In-order to  get the registry http Port from the back-end when the default http transport is not the same-->
    <!--RegistryHttpPort>9763</RegistryHttpPort-->

    <!--
    Number of items to be displayed on a management console page. This is used at the
    backend server for pagination of various items.
    -->
    <ItemsPerPage>15</ItemsPerPage>

    <!-- The endpoint URL of the cloud instance management Web service -->
    <!--<InstanceMgtWSEndpoint>https://ec2.amazonaws.com/</InstanceMgtWSEndpoint>-->

    <!--
       Ports used by this server
    -->
    <Ports>

        <!-- Ports offset. This entry will set the value of the ports defined below to
         the define value + Offset.
         e.g. Offset=2 and HTTPS port=9443 will set the effective HTTPS port to 9445
         -->
        <Offset>0</Offset>

        <!-- The JMX Ports -->
        <JMX>
            <!--The port RMI registry is exposed-->
            <RMIRegistryPort>9999</RMIRegistryPort>
            <!--The port RMI server should be exposed-->
            <RMIServerPort>11111</RMIServerPort>
        </JMX>

        <!-- Embedded LDAP server specific ports -->
        <EmbeddedLDAP>
            <!-- Port which embedded LDAP server runs -->
            <LDAPServerPort>10389</LDAPServerPort>
            <!-- Port which KDC (Kerberos Key Distribution Center) server runs -->
            <KDCServerPort>8000</KDCServerPort>
        </EmbeddedLDAP>
	
	    <!-- Embedded Qpid broker ports -->
        <EmbeddedQpid>
	    <!-- Broker TCP Port -->
            <BrokerPort>5672</BrokerPort>
	    <!-- SSL Port -->
            <BrokerSSLPort>8672</BrokerSSLPort>
        </EmbeddedQpid>
	
	<!-- 
             Override datasources JNDIproviderPort defined in bps.xml and datasources.properties files
	-->
	<!--<JNDIProviderPort>2199</JNDIProviderPort>-->
	<!--Override receive port of thrift based entitlement service.-->
	<ThriftEntitlementReceivePort>10500</ThriftEntitlementReceivePort>

    </Ports>

    <!--
        JNDI Configuration
    -->
    <JNDI>
        <!-- 
             The fully qualified name of the default initial context factory
        -->
        <DefaultInitialContextFactory>org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory</DefaultInitialContextFactory>
        <!-- 
             The restrictions that are done to various JNDI Contexts in a Multi-tenant environment 
        -->
        <Restrictions>
            <!--
                Contexts that will be available only to the super-tenant
            -->
            <!-- <SuperTenantOnly>
                <UrlContexts>
                    <UrlContext>
                        <Scheme>foo</Scheme>
                    </UrlContext>
                    <UrlContext>
                        <Scheme>bar</Scheme>
                    </UrlContext>
                </UrlContexts>
            </SuperTenantOnly> -->
            <!-- 
                Contexts that are common to all tenants
            -->
            <AllTenants>
                <UrlContexts>
                    <UrlContext>
                        <Scheme>java</Scheme>
                    </UrlContext>
                    <!-- <UrlContext>
                        <Scheme>foo</Scheme>
                    </UrlContext> -->
                </UrlContexts>
            </AllTenants>
            <!-- 
                 All other contexts not mentioned above will be available on a per-tenant basis 
                 (i.e. will not be shared among tenants)
            -->
        </Restrictions>
    </JNDI>

    <!--
        Property to determine if the server is running an a cloud deployment environment.
        This property should only be used to determine deployment specific details that are
        applicable only in a cloud deployment, i.e when the server deployed *-as-a-service.
    -->
    <IsCloudDeployment>false</IsCloudDeployment>

    <!--
	Property to determine whether usage data should be collected for metering purposes
    -->
    <EnableMetering>false</EnableMetering>

    <!-- The Max time a thread should take for execution in seconds -->
    <MaxThreadExecutionTime>600</MaxThreadExecutionTime>

    <!--
        A flag to enable or disable Ghost Deployer. By default this is set to false. That is
        because the Ghost Deployer works only with the HTTP/S transports. If you are using
        other transports, don't enable Ghost Deployer.
    -->
    <GhostDeployment>
        <Enabled>false</Enabled>
        <PartialUpdate>false</PartialUpdate>
    </GhostDeployment>

    <!--
    Axis2 related configurations
    -->
    <Axis2Config>
        <!--
             Location of the Axis2 Services & Modules repository

             This can be a directory in the local file system, or a URL.

             e.g.
             1. /home/wso2wsas/repository/ - An absolute path
             2. repository - In this case, the path is relative to CARBON_HOME
             3. file:///home/wso2wsas/repository/
             4. http://wso2wsas/repository/
        -->
        <RepositoryLocation>${carbon.home}/repository/deployment/server/</RepositoryLocation>

        <!--
         Deployment update interval in seconds. This is the interval between repository listener
         executions. 
        -->
        <DeploymentUpdateInterval>15</DeploymentUpdateInterval>

        <!--
            Location of the main Axis2 configuration descriptor file, a.k.a. axis2.xml file

            This can be a file on the local file system, or a URL

            e.g.
            1. /home/repository/axis2.xml - An absolute path
            2. conf/axis2.xml - In this case, the path is relative to CARBON_HOME
            3. file:///home/carbon/repository/axis2.xml
            4. http://repository/conf/axis2.xml
        -->
        <ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2.xml</ConfigurationFile>

        <!--
          ServiceGroupContextIdleTime, which will be set in ConfigurationContex
          for multiple clients which are going to access the same ServiceGroupContext
          Default Value is 30 Sec.
        -->
        <ServiceGroupContextIdleTime>30000</ServiceGroupContextIdleTime>

        <!--
          This repository location is used to crete the client side configuration
          context used by the server when calling admin services.
        -->
        <ClientRepositoryLocation>${carbon.home}/repository/deployment/client/</ClientRepositoryLocation>
        <!-- This axis2 xml is used in createing the configuration context by the FE server
         calling to BE server -->
        <clientAxis2XmlLocation>${carbon.home}/repository/conf/axis2/axis2_client.xml</clientAxis2XmlLocation>
        <!-- If this parameter is set, the ?wsdl on an admin service will not give the admin service wsdl. -->
        <HideAdminServiceWSDLs>true</HideAdminServiceWSDLs>
	
	<!--WARNING-Use With Care! Uncommenting bellow parameter would expose all AdminServices in HTTP transport.
	With HTTP transport your credentials and data routed in public channels are vulnerable for sniffing attacks. 
	Use bellow parameter ONLY if your communication channels are confirmed to be secured by other means -->
        <!--HttpAdminServices>*</HttpAdminServices-->

    </Axis2Config>

    <!--
       The default user roles which will be created when the server
       is started up for the first time.
    -->
    <ServiceUserRoles>
        <Role>
            <Name>admin</Name>
            <Description>Default Administrator Role</Description>
        </Role>
        <Role>
            <Name>user</Name>
            <Description>Default User Role</Description>
        </Role>
    </ServiceUserRoles>
    
    <!-- 
      Enable following config to allow Emails as usernames. 	
    -->	    	
    <!--EnableEmailUserName>true</EnableEmailUserName-->	

    <!--
      Security configurations
    -->
    <Security>
        <!--
            KeyStore which will be used for encrypting/decrypting passwords
            and other sensitive information.
        -->
        <KeyStore>
            <!-- Keystore file location-->
            <Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location>
            <!-- Keystore type (JKS/PKCS12 etc.)-->
            <Type>JKS</Type>
            <!-- Keystore password-->
            <Password>wso2carbon</Password>
            <!-- Private Key alias-->
            <KeyAlias>wso2carbon</KeyAlias>
            <!-- Private Key password-->
            <KeyPassword>wso2carbon</KeyPassword>
        </KeyStore>
		
		 <!--
			Encrypt Decrypt Store will be used for encrypting and decrypting
		-->
        <RegistryKeyStore>
            <!-- Keystore file location-->
            <Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location>
            <!-- Keystore type (JKS/PKCS12 etc.)-->
            <Type>JKS</Type>
            <!-- Keystore password-->
            <Password>wso2carbon</Password>
            <!-- Private Key alias-->
            <KeyAlias>wso2carbon</KeyAlias>
            <!-- Private Key password-->
            <KeyPassword>wso2carbon</KeyPassword>
        </RegistryKeyStore>

        <!--
            System wide trust-store which is used to maintain the certificates of all
            the trusted parties.
        -->
        <TrustStore>
            <!-- trust-store file location -->
            <Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location>
            <!-- trust-store type (JKS/PKCS12 etc.) -->
            <Type>JKS</Type>
            <!-- trust-store password -->
            <Password>wso2carbon</Password>
        </TrustStore>

        <!--
            The Authenticator configuration to be used at the JVM level. We extend the
            java.net.Authenticator to make it possible to authenticate to given servers and 
            proxies.
        -->
        <NetworkAuthenticatorConfig>
            <!-- 
                Below is a sample configuration for a single authenticator. Please note that
                all child elements are mandatory. Not having some child elements would lead to
                exceptions at runtime.
            -->
            <!-- <Credential> -->
                <!-- 
                    the pattern that would match a subset of URLs for which this authenticator
                    would be used
                -->
                <!-- <Pattern>regularExpression</Pattern> -->
                <!-- 
                    the type of this authenticator. Allowed values are:
                    1. server
                    2. proxy
                -->
                <!-- <Type>proxy</Type> -->
                <!-- the username used to log in to server/proxy -->
                <!-- <Username>username</Username> -->
                <!-- the password used to log in to server/proxy -->
                <!-- <Password>password</Password> -->
            <!-- </Credential> -->
        </NetworkAuthenticatorConfig>

        <!--
         The Tomcat realm to be used for hosted Web applications. Allowed values are;
         1. UserManager
         2. Memory

         If this is set to 'UserManager', the realm will pick users & roles from the system's
         WSO2 User Manager. If it is set to 'memory', the realm will pick users & roles from
         CARBON_HOME/repository/conf/tomcat/tomcat-users.xml
        -->
        <TomcatRealm>UserManager</TomcatRealm>

	<!--Option to disable storing of tokens issued by STS-->
	<DisableTokenStore>false</DisableTokenStore>

	<!--
	 Security token store class name. If this is not set, default class will be
	 org.wso2.carbon.security.util.SecurityTokenStore
	-->
	<!--TokenStoreClassName>org.wso2.carbon.identity.sts.store.DBTokenStore</TokenStoreClassName-->
    </Security>

    <!--
       The temporary work directory
    -->
    <WorkDirectory>${carbon.home}/tmp/work</WorkDirectory>

    <!--
       House-keeping configuration
    -->
    <HouseKeeping>

        <!--
           true  - Start House-keeping thread on server startup
           false - Do not start House-keeping thread on server startup.
                   The user will run it manually as and when he wishes.
        -->
        <AutoStart>true</AutoStart>

        <!--
           The interval in *minutes*, between house-keeping runs
        -->
        <Interval>10</Interval>

        <!--
          The maximum time in *minutes*, temp files are allowed to live
          in the system. Files/directories which were modified more than
          "MaxTempFileLifetime" minutes ago will be removed by the
          house-keeping task
        -->
        <MaxTempFileLifetime>30</MaxTempFileLifetime>
    </HouseKeeping>

    <!--
       Configuration for handling different types of file upload & other file uploading related
       config parameters.
       To map all actions to a particular FileUploadExecutor, use
       <Action>*</Action>
    -->
    <FileUploadConfig>
        <!--
           The total file upload size limit in MB
        -->
        <TotalFileSizeLimit>100</TotalFileSizeLimit>

        <Mapping>
            <Actions>
                <Action>keystore</Action>
                <Action>certificate</Action>
                <Action>*</Action>
            </Actions>
            <Class>org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor</Class>
        </Mapping>

        <Mapping>
            <Actions>
                <Action>jarZip</Action>
            </Actions>
            <Class>org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor</Class>
        </Mapping>
        <Mapping>
            <Actions>
                <Action>dbs</Action>
            </Actions>
            <Class>org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor</Class>
        </Mapping>
        <Mapping>
            <Actions>
                <Action>tools</Action>
            </Actions>
            <Class>org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor</Class>
        </Mapping>
        <Mapping>
            <Actions>
                <Action>toolsAny</Action>
            </Actions>
            <Class>org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor</Class>
        </Mapping>
    </FileUploadConfig>

    <!--
       Processors which process special HTTP GET requests such as ?wsdl, ?policy etc.

       In order to plug in a processor to handle a special request, simply add an entry to this
       section.

       The value of the Item element is the first parameter in the query string(e.g. ?wsdl)
       which needs special processing
       
       The value of the Class element is a class which implements
       org.wso2.carbon.transport.HttpGetRequestProcessor
    -->
    <HttpGetRequestProcessors>
        <Processor>
            <Item>info</Item>
            <Class>org.wso2.carbon.core.transports.util.InfoProcessor</Class>
        </Processor>
        <Processor>
            <Item>wsdl</Item>
            <Class>org.wso2.carbon.core.transports.util.Wsdl11Processor</Class>
        </Processor>
        <Processor>
            <Item>wsdl2</Item>
            <Class>org.wso2.carbon.core.transports.util.Wsdl20Processor</Class>
        </Processor>
        <Processor>
            <Item>xsd</Item>
            <Class>org.wso2.carbon.core.transports.util.XsdProcessor</Class>
        </Processor>
    </HttpGetRequestProcessors>

    <!-- Deployment Synchronizer Configuration. t Enabled value to true when running with "svn based" dep sync.
	In master nodes you need to set both AutoCommit and AutoCheckout to true
	and in  worker nodes set only AutoCheckout to true.
    -->
    <DeploymentSynchronizer>
        <Enabled>false</Enabled>
        <AutoCommit>false</AutoCommit>
        <AutoCheckout>true</AutoCheckout>
        <RepositoryType>svn</RepositoryType>
        <SvnUrl>http://svnrepo.example.com/repos/</SvnUrl>
        <SvnUser>username</SvnUser>
        <SvnPassword>password</SvnPassword>
        <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId>
    </DeploymentSynchronizer>

    <!-- Deployment Synchronizer Configuration. Uncomment the following section when running with "registry based" dep sync.
        In master nodes you need to set both AutoCommit and AutoCheckout to true
        and in  worker nodes set only AutoCheckout to true.
    -->
    <!--<DeploymentSynchronizer>
        <Enabled>true</Enabled>
        <AutoCommit>false</AutoCommit>
        <AutoCheckout>true</AutoCheckout>
    </DeploymentSynchronizer>-->

    <!-- Mediation persistence configurations. Only valid if mediation features are available i.e. ESB -->
    <!--<MediationConfig>
        <LoadFromRegistry>false</LoadFromRegistry>
        <SaveToFile>false</SaveToFile>
        <Persistence>enabled</Persistence>
        <RegistryPersistence>enabled</RegistryPersistence>
    </MediationConfig>-->

    <!--
    Server intializing code, specified as implementation classes of org.wso2.carbon.core.ServerInitializer.
    This code will be run when the Carbon server is initialized
    -->
    <ServerInitializers>
        <!--<Initializer></Initializer>-->
    </ServerInitializers>
    
    <!--
    Indicates whether the Carbon Servlet is required by the system, and whether it should be
    registered
    -->
    <RequireCarbonServlet>${require.carbon.servlet}</RequireCarbonServlet>

    <!--
    Carbon H2 OSGI Configuration
    By default non of the servers start.
        name="web" - Start the web server with the H2 Console
        name="webPort" - The port (default: 8082)
        name="webAllowOthers" - Allow other computers to connect
        name="webSSL" - Use encrypted (HTTPS) connections
        name="tcp" - Start the TCP server
        name="tcpPort" - The port (default: 9092)
        name="tcpAllowOthers" - Allow other computers to connect
        name="tcpSSL" - Use encrypted (SSL) connections
        name="pg" - Start the PG server
        name="pgPort"  - The port (default: 5435)
        name="pgAllowOthers"  - Allow other computers to connect
        name="trace" - Print additional trace information; for all servers
        name="baseDir" - The base directory for H2 databases; for all servers  
    -->
    <!--H2DatabaseConfiguration>
        <property name="web" />
        <property name="webPort">8082</property>
        <property name="webAllowOthers" />
        <property name="webSSL" />
        <property name="tcp" />
        <property name="tcpPort">9092</property>
        <property name="tcpAllowOthers" />
        <property name="tcpSSL" />
        <property name="pg" />
        <property name="pgPort">5435</property>
        <property name="pgAllowOthers" />
        <property name="trace" />
        <property name="baseDir">${carbon.home}</property>
    </H2DatabaseConfiguration-->
    <!--Disabling statistics reporter by default-->
    <StatisticsReporterDisabled>true</StatisticsReporterDisabled>

    <!-- Enable accessing Admin Console via HTTP -->
    <!-- EnableHTTPAdminConsole>true</EnableHTTPAdminConsole -->

    <!--
       Default Feature Repository of WSO2 Carbon.
    -->
    <FeatureRepository>
	<RepositoryName>default repository</RepositoryName>
	<RepositoryURL>${p2.repo.url}</RepositoryURL>
    </FeatureRepository>

    <!--
	Configure API Management
   -->
   <APIManagement>
	
	<!--Uses the embedded API Manager by default. If you want to use an external 
	API Manager instance to manage APIs, configure below  externalAPIManager-->
	
	<Enabled>true</Enabled>
	
	<!--Uncomment and configure API Gateway and 
	Publisher URLs to use external API Manager instance-->
	
	<!--ExternalAPIManager>

		<APIGatewayURL>http://localhost:8281</APIGatewayURL>
		<APIPublisherURL>http://localhost:8281/publisher</APIPublisherURL>

	</ExternalAPIManager-->
	
	<LoadAPIContextsInServerStartup>true</LoadAPIContextsInServerStartup>
   </APIManagement>
</Server>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to