<?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.
-->
<!DOCTYPE mbeans-descriptors PUBLIC
"-//Apache Software Foundation//DTD Model MBeans Configuration File"
"http://jakarta.apache.org/commons/dtds/mbeans-descriptors.dtd">
<mbeans-descriptors>
  <mbean
    name="JvmRouteBinderValve"
    description="mod_jk jvmRoute jsessionid cookie backup correction"
    domain="Catalina"
    group="Valve"
    type="org.apache.catalina.ha.session.JvmRouteBinderValve">
    <attribute
      name="className"
      description="Fully qualified class name of the managed object"
      type="java.lang.String"
      writeable="false"/>
    <attribute
      name="info"
      description="describe version"
      type="java.lang.String"
      writeable="false"/>
    <attribute
      name="enabled"
      description="enable a jvm Route check"
      type="boolean"/>
    <attribute
      name="numberOfSessions"
      description="number of jvmRoute session corrections"
      type="long"
      writeable="false"/>
    <attribute
      name="sessionIdAttribute"
      description="Name of attribute with sessionid value before turnover a session"
      type="java.lang.String"/>
    <operation
      name="start"
      description="Stops the Cluster JvmRouteBinderValve"
      impact="ACTION"
      returnType="void"/>
    <operation
      name="stop"
      description="Stops the Cluster JvmRouteBinderValve"
      impact="ACTION"
      returnType="void"/>
  </mbean>
  <mbean
    name="JvmRouteSessionIDBinderListener"
    description="Monitors the jvmRoute activity"
    domain="Catalina"
    group="Listener"
    type="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
    <attribute
      name="info"
      description="describe version"
      type="java.lang.String"
      writeable="false"/>
    <attribute
      name="numberOfSessions"
      description="number of jvmRoute session corrections"
      type="long"
      writeable="false"/>
  </mbean>
  <mbean
    name="DeltaManager"
    description="Cluster Manager implementation of the Manager interface"
    domain="Catalina"
    group="Manager"
    type="org.apache.catalina.ha.session.DeltaManager">
    <attribute
      name="info"
      description="describe version"
      type="java.lang.String"
      writeable="false"/>
    <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="activeSessions"
      description="Number of active sessions at this moment"
      type="int"
      writeable="false"/>
    <attribute
      name="sessionCounter"
      description="Total number of sessions created by this manager"
      type="int"/>
    <attribute
      name="sessionReplaceCounter"
      description="Total number of replaced sessions that load from external nodes"
      type="long"/>
    <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="sendClusterDomainOnly"
      is="true"
      description="The sendClusterDomainOnly flag send sessions only to members as same cluster domain"
      type="boolean"/>
    <attribute
      name="rejectedSessions"
      description="Number of sessions we rejected due to maxActive beeing reached"
      type="int"/>
    <attribute
      name="noContextManagerReceived"
      is="true"
      description="Is no context manager message received? "
      type="boolean"/>
    <attribute
      name="expiredSessions"
      description="Number of sessions that expired ( doesn't include explicit invalidations )"
      type="int"/>
    <attribute
      name="stateTransferTimeout"
      description="state transfer timeout in sec"
      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="counterReceive_EVT_GET_ALL_SESSIONS"
      description="Count receive EVT_GET_ALL_SESSIONS messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_ALL_SESSION_DATA"
      description="Count receive EVT_ALL_SESSION_DATA messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_SESSION_CREATED"
      description="Count receive EVT_SESSION_CREATED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_SESSION_DELTA"
      description="Count receive EVT_SESSION_DELTA messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_SESSION_ACCESSED"
      description="Count receive EVT_SESSION_ACCESSED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_SESSION_EXPIRED"
      description="Count receive EVT_SESSION_EXPIRED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_ALL_SESSION_TRANSFERCOMPLETE"
      description="Count receive EVT_ALL_SESSION_TRANSFERCOMPLETE messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_CHANGE_SESSION_ID"
      description="Count receive EVT_CHANGE_SESSION_ID messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterReceive_EVT_ALL_SESSION_NOCONTEXTMANAGER"
      description="Count receive EVT_ALL_SESSION_NOCONTEXTMANAGER messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_GET_ALL_SESSIONS"
      description="Count send EVT_GET_ALL_SESSIONS messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_ALL_SESSION_DATA"
      description="Count send EVT_ALL_SESSION_DATA messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_SESSION_CREATED"
      description="Count send EVT_SESSION_CREATED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_SESSION_DELTA"
      description="Count send EVT_SESSION_DELTA messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_SESSION_ACCESSED"
      description="Count send EVT_SESSION_ACCESSED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_SESSION_EXPIRED"
      description="Count send EVT_SESSION_EXPIRED messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_ALL_SESSION_TRANSFERCOMPLETE"
      description="Count send EVT_ALL_SESSION_TRANSFERCOMPLETE messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterSend_EVT_CHANGE_SESSION_ID"
      description="Count send EVT_CHANGE_SESSION_ID messages"
      type="long"
      writeable="false"/>
    <attribute
      name="counterNoStateTransfered"
      description="Count the failed session transfers noStateTransfered"
      type="int"
      writeable="false"/>
    <attribute
      name="receivedQueueSize"
      description="length of receive queue size when session received from other node"
      type="int"
      writeable="false"/>
    <attribute
      name="expireSessionsOnShutdown"
      is="true"
      description="expire all sessions cluster wide as one node goes down"
      type="boolean"/>
    <attribute
      name="notifyListenersOnReplication"
      is="true"
      description="Send session attribute change events on backup nodes"
      type="boolean"/>
    <attribute
      name="notifySessionListenersOnReplication"
      is="true"
      description="Send session start/stop events on backup nodes"
      type="boolean"/>
    <attribute
      name="notifyContainerListenersOnReplication"
      is="true"
      description="Send container events on backup nodes"
      type="boolean"/>
    <attribute
      name="sendAllSessions"
      is="true"
      description="Send all sessions at one big block"
      type="boolean"/>
    <attribute
      name="sendAllSessionsSize"
      description="session block size when sendAllSessions=false (default=1000)"
      type="int"/>
    <attribute
      name="sendAllSessionsWaitTime"
      description="wait time between send session block (default 2 sec)"
      type="int"/>
    <attribute
      name="sessionAttributeNameFilter"
      descritpion="The string pattern used for including session attributes in replication. 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>
    <operation
      name="expireAllLocalSessions"
      description="Expire all active local sessions and replicate the invalid sessions"
      impact="ACTION"
      returnType="void">    </operation>
    <operation
      name="processExpires"
      description="force process to expire sessions"
      impact="ACTION"
      returnType="void">    </operation>
    <operation
      name="resetStatistics"
      description="Reset all statistics"
      impact="ACTION"
      returnType="void">    </operation>
    <operation
      name="getAllClusterSessions"
      description="send to oldest cluster member that this node need all cluster sessions (resync member)"
      impact="ACTION"
      returnType="void">    </operation>
  </mbean>
  <mbean
    name="SimpleTcpReplicationManager"
    className="org.apache.catalina.mbeans.ClassNameMBean"
    description="Clustered implementation of the Manager interface"
    domain="Catalina"
    group="Manager"
    type="org.apache.catalina.ha.tcp.SimpleTcpReplicationManager">
    <attribute
      name="algorithm"
      description="The message digest algorithm to be used when generating session identifiers"
      type="java.lang.String"/>
    <attribute
      name="checkInterval"
      description="The interval (in seconds) between checks for expired sessions"
      type="int"/>
    <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="name"
      description="The descriptive name of this Manager implementation (for logging)"
      type="java.lang.String"
      writeable="false"/>
  </mbean>
  <mbean
    name="BackupManager"
    description="Cluster Manager implementation of the Manager interface"
    domain="Catalina"
    group="Manager"
    type="org.apache.catalina.ha.session.BackupManager">
    <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 primary sessions at this moment"
      type="int"
      writeable="false"/>
    <attribute
      name="activeSessionsFull"
      description="Number of active sessions at this moment"
      type="int"
      writeable="false"/>
    <attribute
      name="sessionCounter"
      description="Total number of sessions created by this manager"
      type="int"/>
    <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="expireSessionsOnShutdown"
      is="true"
      description="expire all sessions cluster wide as one node goes down"
      type="boolean"/>
    <attribute
      name="notifyListenersOnReplication"
      is="true"
      description="Send session attribute change events on backup nodes"
      type="boolean"/>
    <attribute
      name="mapSendOptions"
      description="mapSendOptions"
      type="int"
      writeable="false"/>
    <attribute
      name="rpcTimeout"
      description="Timeout for RPC messages, how long we will wait for a reply"
      type="long"/>
    <attribute
      name="sessionAttributeNameFilter"
      descritpion="The string pattern used for including session attributes in replication. 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 primary session ids"
      impact="ACTION"
      returnType="java.lang.String">    </operation>
    <operation
      name="listSessionIdsFull"
      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>
    
  </mbean>
</mbeans-descriptors>
