<?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.cluster.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.cluster.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.cluster.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="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="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="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="exipre 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="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="expireTolerance"
          description="Auto expire tolerance interval for backup sessions (default 300 sec)"
                 type="int" />
                 
    <attribute   name="updateActiveInterval"
          description="Send session access to backup after this interval (default 60 sec)"
                 type="int" />     

    <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="Return all sessions attributes and values"
               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="expireAllLocalSessions"
               description="Exipre 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>

</mbeans-descriptors>
