<?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"> 

    <description>
      Chukwa Collector.
    </description>
    <display-name>Chukwa Collector.</display-name>


    <servlet>
      <servlet-name>chukwaCollector</servlet-name>
      <servlet-class>org.apache.hadoop.chukwa.datacollection.collector.servlet.ServletCollector</servlet-class>
          <init-param>
            <param-name>chukwaCollector.outputDir</param-name>
            <param-value>hdfs://localhost:9000/chukwa/logs</param-value>
          </init-param>
          <init-param>
            <param-name>chukwaCollector.rotateInterval</param-name>
            <param-value>300000</param-value>
          </init-param>
          <init-param>
                <param-name>chukwaCollector.useHDFS</param-name>
            <param-value>True/</param-value>
          </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>chukwaCollector</servlet-name>
        <url-pattern>/collector</url-pattern>
    </servlet-mapping>

</web-app>
