<?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>CloudBridge</display-name>
    <servlet>
        <servlet-name>EC2MainServlet</servlet-name>
        <display-name>EC2 Main Servlet</display-name>
        <servlet-class>com.cloud.bridge.service.EC2MainServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>AxisServlet</servlet-name>
        <display-name>Apache-Axis Servlet</display-name>
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
        <!--<init-param>-->
        <!--<param-name>axis2.xml.path</param-name>-->
        <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
        <!--<param-name>axis2.xml.url</param-name>-->
        <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
        <!--<param-name>axis2.repository.path</param-name>-->
        <!--<param-value>/WEB-INF</param-value>-->
        <!--<param-name>axis2.repository.url</param-name>-->
        <!--<param-value>http://localhost/myrepo</param-value>-->
        <!--</init-param>-->
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>AxisAdminServlet</servlet-name>
        <display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>
        <servlet-class>
            org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>CloudBridgeS3Servlet</servlet-name>
        <display-name>Cloud.com Bridge S3 Service REST Servlet</display-name>
        <servlet-class>com.cloud.bridge.service.S3RestServlet</servlet-class>
        <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
    </servlet>
    <servlet>
        <servlet-name>CloudBridgeEC2Servlet</servlet-name>
        <display-name>Cloud.com Bridge EC2 Service REST Servlet</display-name>
        <servlet-class>com.cloud.bridge.service.EC2RestServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>CloudBridgeS3Servlet</servlet-name>
        <url-pattern>/rest/AmazonS3</url-pattern>
    </servlet-mapping>

   <servlet-mapping>
        <servlet-name>CloudBridgeS3Servlet</servlet-name>
        <url-pattern>/rest/AmazonS3/*</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>CloudBridgeS3Servlet</servlet-name>
        <url-pattern>/dime/AmazonS3</url-pattern>
    </servlet-mapping>
   
    <!-- EC2 examples are using that last '/' --> 
    <servlet-mapping>
        <servlet-name>CloudBridgeEC2Servlet</servlet-name>
        <url-pattern>/rest/AmazonEC2/*</url-pattern>
    </servlet-mapping>
    
    <!-- handle the common error of leaving off the last '/' -->
    <servlet-mapping>
        <servlet-name>CloudBridgeEC2Servlet</servlet-name>
        <url-pattern>/rest/AmazonEC2</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/servlet/AxisServlet</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>*.jws</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>AxisAdminServlet</servlet-name>
        <url-pattern>/axis2-admin/*</url-pattern>
    </servlet-mapping>

     <servlet-mapping>
        <servlet-name>EC2MainServlet</servlet-name>
        <url-pattern>/</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
        <servlet-name>EC2MainServlet</servlet-name>
        <url-pattern>/*</url-pattern>
     </servlet-mapping>

    <mime-mapping>
        <extension>inc</extension>
        <mime-type>text/plain</mime-type>
    </mime-mapping>

   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>index.html</welcome-file>
      <welcome-file>/axis2-web/index.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
      <error-code>404</error-code>
      <location>/axis2-web/Error/error404.jsp</location>
    </error-page>

    <error-page>
        <error-code>500</error-code>
        <location>/axis2-web/Error/error500.jsp</location>
    </error-page>
</web-app>
