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

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <display-name>Apache Synapse</display-name>

    <servlet>
        <servlet-name>StartUpServlet</servlet-name>
        <servlet-class>org.apache.synapse.core.axis2.SynapseStartUpServlet</servlet-class>

        <!-- The following init parameters are *required* to start the ESB -->
        <!-- They must be configured correctly here, or made available as Java System Properties -->

        <!-- Synapse currently only supports the extracted WAR deployment model. Thus you need
        to extract the synapse.war to a directory, and then configure your servlet engine to
        deploy it off the file system.

        At a minimum, the synapse.home parameter must be specified, as the full and
        absolute path to the extracted synapse.war file. You must also edit the axis2.xml
        inside the WEB-INF/conf directory, and specify full absolute paths to all https
        keystores (e.g. replace "lib/identity.jks" etc..) You may also have to change the
        default http port (8280) to something else, if it conflict with the servlet engine port-->
        <init-param>
            <param-name>synapse.home</param-name>
            <param-value>_extract_synapse.war_and_edit_its_web.xml_</param-value>
        </init-param>
        <init-param>
            <param-name>synapse.xml</param-name>
            <param-value>WEB-INF/conf/synapse.xml</param-value>
        </init-param>
        <init-param>
            <param-name>axis2.repo</param-name>
            <param-value>WEB-INF/repository</param-value>
        </init-param>
        <init-param>
            <param-name>axis2.xml</param-name>
            <param-value>WEB-INF/conf/axis2.xml</param-value>
        </init-param>
        <init-param>
            <param-name>resolve.root</param-name>
            <param-value>WEB-INF/repository</param-value>
        </init-param>
        <!--<init-param>
            <param-name>serverName</param-name>
            <param-value>localhost</param-value>
        </init-param>-->

        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>SynapseServlet</servlet-name>
        <servlet-class>org.apache.synapse.core.axis2.SynapseAxisServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>SynapseServlet</servlet-name>
        <url-pattern>/soap/*</url-pattern>
    </servlet-mapping>

    <session-config>
        <!-- 30 minutes -->
        <session-timeout>30</session-timeout>
    </session-config>


</web-app>