<?xml version="1.0"?>
<!--

  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 mbeans-descriptors PUBLIC
        "-//Apache Software Foundation//DTD Model MBeans Configuration File"
        "http://jakarta.apache.org/commons/dtds/mbeans-descriptors.dtd">

<!--
     Descriptions of JMX MBeans for Catalina
 -->

<mbeans-descriptors>

    <mbean name="TomcatValve4150"
           className="org.apache.catalina.mbeans.ClassNameMBean"
           description="Valve that allows Flex to programmatically log in"
           domain="Catalina"
           group="Valve"
           type="flex.messaging.security.TomcatValve4150">

        <attribute name="className"
                   description="Fully qualified class name of the managed object"
                   type="java.lang.String"
                   writeable="false"/>

        <attribute name="debug"
                   description="The debugging detail level for this component"
                   type="int"/>


    </mbean>

    <mbean name="TomcatValve"
           className="org.apache.catalina.mbeans.ClassNameMBean"
           description="Valve that allows Flex to programmatically log in"
           domain="Catalina"
           group="Valve"
           type="flex.messaging.security.TomcatValve">

        <attribute name="className"
                   description="Fully qualified class name of the managed object"
                   type="java.lang.String"
                   writeable="false"/>

        <attribute name="debug"
                   description="The debugging detail level for this component"
                   type="int"/>


    </mbean>
</mbeans-descriptors>
