Author: fhanik Date: Fri Sep 29 15:38:04 2006 New Revision: 451480 URL: http://svn.apache.org/viewvc?view=rev&rev=451480 Log: Started documenting the cluster configuration. On to the sub components
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java tomcat/tc6.0.x/trunk/webapps/docs/config/cluster.xml Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java?view=diff&rev=451480&r1=451479&r2=451480 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java Fri Sep 29 15:38:04 2006 @@ -391,24 +391,26 @@ */ public void setProperty(String name, Object value) { if (log.isTraceEnabled()) - log.trace(sm.getString("SimpleTcpCluster.setProperty", name, value, - properties.get(name))); - + log.trace(sm.getString("SimpleTcpCluster.setProperty", name, value,properties.get(name))); properties.put(name, value); + //using a dynamic way of setting properties is nice, but a security risk + //if exposed through JMX. This way you can sit and try to guess property names, + //we will only allow explicit property names + log.warn("Dynamic setProperty("+name+",value) has been disabled, please use explicit properties for the element you are trying to identify"); if(started) { // FIXME Hmm, is that correct when some DeltaManagers are direct configured inside Context? // Why we not support it for other elements, like sender, receiver or membership? // Must we restart element after change? - if (name.startsWith("manager")) { - String key = name.substring("manager".length() + 1); - String pvalue = value.toString(); - for (Iterator iter = managers.values().iterator(); iter.hasNext();) { - Manager manager = (Manager) iter.next(); - if(manager instanceof DeltaManager && ((ClusterManager) manager).isDefaultMode()) { - IntrospectionUtils.setProperty(manager, key, pvalue ); - } - } - } +// if (name.startsWith("manager")) { +// String key = name.substring("manager".length() + 1); +// String pvalue = value.toString(); +// for (Iterator iter = managers.values().iterator(); iter.hasNext();) { +// Manager manager = (Manager) iter.next(); +// if(manager instanceof DeltaManager && ((ClusterManager) manager).isDefaultMode()) { +// IntrospectionUtils.setProperty(manager, key, pvalue ); +// } +// } +// } } } @@ -504,7 +506,7 @@ manager.setDistributable(true); if (manager instanceof ClusterManager) { ClusterManager cmanager = (ClusterManager) manager ; - cmanager.setDefaultMode(true); + cmanager.setDefaultMode(false); cmanager.setName(getManagerName(((ClusterManager)manager).getName(),manager)); cmanager.setCluster(this); } @@ -548,7 +550,8 @@ ClusterManager cmanager = (ClusterManager) manager ; cmanager.setName(clusterName); cmanager.setCluster(this); - if(cmanager.isDefaultMode()) transferProperty("manager",cmanager); + //not needed anymore, we have an explicit Manager element + //if(cmanager.isDefaultMode()) transferProperty("manager",cmanager); } managers.put(clusterName, manager); // Notify our interested LifecycleListeners Modified: tomcat/tc6.0.x/trunk/webapps/docs/config/cluster.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/config/cluster.xml?view=diff&rev=451480&r1=451479&r2=451480 ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/config/cluster.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/config/cluster.xml Fri Sep 29 15:38:04 2006 @@ -15,32 +15,117 @@ <section name="Introduction"> - - - + <p> + The tomcat cluster implementation provides session replication, context attribute replication and + cluster wide WAR file deployment. + While the <code>Cluster</code> configuration is fairly complex, the default configuration will work + for most people out of the box. </p><p> + The Tomcat Cluster implementation is very extensible, and hence we have exposed a myriad of options, + making the configuration seem like a lot, but don't lose faith, instead you have a tremendous control + over what is going on.</p> +</section> +<section name="Context Attribute Replication"> + <p>To configure context attribute replication, simply do this by swapping out the context implementation + used for your application context. + <source><Context className="org.apache.catalina.ha.context.ReplicatedContext"/></source> + This context extends the Tomcat <code><a href="context.html">StandardContext</a></code> + so all the options from the <a href="context.html">base implementation</a> are valid. + </p> +</section> +<section name="Nested Components"> + <p><b><a href="cluster-manager.html">Manager</a>:</b> <br/> + The manager element identifies what kind of session manager is used in this cluster implementation. + This manager configuration is identical to the one you would use in a regular <code><a href="context.html#Nested%20xComponents"><Context></a></code> configuration. + <br/>The default value is the <code>org.apache.catalina.ha.session.DeltaManager</code> that is closely coupled with + the <code>SimpleTcpCluster</code> implementation. Other managers like the <code>org.apache.catalina.ha.session.BackupManager</code> + are/could be loosely coupled and don't rely on the <code>SimpleTcpCluster</code> for its data replication. + </p> + <p><b><a href="cluster-channel.html">Channel</a>:</b> <br/> + The Channel and its sub components are all part of the IO layer + for the cluster group, and is a module in it's own that we have nick named "Tribes" + <br/>Any configuring and tuning of the network layer will be done in the channel and its nested components. + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + + </p> + <p><b><a href="cluster-membership.html">Channel/Membership</a>:</b> <br/> + The Membership component is responsible for auto discovering new nodes in the cluster + and also to provide for notifications for any nodes that have not responded with a heartbeat. + The default implementation uses multicast.<br/> + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + </p> + <p><b><a href="cluster-sender.html">Channel/Sender</a>:</b> <br/> + The Sender component manages all outbound connections and data messages that are sent + over the network from one node to another. + This component allows messages to be sent in parallel. + The default implementation uses TCP client sockets.<br/> + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + </p> + <p><b><a href="cluster-sender.html#transport">Channel/Sender/Transport</a>:</b> <br/> + The Transport component is the bottom IO layer for the sender component. + The default implementation uses non-blocking TCP client sockets.<br/> + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + </p> + <p><b><a href="cluster-receiver.html">Channel/Receiver</a>:</b> <br/> + The receiver component listens for messages from other nodes. + Here you will configure the cluster thread pool, as it will dispatch incoming + messages to a thread pool for faster processing. + The default implementation uses non-blocking TCP server sockets.<br/> + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + </p> + <p><b><a href="cluster-interceptor.html">Channel/Interceptor</a>:</b> <br/> + The channel will send messages through an interceptor stack. Because of this, you have the ability to + customize the way messages are sent and received, and even how membership is handled.<br/> + You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a> + </p> + <p><b><a href="cluster-valve.html">Valve</a>:</b> <br/> + The Tomcat Cluster implementation uses <code>Tomcat <a href="valve.html">Valves</a></code> to + track when requests enter and exit the servlet container. It uses these valves to be able to make + intelligent decisions on when to replicate data, which is always at the end of a request. + </p> + <p><b><a href="cluster-deployer.html">Deployer</a>:</b> <br/> + The Deployer component is the Tomcat Farm Deployer. It allows you to deploy and undeploy applications + cluster wide. + </p> + <p><b><a href="cluster-listener.html">ClusterListener</a>:</b> <br/> + ClusterListener's are used to track messages sent and received using the <code>SimpleTcpCluster</code>. + If you wish to track messages, you can add a listener here, or you can add a valve to the channel object. + </p> </section> +<section name="Deprecated configuration options"> + <p> + <b>Deprecated settings:</b> In the previous version of Tomcat you were able to control session + manager settings using manager.<property>=value. + This has been discontinued, as the way it was written interfers with + the ability to support multiple different manager classes under one cluster implementation, + as the same properties might have the different effect on different managers. + </p> +</section> <section name="Attributes"> - <subsection name="Common Attributes"> - <attributes> - <attribute name="className" required="true"> - + <p>The main cluster class, currently only one is available, + <code>org.apache.catalina.ha.tcp.SimpleTcpCluster</code> + </p> + </attribute> + <attribute name="doClusterLog" required="false"> + <p><b>Deprecated since 6.0.0</b></p> + <p>Possible values are <code>true</code> or <code>false</code><br/> + Value is inherited from Tomcat 5.5 and has no official meaning. + to configure logging, use the standard tomcat logging configuration. + </p> + </attribute> + <attribute name="clusterLogName" required="false"> + <p><b>Deprecated since 6.0.0</b></p> + <p> + Value is inherited from Tomcat 5.5 and has no official meaning. + to configure logging, use the standard tomcat logging configuration. + </p> </attribute> - - </attributes> - - </subsection> - - </section> - - </body> - </document> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]