<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
 * 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>
  <servlet>
    <servlet-name>snoop</servlet-name>
    <servlet-class>SnoopServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>file</servlet-name>
    <servlet-class>ViewFile</servlet-class>
    <init-param>
      <param-name>initial</param-name>
      <param-value>
        1000
      </param-value>
      <description>
        The initial value for the counter  <!-- optional -->
      </description>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>
      mv
    </servlet-name>
    <url-pattern>
      *.wm
    </url-pattern>
  </servlet-mapping>

  <distributed/>

  <security-role>
    <role-name>
     manager
    </role-name>
    <role-name>
     director
    </role-name>
    <role-name>
     president
    </role-name>
  </security-role>
</web-app>
