<?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.
-->
<mbeans-descriptors>

  <mbean         name="StandardManager"
          description="Standard implementation of the Manager interface"
               domain="Catalina"
                group="Manager"
                 type="org.apache.catalina.session.StandardManager">

    <attribute   name="algorithm"
          description="The message digest algorithm to be used when generating
                       session identifiers"
                 type="java.lang.String"/>


    <attribute   name="randomFile"
          description="File source of random - /dev/urandom or a pipe"
                 type="java.lang.String"/>

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

    <attribute   name="distributable"
          description="The distributable flag for Sessions created by this
                       Manager"
                 type="boolean"/>

    <attribute   name="entropy"
          description="A String initialization parameter used to increase the
                       entropy of the initialization of our random number
                       generator"
                 type="java.lang.String"/>

    <attribute   name="maxActiveSessions"
          description="The maximum number of active Sessions allowed, or -1
                       for no limit"
                 type="int"/>

    <attribute   name="maxInactiveInterval"
          description="The default maximum inactive interval for Sessions
                       created by this Manager"
                 type="int"/>

    <attribute name="processExpiresFrequency"
               description="The frequency of the manager checks (expiration and passivation)"
               type="int"/>
               
    <attribute   name="sessionIdLength"
          description="The session id length (in bytes) of Sessions
                       created by this Manager"
                 type="int"/>

    <attribute   name="name"
          description="The descriptive name of this Manager implementation
                       (for logging)"
                 type="java.lang.String"
            writeable="false"/>

    <attribute   name="pathname"
          description="Path name of the disk file in which active sessions"
                 type="java.lang.String"/>

    <attribute   name="activeSessions"
          description="Number of active sessions at this moment"
                 type="int" 
            writeable="false"/>

    <attribute   name="sessionCreateRate"
          description="Session creation rate in sessions per minute"
                 type="int"
            writeable="false" />

    <attribute   name="sessionCounter"
          description="Total number of sessions created by this manager"
                 type="int" />
                 
    <attribute   name="sessionExpireRate"
          description="Session expiration rate in sessions per minute"
                 type="int"
            writeable="false" />
                 
    <attribute   name="maxActive"
          description="Maximum number of active sessions so far"
                 type="int" />

    <attribute   name="sessionMaxAliveTime"
          description="Longest time an expired session had been alive"
                 type="int" />

    <attribute   name="sessionAverageAliveTime"
          description="Average time an expired session had been alive"
                 type="int" />

    <attribute   name="rejectedSessions"
          description="Number of sessions we rejected due to maxActive beeing reached"
                 type="int" />

    <attribute   name="expiredSessions"
          description="Number of sessions that expired ( doesn't include explicit invalidations )"
                 type="int" />

    <attribute   name="processingTime"
          description="Time spent doing housekeeping and expiration"
                 type="long" />

    <attribute   name="duplicates"
          description="Number of duplicated session ids generated"
                 type="int" />

    <attribute   name="sessionAttributeNameFilter"
          descritpion="The string pattern used for including session attributes in distribution. Null means all attributes are included."
                 type="java.lang.String"/>

    <attribute   name="sessionAttributeValueClassNameFilter"
          description="The regular expression used to filter session attributes based on the implementation class of the value. The regular expression is anchored and must match the fully qualified class name."
                 type="java.lang.String"/>

    <attribute   name="warnOnSessionAttributeFilterFailure"
          description="Should a WARN level log message be generated if a session attribute fails to match sessionAttributeNameFilter or sessionAttributeClassNameFilter?"
                 type="boolean"/>

    <operation   name="listSessionIds"
          description="Return the list of active session ids"
               impact="ACTION"
           returnType="java.lang.String">
    </operation>

    <operation   name="getSessionAttribute"
          description="Return a session attribute"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
      <parameter name="key"
          description="key of the attribute"
                 type="java.lang.String"/>
    </operation>

    <operation   name="expireSession"
          description="Expire a session"
               impact="ACTION"
           returnType="void">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getLastAccessedTime"
          description="Get the last access time"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getCreationTime"
          description="Get the creation time"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

   <operation   name="getLastAccessedTimestamp"
          description="Get the last access timestamp"
               impact="ACTION"
           returnType="long">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getCreationTimestamp"
          description="Get the creation timestamp"
               impact="ACTION"
           returnType="long">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

  </mbean>

  <mbean         name="PersistentManager"
          description="Persistent Manager"
               domain="Catalina"
                group="Manager"
                 type="org.apache.catalina.session.PersistentManager">

    <attribute   name="algorithm"
          description="The message digest algorithm to be used when generating
                       session identifiers"
                 type="java.lang.String"/>

    <attribute   name="randomFile"
          description="File source of random - /dev/urandom or a pipe"
                 type="java.lang.String"/>

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

    <attribute   name="distributable"
          description="The distributable flag for Sessions created by this
                       Manager"
                 type="boolean"/>

    <attribute   name="entropy"
          description="A String initialization parameter used to increase the
                       entropy of the initialization of our random number
                       generator"
                 type="java.lang.String"/>
 
    <attribute   name="managedResource"
          description="The managed resource this MBean is associated with"
                 type="java.lang.Object"/>

    <attribute   name="maxActiveSessions"
          description="The maximum number of active Sessions allowed, or -1
                       for no limit"
                 type="int"/>

    <attribute   name="maxInactiveInterval"
          description="The default maximum inactive interval for Sessions
                       created by this Manager"
                 type="int"/>
                 
    <attribute name="processExpiresFrequency"
               description="The frequency of the manager checks (expiration and passivation)"
               type="int"/>
               
    <attribute   name="sessionIdLength"
          description="The session id length (in bytes) of Sessions
                       created by this Manager"
                 type="int"/>

    <attribute   name="name"
          description="The descriptive name of this Manager implementation
                       (for logging)"
                 type="java.lang.String"
            writeable="false"/>

    <attribute   name="activeSessions"
          description="Number of active sessions at this moment"
                 type="int" 
            writeable="false"/>

    <attribute   name="sessionCreateRate"
          description="Session creation rate in sessions per minute"
                 type="int"
            writeable="false" />

    <attribute   name="sessionCounter"
          description="Total number of sessions created by this manager"
                 type="int" />
                 
    <attribute   name="sessionExpireRate"
          description="Session expiration rate in sessions per minute"
                 type="int"
            writeable="false" />
                 
    <attribute   name="maxActive"
          description="Maximum number of active sessions so far"
                 type="int" />

    <attribute   name="maxIdleBackup"
          description="How long a session must be idle before it should be backed up"
                 type="int" />

    <attribute   name="minIdleSwap"
          description="Minimum time a session must be idle before it is swapped to disk"
                 type="int" />

    <attribute   name="maxIdleSwap"
          description="The maximum time a session may be idle before it should be swapped to file just on general principle"
                 type="int" />

    <attribute   name="sessionMaxAliveTime"
          description="Longest time an expired session had been alive"
                 type="int" />

    <attribute   name="sessionAverageAliveTime"
          description="Average time an expired session had been alive"
                 type="int" />

    <attribute   name="rejectedSessions"
          description="Number of sessions we rejected due to maxActive beeing reached"
                 type="int" />

    <attribute   name="expiredSessions"
          description="Number of sessions that expired ( doesn't include explicit invalidations )"
                 type="int" />

    <attribute   name="processingTime"
          description="Time spent doing housekeeping and expiration"
                 type="long" />

    <attribute   name="duplicates"
          description="Number of duplicated session ids generated"
                 type="int" />

    <attribute   name="sessionAttributeNameFilter"
          descritpion="The string pattern used for including session attributes in distribution. Null means all attributes are included."
                 type="java.lang.String"/>

    <attribute   name="sessionAttributeValueClassNameFilter"
          description="The regular expression used to filter session attributes based on the implementation class of the value. The regular expression is anchored and must match the fully qualified class name."
                 type="java.lang.String"/>

    <attribute   name="warnOnSessionAttributeFilterFailure"
          description="Should a WARN level log message be generated if a session attribute fails to match sessionAttributeNameFilter or sessionAttributeClassNameFilter?"
                 type="boolean"/>

    <operation   name="listSessionIds"
          description="Return the list of active session ids"
               impact="ACTION"
           returnType="java.lang.String">
    </operation>

    <operation   name="getSessionAttribute"
          description="Return a session attribute"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
      <parameter name="key"
          description="key of the attribute"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getSession"
          description="Get information about a session"
               impact="ACTION"
           returnType="java.util.HashMap">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="expireSession"
          description="Expire a session"
               impact="ACTION"
           returnType="void">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getLastAccessedTime"
          description="Get the last access time"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getCreationTime"
          description="Get the creation time"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getLastAccessedTimestamp"
          description="Get the last access timestamp"
               impact="ACTION"
           returnType="long">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

    <operation   name="getCreationTimestamp"
          description="Get the creation timestamp"
               impact="ACTION"
           returnType="long">
      <parameter name="sessionId"
          description="Id of the session"
                 type="java.lang.String"/>
    </operation>

  </mbean>

</mbeans-descriptors>
