Author: kkolinko
Date: Sun Apr 27 22:44:34 2014
New Revision: 1590512

URL: http://svn.apache.org/r1590512
Log:
Improve documentation markup.
This is partial backport of r1518540 from trunk.

Modified:
    tomcat/tc7.0.x/trunk/webapps/docs/cluster-howto.xml

Modified: tomcat/tc7.0.x/trunk/webapps/docs/cluster-howto.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/cluster-howto.xml?rev=1590512&r1=1590511&r2=1590512&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/cluster-howto.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/cluster-howto.xml Sun Apr 27 22:44:34 2014
@@ -41,7 +41,10 @@
 
 <section name="For the impatient">
   <p>
-    Simply add <source>&lt;Cluster 
className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;/&gt;</source>
+    Simply add
+  </p>
+  <source>&lt;Cluster 
className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;/&gt;</source>
+  <p>
     to your <code>&lt;Engine&gt;</code> or your <code>&lt;Host&gt;</code> 
element to enable clustering.
   </p>
   <p>
@@ -51,58 +54,61 @@
     Also when using the delta manager it will replicate to all nodes, even 
nodes that don't have the application deployed.<br/>
     To get around this problem, you'll want to use the BackupManager. This 
manager only replicates the session data to one backup
     node, and only to nodes that have the application deployed. Downside of 
the BackupManager: not quite as battle tested as the delta manager.
-    <br/>
-    Here are some of the important default values:<br/>
-    1. Multicast address is 228.0.0.4<br/>
-    2. Multicast port is 45564 (the port and the address together determine 
cluster membership.<br/>
-    3. The IP broadcasted is 
<code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure 
you don't broadcast 127.0.0.1, this is a common error)<br/>
-    4. The TCP port listening for replication messages is the first available 
server socket in range <code>4000-4100</code><br/>
-    5. Two listeners are configured <code>ClusterSessionListener</code> and 
<code>JvmRouteSessionIDBinderListener</code><br/>
-    6. Two interceptors are configured <code>TcpFailureDetector</code> and 
<code>MessageDispatch15Interceptor</code><br/>
-    The following is the default cluster configuration:<br/>
-    <source>
-        &lt;Cluster 
className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;
-                 channelSendOptions=&quot;8&quot;&gt;
-
-          &lt;Manager 
className=&quot;org.apache.catalina.ha.session.DeltaManager&quot;
-                   expireSessionsOnShutdown=&quot;false&quot;
-                   notifyListenersOnReplication=&quot;true&quot;/&gt;
-
-          &lt;Channel 
className=&quot;org.apache.catalina.tribes.group.GroupChannel&quot;&gt;
-            &lt;Membership 
className=&quot;org.apache.catalina.tribes.membership.McastService&quot;
-                        address=&quot;228.0.0.4&quot;
-                        port=&quot;45564&quot;
-                        frequency=&quot;500&quot;
-                        dropTime=&quot;3000&quot;/&gt;
-            &lt;Receiver 
className=&quot;org.apache.catalina.tribes.transport.nio.NioReceiver&quot;
-                      address=&quot;auto&quot;
-                      port=&quot;4000&quot;
-                      autoBind=&quot;100&quot;
-                      selectorTimeout=&quot;5000&quot;
-                      maxThreads=&quot;6&quot;/&gt;
-
-            &lt;Sender 
className=&quot;org.apache.catalina.tribes.transport.ReplicationTransmitter&quot;&gt;
-              &lt;Transport 
className=&quot;org.apache.catalina.tribes.transport.nio.PooledParallelSender&quot;/&gt;
-            &lt;/Sender&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.TcpFailureDetector&quot;/&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor&quot;/&gt;
-          &lt;/Channel&gt;
-
-          &lt;Valve 
className=&quot;org.apache.catalina.ha.tcp.ReplicationValve&quot;
-                 filter=&quot;&quot;/&gt;
-          &lt;Valve 
className=&quot;org.apache.catalina.ha.session.JvmRouteBinderValve&quot;/&gt;
-
-          &lt;Deployer 
className=&quot;org.apache.catalina.ha.deploy.FarmWarDeployer&quot;
-                    tempDir=&quot;/tmp/war-temp/&quot;
-                    deployDir=&quot;/tmp/war-deploy/&quot;
-                    watchDir=&quot;/tmp/war-listen/&quot;
-                    watchEnabled=&quot;false&quot;/&gt;
-
-          &lt;ClusterListener 
className=&quot;org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener&quot;/&gt;
-          &lt;ClusterListener 
className=&quot;org.apache.catalina.ha.session.ClusterSessionListener&quot;/&gt;
-        &lt;/Cluster&gt;
-    </source>
   </p>
+  <p>
+    Here are some of the important default values:
+  </p>
+  <ol>
+    <li>Multicast address is 228.0.0.4</li>
+    <li>Multicast port is 45564 (the port and the address together determine 
cluster membership.</li>
+    <li>The IP broadcasted is 
<code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure 
you don't broadcast 127.0.0.1, this is a common error)</li>
+    <li>The TCP port listening for replication messages is the first available 
server socket in range <code>4000-4100</code></li>
+    <li>Two listeners are configured <code>ClusterSessionListener</code></li>
+    <li>Two interceptors are configured <code>TcpFailureDetector</code> and 
<code>MessageDispatch15Interceptor</code></li>
+  </ol>
+  <p>
+    The following is the default cluster configuration:
+  </p>
+  <source><![CDATA[        <Cluster 
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+                 channelSendOptions="8">
+
+          <Manager className="org.apache.catalina.ha.session.DeltaManager"
+                   expireSessionsOnShutdown="false"
+                   notifyListenersOnReplication="true"/>
+
+          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+            <Membership 
className="org.apache.catalina.tribes.membership.McastService"
+                        address="228.0.0.4"
+                        port="45564"
+                        frequency="500"
+                        dropTime="3000"/>
+            <Receiver 
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+                      address="auto"
+                      port="4000"
+                      autoBind="100"
+                      selectorTimeout="5000"
+                      maxThreads="6"/>
+
+            <Sender 
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+              <Transport 
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+            </Sender>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+          </Channel>
+
+          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
+                 filter=""/>
+          <Valve 
className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
+
+          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+                    tempDir="/tmp/war-temp/"
+                    deployDir="/tmp/war-deploy/"
+                    watchDir="/tmp/war-listen/"
+                    watchEnabled="false"/>
+
+          <ClusterListener 
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
+          <ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener">
+        </Cluster>]]></source>
   <p>Will cover this section in more detail later in this document.</p>
 </section>
 
@@ -129,7 +135,7 @@ should be completed:</p>
    side otherwise, a new session will be created.</p>
 <p>Note: Clustering support currently requires the JDK version 1.5 or 
later.</p>
 <p>The Cluster module uses the Tomcat JULI logging framework, so you can 
configure logging
-   through the regular logging.properties file. To track messages, you can 
enable logging on the key:<code>org.apache.catalina.tribes.MESSAGES</code></p>
+   through the regular logging.properties file. To track messages, you can 
enable logging on the key: <code>org.apache.catalina.tribes.MESSAGES</code></p>
 </section>
 
 
@@ -153,15 +159,13 @@ should be completed:</p>
    A very simple setup would look like this:
    </p>
 
-<source>
-        DNS Round Robin
+<source>        DNS Round Robin
                |
          Load Balancer
           /           \
       Cluster1      Cluster2
       /     \        /     \
-  Tomcat1 Tomcat2  Tomcat3 Tomcat4
-</source>
+  Tomcat1 Tomcat2  Tomcat3 Tomcat4</source>
 
 <p>What is important to mention here, is that session replication is only the 
beginning of clustering.
    Another popular concept used to implement clusters is farming, i.e., you 
deploy your apps only to one
@@ -235,58 +239,54 @@ should be completed:</p>
 </section>
 
 <section name="Configuration Example">
-    <source>
-        &lt;Cluster 
className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;
-                 channelSendOptions=&quot;6&quot;&gt;
-
-          &lt;Manager 
className=&quot;org.apache.catalina.ha.session.BackupManager&quot;
-                   expireSessionsOnShutdown=&quot;false&quot;
-                   notifyListenersOnReplication=&quot;true&quot;
-                   mapSendOptions=&quot;6&quot;/&gt;
-          &lt;!--
-          &lt;Manager 
className=&quot;org.apache.catalina.ha.session.DeltaManager&quot;
-                   expireSessionsOnShutdown=&quot;false&quot;
-                   notifyListenersOnReplication=&quot;true&quot;/&gt;
-          --&gt;
-          &lt;Channel 
className=&quot;org.apache.catalina.tribes.group.GroupChannel&quot;&gt;
-            &lt;Membership 
className=&quot;org.apache.catalina.tribes.membership.McastService&quot;
-                        address=&quot;228.0.0.4&quot;
-                        port=&quot;45564&quot;
-                        frequency=&quot;500&quot;
-                        dropTime=&quot;3000&quot;/&gt;
-            &lt;Receiver 
className=&quot;org.apache.catalina.tribes.transport.nio.NioReceiver&quot;
-                      address=&quot;auto&quot;
-                      port=&quot;5000&quot;
-                      selectorTimeout=&quot;100&quot;
-                      maxThreads=&quot;6&quot;/&gt;
-
-            &lt;Sender 
className=&quot;org.apache.catalina.tribes.transport.ReplicationTransmitter&quot;&gt;
-              &lt;Transport 
className=&quot;org.apache.catalina.tribes.transport.nio.PooledParallelSender&quot;/&gt;
-            &lt;/Sender&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.TcpFailureDetector&quot;/&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor&quot;/&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor&quot;/&gt;
-          &lt;/Channel&gt;
-
-          &lt;Valve 
className=&quot;org.apache.catalina.ha.tcp.ReplicationValve&quot;
-                 
filter=&quot;.*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt&quot;/&gt;
-
-          &lt;Deployer 
className=&quot;org.apache.catalina.ha.deploy.FarmWarDeployer&quot;
-                    tempDir=&quot;/tmp/war-temp/&quot;
-                    deployDir=&quot;/tmp/war-deploy/&quot;
-                    watchDir=&quot;/tmp/war-listen/&quot;
-                    watchEnabled=&quot;false&quot;/&gt;
-
-          &lt;ClusterListener 
className=&quot;org.apache.catalina.ha.session.ClusterSessionListener&quot;/&gt;
-        &lt;/Cluster&gt;
-    </source>
+    <source><![CDATA[        <Cluster 
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+                 channelSendOptions="6">
+
+          <Manager className="org.apache.catalina.ha.session.BackupManager"
+                   expireSessionsOnShutdown="false"
+                   notifyListenersOnReplication="true"
+                   mapSendOptions="6"/>
+          <!--
+          <Manager className="org.apache.catalina.ha.session.DeltaManager"
+                   expireSessionsOnShutdown="false"
+                   notifyListenersOnReplication="true"/>
+          -->
+          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+            <Membership 
className="org.apache.catalina.tribes.membership.McastService"
+                        address="228.0.0.4"
+                        port="45564"
+                        frequency="500"
+                        dropTime="3000"/>
+            <Receiver 
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+                      address="auto"
+                      port="5000"
+                      selectorTimeout="100"
+                      maxThreads="6"/>
+
+            <Sender 
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+              <Transport 
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+            </Sender>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
+          </Channel>
+
+          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
+                 
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
+
+          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+                    tempDir="/tmp/war-temp/"
+                    deployDir="/tmp/war-deploy/"
+                    watchDir="/tmp/war-listen/"
+                    watchEnabled="false"/>
+
+          <ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+        </Cluster>]]></source>
     <p>
       Break it down!!
     </p>
-    <source>
-        &lt;Cluster 
className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;
-                 channelSendOptions=&quot;6&quot;&gt;
-    </source>
+    <source><![CDATA[        <Cluster 
className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+                 channelSendOptions="6">]]></source>
     <p>
       The main element, inside this element all cluster details can be 
configured.
       The <code>channelSendOptions</code> is the flag that is attached to each 
message sent by the
@@ -297,17 +297,15 @@ should be completed:</p>
       sends it itself directly through the channel.
       <br/>For more info, Please visit the <a 
href="config/cluster.html">reference documentation</a>
     </p>
-    <source>
-          &lt;Manager 
className=&quot;org.apache.catalina.ha.session.BackupManager&quot;
-                   expireSessionsOnShutdown=&quot;false&quot;
-                   notifyListenersOnReplication=&quot;true&quot;
-                   mapSendOptions=&quot;6&quot;/&gt;
-          &lt;!--
-          &lt;Manager 
className=&quot;org.apache.catalina.ha.session.DeltaManager&quot;
-                   expireSessionsOnShutdown=&quot;false&quot;
-                   notifyListenersOnReplication=&quot;true&quot;/&gt;
-          --&gt;
-    </source>
+    <source><![CDATA[          <Manager 
className="org.apache.catalina.ha.session.BackupManager"
+                   expireSessionsOnShutdown="false"
+                   notifyListenersOnReplication="true"
+                   mapSendOptions="6"/>
+          <!--
+          <Manager className="org.apache.catalina.ha.session.DeltaManager"
+                   expireSessionsOnShutdown="false"
+                   notifyListenersOnReplication="true"/>
+          -->]]></source>
     <p>
         This is a template for the manager configuration that will be used if 
no manager is defined in the &lt;Context&gt;
         element. In Tomcat 5.x each webapp marked distributable had to use the 
same manager, this is no longer the case
@@ -317,21 +315,17 @@ should be completed:</p>
         and create a manager instance cloning this configuration.
         <br/>For more info, Please visit the <a 
href="config/cluster-manager.html">reference documentation</a>
     </p>
-    <source>
-          &lt;Channel 
className=&quot;org.apache.catalina.tribes.group.GroupChannel&quot;&gt;
-    </source>
+    <source><![CDATA[          <Channel 
className="org.apache.catalina.tribes.group.GroupChannel">]]></source>
     <p>
         The channel element is <a href="tribes/introduction.html">Tribes</a>, 
the group communication framework
         used inside Tomcat. This element encapsulates everything that has to 
do with communication and membership logic.
         <br/>For more info, Please visit the <a 
href="config/cluster-channel.html">reference documentation</a>
     </p>
-    <source>
-            &lt;Membership 
className=&quot;org.apache.catalina.tribes.membership.McastService&quot;
-                        address=&quot;228.0.0.4&quot;
-                        port=&quot;45564&quot;
-                        frequency=&quot;500&quot;
-                        dropTime=&quot;3000&quot;/&gt;
-    </source>
+    <source><![CDATA[            <Membership 
className="org.apache.catalina.tribes.membership.McastService"
+                        address="228.0.0.4"
+                        port="45564"
+                        frequency="500"
+                        dropTime="3000"/>]]></source>
     <p>
         Membership is done using multicasting. Please note that Tribes also 
supports static memberships using the
         <code>StaticMembershipInterceptor</code> if you want to extend your 
membership to points beyond multicasting.
@@ -343,13 +337,11 @@ should be completed:</p>
         <code>Receiver.address</code> attribute.
         <br/>For more info, Please visit the <a 
href="config/cluster-membership.html">reference documentation</a>
     </p>
-    <source>
-            &lt;Receiver 
className=&quot;org.apache.catalina.tribes.transport.nio.NioReceiver&quot;
-                      address=&quot;auto&quot;
-                      port=&quot;5000&quot;
-                      selectorTimeout=&quot;100&quot;
-                      maxThreads=&quot;6&quot;/&gt;
-    </source>
+    <source><![CDATA[            <Receiver 
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+                      address="auto"
+                      port="5000"
+                      selectorTimeout="100"
+                      maxThreads="6"/>]]></source>
     <p>
         In tribes the logic of sending and receiving data has been broken into 
two functional components. The Receiver, as the name suggests
         is responsible for receiving messages. Since the Tribes stack is 
thread less, (a popular improvement now adopted by other frameworks as well),
@@ -357,12 +349,9 @@ should be completed:</p>
         The address attribute is the host address that will be broadcasted by 
the membership component to the other nodes.
         <br/>For more info, Please visit the <a 
href="config/cluster-receiver.html">reference documentation</a>
     </p>
-    <source>
-
-            &lt;Sender 
className=&quot;org.apache.catalina.tribes.transport.ReplicationTransmitter&quot;&gt;
-              &lt;Transport 
className=&quot;org.apache.catalina.tribes.transport.nio.PooledParallelSender&quot;/&gt;
-            &lt;/Sender&gt;
-    </source>
+    <source><![CDATA[            <Sender 
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+              <Transport 
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+            </Sender>]]></source>
     <p>
         The sender component, as the name indicates is responsible for sending 
messages to other nodes.
         The sender has a shell component, the 
<code>ReplicationTransmitter</code> but the real stuff done is done in the
@@ -373,12 +362,10 @@ should be completed:</p>
         at the same time.
         <br/>For more info, Please visit the <a 
href="config/cluster-sender.html">reference documentation</a>
     </p>
-    <source>
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.TcpFailureDetector&quot;/&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor&quot;/&gt;
-            &lt;Interceptor 
className=&quot;org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor&quot;/&gt;
-          &lt;/Channel&gt;
-    </source>
+    <source><![CDATA[            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+            <Interceptor 
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
+          </Channel>]]></source>
     <p>
         Tribes uses a stack to send messages through. Each element in the 
stack is called an interceptor, and works much like the valves do
         in the Tomcat servlet container.
@@ -391,23 +378,19 @@ should be completed:</p>
         channel stack. Think of it as a linked list, with the head being the 
first most interceptor and the tail the last.
         <br/>For more info, Please visit the <a 
href="config/cluster-interceptor.html">reference documentation</a>
     </p>
-    <source>
-          &lt;Valve 
className=&quot;org.apache.catalina.ha.tcp.ReplicationValve&quot;
-                 
filter=&quot;.*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt&quot;/&gt;
-    </source>
+    <source><![CDATA[          <Valve 
className="org.apache.catalina.ha.tcp.ReplicationValve"
+                 
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>]]></source>
     <p>
         The cluster uses valves to track requests to web applications, we've 
mentioned the ReplicationValve and the JvmRouteBinderValve above.
         The &lt;Cluster&gt; element itself is not part of the pipeline in 
Tomcat, instead the cluster adds the valve to its parent container.
         If the &lt;Cluster&gt; elements is configured in the &lt;Engine&gt; 
element, the valves get added to the engine and so on.
         <br/>For more info, Please visit the <a 
href="config/cluster-valve.html">reference documentation</a>
     </p>
-    <source>
-          &lt;Deployer 
className=&quot;org.apache.catalina.ha.deploy.FarmWarDeployer&quot;
-                    tempDir=&quot;/tmp/war-temp/&quot;
-                    deployDir=&quot;/tmp/war-deploy/&quot;
-                    watchDir=&quot;/tmp/war-listen/&quot;
-                    watchEnabled=&quot;false&quot;/&gt;
-    </source>
+    <source><![CDATA[          <Deployer 
className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+                    tempDir="/tmp/war-temp/"
+                    deployDir="/tmp/war-deploy/"
+                    watchDir="/tmp/war-listen/"
+                    watchEnabled="false"/>]]></source>
     <p>
         The default tomcat cluster supports farmed deployment, ie, the cluster 
can deploy and undeploy applications on the other nodes.
         The state of this component is currently in flux but will be addressed 
soon. There was a change in the deployment algorithm
@@ -415,10 +398,8 @@ should be completed:</p>
         webapps directory.
         <br/>For more info, Please visit the <a 
href="config/cluster-deployer.html">reference documentation</a>
     </p>
-    <source>
-          &lt;ClusterListener 
className=&quot;org.apache.catalina.ha.session.ClusterSessionListener&quot;/&gt;
-        &lt;/Cluster&gt;
-    </source>
+    <source><![CDATA[          <ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+        </Cluster>]]></source>
     <p>
         Since the SimpleTcpCluster itself is a sender and receiver of the 
Channel object, components can register themselves as listeners to
         the SimpleTcpCluster. The listener above 
<code>ClusterSessionListener</code> listens for DeltaManager replication 
messages
@@ -430,9 +411,8 @@ should be completed:</p>
 
 <section name="Cluster Architecture">
 
-<p><b>Component Levels:</b>
-<source>
-         Server
+<p><b>Component Levels:</b></p>
+<source>         Server
            |
          Service
            |
@@ -478,9 +458,8 @@ should be completed:</p>
                                                 \
                                                  -- FarmWarDeployer
 
-
 </source>
-</p>
+
 
 </section>
 <section name="How it Works">
@@ -512,7 +491,7 @@ should be completed:</p>
         Tomcat will create a <code>DeltaManager</code> for that context 
instead of a <code>StandardManager</code>.
         The cluster class will start up a membership service (multicast) and a 
replication service (tcp unicast).
         More on the architecture further down in this document.
-    </p><p></p>
+    </p>
 </li>
 <li><b><code>TomcatB</code> starts up</b>
     <p>
@@ -525,7 +504,7 @@ should be completed:</p>
         entry. The session state gets transferred for each web application 
that has distributable in
         its web.xml. Note: To use session replication efficiently, all your 
tomcat instances should be
         configured the same.
-    </p><p></p>
+    </p>
 </li>
 <li><B><code>TomcatA</code> receives a request, a session <code>S1</code> is 
created.</B>
     <p>
@@ -539,7 +518,7 @@ should be completed:</p>
         in the session without calling setAttribute or removeAttribute to be 
replicated.
         a useDirtyFlag configuration parameter can be used to optimize the 
number of times
         a session is replicated.
-    </p><p></p>
+    </p>
 
 </li>
 <li><b><code>TomcatA</code> crashes</b>
@@ -549,11 +528,11 @@ should be completed:</p>
         be notified of any changes that occurs in TomcatB.
         The load balancer will redirect the requests from TomcatA to TomcatB 
and all the sessions
         are current.
-    </p><p></p>
+    </p>
 </li>
 <li><b><code>TomcatB</code> receives a request for session <code>S1</code></b>
     <p>Nothing exciting, TomcatB will process the request as any other request.
-    </p><p></p>
+    </p>
 </li>
 <li><b><code>TomcatA</code> starts up</b>
     <p>Upon start up, before TomcatA starts taking new request and making 
itself
@@ -561,18 +540,18 @@ should be completed:</p>
     It will join the cluster, contact TomcatB for the current state of all the 
sessions.
     And once it receives the session state, it finishes loading and opens its 
HTTP/mod_jk ports.
     So no requests will make it to TomcatA until it has received the session 
state from TomcatB.
-    </p><p></p>
+    </p>
 </li>
 <li><b><code>TomcatA</code> receives a request, invalidate is called on the 
session (<code>S1</code>)</b>
     <p>The invalidate call is intercepted, and the session is queued with 
invalidated sessions.
         When the request is complete, instead of sending out the session that 
has changed, it sends out
         an "expire" message to TomcatB and TomcatB will invalidate the session 
as well.
-    </p><p></p>
+    </p>
 
 </li>
 <li><b><code>TomcatB</code> receives a request, for a new session 
(<code>S2</code>)</b>
     <p>Same scenario as in step 3)
-    </p><p></p>
+    </p>
 
 
 </li>
@@ -581,7 +560,7 @@ should be completed:</p>
        and the session is queued with invalidated sessions.
        At this point, the invalidated session will not be replicated across 
until
        another request comes through the system and checks the invalid queue.
-    </p><p></p>
+    </p>
 </li>
 </ol>
 
@@ -618,24 +597,23 @@ should be completed:</p>
 
 <section name="Monitoring your Cluster with JMX">
 <p>Monitoring is a very important question when you use a cluster. Some of the 
cluster objects are JMX MBeans </p>
-<p>Add the following parameter to your startup script with Java 5:
-<source>
-set CATALINA_OPTS=\
+<p>Add the following parameter to your startup script with Java 5:</p>
+<source>set CATALINA_OPTS=\
 -Dcom.sun.management.jmxremote \
 -Dcom.sun.management.jmxremote.port=%my.jmx.port% \
 -Dcom.sun.management.jmxremote.ssl=false \
--Dcom.sun.management.jmxremote.authenticate=false
-</source>
-</p>
+-Dcom.sun.management.jmxremote.authenticate=false</source>
+
 <p>
-List of Cluster Mbeans<br/>
-<table border="1" cellpadding="5">
+  List of Cluster Mbeans
+</p>
+<table class="defaultTable">
 
   <tr>
-    <th align="center" bgcolor="aqua">Name</th>
-    <th align="center" bgcolor="aqua">Description</th>
-    <th align="center" bgcolor="aqua">MBean ObjectName - Engine</th>
-    <th align="center" bgcolor="aqua">MBean ObjectName - Host</th>
+    <th>Name</th>
+    <th>Description</th>
+    <th>MBean ObjectName - Engine</th>
+    <th>MBean ObjectName - Host</th>
   </tr>
 
   <tr>
@@ -683,7 +661,6 @@ List of Cluster Mbeans<br/>
   </tr>
 
 </table>
-</p>
 </section>
 
 <section name="FAQ">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to