<?xml version="1.0" encoding="UTF-8"?>
<!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="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" />

    <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="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>
