<?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.
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
   
    <context-param>  
      <param-name>log4jConfigLocation</param-name>  
      <param-value>classpath:log4j-cloud.xml</param-value>  
    </context-param>  
    <listener>  
      <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
    </listener>  
    
	<listener>
      <listener-class>org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener</listener-class>
	</listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>    
        <param-value>classpath:META-INF/cloudstack/webApplicationContext.xml</param-value>    
    </context-param>
          
    <servlet>
        <servlet-name>cloudStartupServlet</servlet-name>
        <servlet-class>com.cloud.servlet.CloudStartupServlet</servlet-class>
        <load-on-startup>4</load-on-startup>
    </servlet>

    <servlet>
        <servlet-name>apiServlet</servlet-name>
        <servlet-class>com.cloud.api.ApiServlet</servlet-class>
        <load-on-startup>5</load-on-startup>
    </servlet>
    
    <servlet>
        <servlet-name>consoleServlet</servlet-name>
        <servlet-class>com.cloud.servlet.ConsoleProxyServlet</servlet-class>
        <load-on-startup>6</load-on-startup>
    </servlet>
	
	<servlet>
        <servlet-name>registerCompleteServlet</servlet-name>
        <servlet-class>com.cloud.servlet.RegisterCompleteServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>   
         <servlet-name>apiServlet</servlet-name>   
         <url-pattern>/api/*</url-pattern> 
    </servlet-mapping>
    
    <servlet-mapping>   
         <servlet-name>consoleServlet</servlet-name>   
         <url-pattern>/console</url-pattern> 
    </servlet-mapping>
	
	<servlet-mapping>   
         <servlet-name>registerCompleteServlet</servlet-name>   
         <url-pattern>/mycloud/complete</url-pattern> 
    </servlet-mapping>
</web-app>
