Added: tomcat/container/tc5.5.x/modules/ha/etc/cluster-server.xml URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/etc/cluster-server.xml?rev=380936&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/etc/cluster-server.xml (added) +++ tomcat/container/tc5.5.x/modules/ha/etc/cluster-server.xml Sat Feb 25 07:25:56 2006 @@ -0,0 +1,386 @@ +<!-- Example Server Configuration File --> +<!-- Note that component elements are nested corresponding to their + parent-child relationships with each other --> + +<!-- A "Server" is a singleton element that represents the entire JVM, + which may contain one or more "Service" instances. The Server + listens for a shutdown command on the indicated port. + + Note: A "Server" is not itself a "Container", so you may not + define subcomponents such as "Valves" or "Loggers" at this level. + --> + +<Server port="7005" shutdown="SHUTDOWN"> + + <!-- Comment these entries out to disable JMX MBeans support used for the + administration web application --> + <Listener className="org.apache.catalina.core.AprLifecycleListener" /> + <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> + <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> + <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> + + <!-- Global JNDI resources --> + <GlobalNamingResources> + + <!-- Test entry for demonstration purposes --> + <Environment name="simpleValue" type="java.lang.Integer" value="30"/> + + <!-- Editable user database that can also be used by + UserDatabaseRealm to authenticate users --> + <Resource name="UserDatabase" auth="Container" + type="org.apache.catalina.UserDatabase" + description="User database that can be updated and saved" + factory="org.apache.catalina.users.MemoryUserDatabaseFactory" + pathname="conf/tomcat-users.xml" /> + + </GlobalNamingResources> + + <!-- A "Service" is a collection of one or more "Connectors" that share + a single "Container" (and therefore the web applications visible + within that Container). Normally, that Container is an "Engine", + but this is not required. + + Note: A "Service" is not itself a "Container", so you may not + define subcomponents such as "Valves" or "Loggers" at this level. + --> + + <!-- Define the Tomcat Stand-Alone Service --> + <Service name="Catalina"> + + <!-- A "Connector" represents an endpoint by which requests are received + and responses are returned. Each Connector passes requests on to the + associated "Container" (normally an Engine) for processing. + + By default, a non-SSL HTTP/1.1 Connector is established on port 8080. + You can also enable an SSL HTTP/1.1 Connector on port 8443 by + following the instructions below and uncommenting the second Connector + entry. SSL support requires the following steps (see the SSL Config + HOWTO in the Tomcat 5 documentation bundle for more detailed + instructions): + * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or + later, and put the JAR files into "$JAVA_HOME/jre/lib/ext". + * Execute: + %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows) + $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix) + with a password value of "changeit" for both the certificate and + the keystore itself. + + By default, DNS lookups are enabled when a web application calls + request.getRemoteHost(). This can have an adverse impact on + performance, so you can disable it by setting the + "enableLookups" attribute to "false". When DNS lookups are disabled, + request.getRemoteHost() will return the String version of the + IP address of the remote client. + --> + + <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> + <Connector port="7080" maxHttpHeaderSize="8192" + maxThreads="150" minSpareThreads="25" maxSpareThreads="75" + enableLookups="false" redirectPort="8443" acceptCount="100" + connectionTimeout="20000" disableUploadTimeout="true" /> + <!-- Note : To disable connection timeouts, set connectionTimeout value + to 0 --> + + <!-- Note : To use gzip compression you could set the following properties : + + compression="on" + compressionMinSize="2048" + noCompressionUserAgents="gozilla, traviata" + compressableMimeType="text/html,text/xml" + --> + + <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> + <!-- + <Connector port="8443" maxHttpHeaderSize="8192" + maxThreads="150" minSpareThreads="25" maxSpareThreads="75" + enableLookups="false" disableUploadTimeout="true" + acceptCount="100" scheme="https" secure="true" + clientAuth="false" sslProtocol="TLS" /> + --> + + <!-- Define an AJP 1.3 Connector on port 8009 --> + <Connector port="7009" + enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> + + <!-- Define a Proxied HTTP/1.1 Connector on port 8082 --> + <!-- See proxy documentation for more information about using this. --> + <!-- + <Connector port="7082" + maxThreads="150" minSpareThreads="25" maxSpareThreads="75" + enableLookups="false" acceptCount="100" connectionTimeout="20000" + proxyPort="80" disableUploadTimeout="true" /> + --> + + <!-- An Engine represents the entry point (within Catalina) that processes + every request. The Engine implementation for Tomcat stand alone + analyzes the HTTP headers included with the request, and passes them + on to the appropriate Host (virtual host). --> + + <!-- You should set jvmRoute to support load-balancing via AJP ie : + <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"> + --> + + <!-- Define the top level container in our container hierarchy --> + <Engine name="Catalina" defaultHost="localhost"> + + <!-- The request dumper valve dumps useful debugging information about + the request headers and cookies that were received, and the response + headers and cookies that were sent, for all requests received by + this instance of Tomcat. If you care only about requests to a + particular virtual host, or a particular application, nest this + element inside the corresponding <Host> or <Context> entry instead. + + For a similar mechanism that is portable to all Servlet 2.4 + containers, check out the "RequestDumperFilter" Filter in the + example application (the source for this filter may be found in + "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters"). + + Request dumping is disabled by default. Uncomment the following + element to enable it. --> + <!-- + <Valve className="org.apache.catalina.valves.RequestDumperValve"/> + --> + + <!-- Because this Realm is here, an instance will be shared globally --> + + <!-- This Realm uses the UserDatabase configured in the global JNDI + resources under the key "UserDatabase". Any edits + that are performed against this UserDatabase are immediately + available for use by the Realm. --> + <Realm className="org.apache.catalina.realm.UserDatabaseRealm" + resourceName="UserDatabase"/> + + <!-- Comment out the old realm but leave here for now in case we + need to go back quickly --> + <!-- + <Realm className="org.apache.catalina.realm.MemoryRealm" /> + --> + + <!-- Replace the above Realm with one of the following to get a Realm + stored in a database and accessed via JDBC --> + + <!-- + <Realm className="org.apache.catalina.realm.JDBCRealm" + driverName="org.gjt.mm.mysql.Driver" + connectionURL="jdbc:mysql://localhost/authority" + connectionName="test" connectionPassword="test" + userTable="users" userNameCol="user_name" userCredCol="user_pass" + userRoleTable="user_roles" roleNameCol="role_name" /> + --> + + <!-- + <Realm className="org.apache.catalina.realm.JDBCRealm" + driverName="oracle.jdbc.driver.OracleDriver" + connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" + connectionName="scott" connectionPassword="tiger" + userTable="users" userNameCol="user_name" userCredCol="user_pass" + userRoleTable="user_roles" roleNameCol="role_name" /> + --> + + <!-- + <Realm className="org.apache.catalina.realm.JDBCRealm" + driverName="sun.jdbc.odbc.JdbcOdbcDriver" + connectionURL="jdbc:odbc:CATALINA" + userTable="users" userNameCol="user_name" userCredCol="user_pass" + userRoleTable="user_roles" roleNameCol="role_name" /> + --> + + <!-- Define the default virtual host + Note: XML Schema validation will not work with Xerces 2.2. + --> + <Host name="localhost" appBase="webapps" + unpackWARs="true" autoDeploy="true" + xmlValidation="false" xmlNamespaceAware="false"> + + <!-- Defines a cluster for this node, + By defining this element, means that every manager will be changed. + So when running a cluster, only make sure that you have webapps in there + that need to be clustered and remove the other ones. + A cluster has the following parameters: + + className = the fully qualified name of the cluster class + + clusterName = a descriptive name for your cluster, can be anything + + mcastAddr = the multicast address, has to be the same for all the nodes + + mcastPort = the multicast port, has to be the same for all the nodes + + mcastBindAddr = bind the multicast socket to a specific address + + mcastTTL = the multicast TTL if you want to limit your broadcast + + mcastSoTimeout = the multicast readtimeout + + mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat + + mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received + + tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes + + tcpListenAddress = the listen address (bind address) for TCP cluster request on this host, + in case of multiple ethernet cards. + auto means that address becomes + InetAddress.getLocalHost().getHostAddress() + + tcpListenPort = the tcp listen port + + tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS + has a wakup bug in java.nio. Set to 0 for no timeout + + printToScreen = true means that managers will also print to std.out + + expireSessionsOnShutdown = true means that + + useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called. + false means to replicate the session after each request. + false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager) + <% + HashMap map = (HashMap)session.getAttribute("map"); + map.put("key","value"); + %> + replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'. + * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication. + * Synchronous means that the thread that executes the request, is also the + thread the replicates the data to the other nodes, and will not return until all + nodes have received the information. + * Asynchronous means that there is a specific 'sender' thread for each cluster node, + so the request thread will queue the replication request into a "smart" queue, + and then return to the client. + The "smart" queue is a queue where when a session is added to the queue, and the same session + already exists in the queue from a previous request, that session will be replaced + in the queue instead of replicating two requests. This almost never happens, unless there is a + large network delay. + --> + <!-- + When configuring for clustering, you also add in a valve to catch all the requests + coming in, at the end of the request, the session may or may not be replicated. + A session is replicated if and only if all the conditions are met: + 1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND + 2. a session exists (has been created) + 3. the request is not trapped by the "filter" attribute + + The filter attribute is to filter out requests that could not modify the session, + hence we don't replicate the session after the end of this request. + The filter is negative, ie, anything you put in the filter, you mean to filter out, + ie, no replication will be done on requests that match one of the filters. + The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to. + + filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI + ending with .gif and .js are intercepted. + + The deployer element can be used to deploy apps cluster wide. + Currently the deployment only deploys/undeploys to working members in the cluster + so no WARs are copied upons startup of a broken node. + The deployer watches a directory (watchDir) for WAR files when watchEnabled="true" + When a new war file is added the war gets deployed to the local instance, + and then deployed to the other instances in the cluster. + When a war file is deleted from the watchDir the war is undeployed locally + and cluster wide + --> + + <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" + managerClassName="org.apache.catalina.cluster.session.DeltaManager" + expireSessionsOnShutdown="false" + useDirtyFlag="true" + notifyListenersOnReplication="true"> + + <Channel className="org.apache.catalina.groups.group.GroupChannel"> + <Membership + className="org.apache.catalina.groups.mcast.McastService" + mcastAddr="228.0.0.4" + mcastPort="45564" + mcastFrequency="500" + mcastDropTime="3000"/> + + <Receiver + className="org.apache.catalina.groups.tcp.ReplicationListener" + tcpListenAddress="auto" + tcpListenPort="4002" + tcpSelectorTimeout="100" + tcpThreadCount="6"/> + + <Sender + className="org.apache.catalina.groups.tcp.ReplicationTransmitter" + replicationMode="pooled" + ackTimeout="150000" + waitForAck="true" + compress="true"/> + + <Interceptor className="org.apache.catalina.groups.group.interceptors.GzipInterceptor"/> + </Channel> + + <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" + filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> + + <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" + tempDir="/tmp/war-temp/" + deployDir="/tmp/war-deploy/" + watchDir="/tmp/war-listen/" + watchEnabled="false"/> + + <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/> + </Cluster> + + + + + <!-- Normally, users must authenticate themselves to each web app + individually. Uncomment the following entry if you would like + a user to be authenticated the first time they encounter a + resource protected by a security constraint, and then have that + user identity maintained across *all* web applications contained + in this virtual host. --> + <!-- + <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> + --> + + <!-- Access log processes all requests for this virtual host. By + default, log files are created in the "logs" directory relative to + $CATALINA_HOME. If you wish, you can specify a different + directory with the "directory" attribute. Specify either a relative + (to $CATALINA_HOME) or absolute path to the desired directory. + --> + <!-- + <Valve className="org.apache.catalina.valves.AccessLogValve" + directory="logs" prefix="localhost_access_log." suffix=".txt" + pattern="common" resolveHosts="false"/> + --> + + <!-- Access log processes all requests for this virtual host. By + default, log files are created in the "logs" directory relative to + $CATALINA_HOME. If you wish, you can specify a different + directory with the "directory" attribute. Specify either a relative + (to $CATALINA_HOME) or absolute path to the desired directory. + This access log implementation is optimized for maximum performance, + but is hardcoded to support only the "common" and "combined" patterns. + --> + <!-- + <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" + directory="logs" prefix="localhost_access_log." suffix=".txt" + pattern="common" resolveHosts="false"/> + --> + <!-- Access log processes all requests for this virtual host. By + default, log files are created in the "logs" directory relative to + $CATALINA_HOME. If you wish, you can specify a different + directory with the "directory" attribute. Specify either a relative + (to $CATALINA_HOME) or absolute path to the desired directory. + This access log implementation is optimized for maximum performance, + but is hardcoded to support only the "common" and "combined" patterns. + + This valve use NIO direct Byte Buffer to asynchornously store the + log. + --> + <!-- + <Valve className="org.apache.catalina.valves.ByteBufferAccessLogValve" + directory="logs" prefix="localhost_access_log." suffix=".txt" + pattern="common" resolveHosts="false"/> + --> + + </Host> + + </Engine> + + </Service> + +</Server>
Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/CatalinaCluster.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/CatalinaCluster.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/CatalinaCluster.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/CatalinaCluster.java Sat Feb 25 07:25:56 2006 @@ -23,8 +23,10 @@ import org.apache.catalina.Manager; import org.apache.catalina.Valve; import org.apache.commons.logging.Log; -import org.apache.catalina.cluster.io.ReplicationStream; +import org.apache.catalina.groups.io.ReplicationStream; import java.io.IOException; +import org.apache.catalina.groups.Channel; +import org.apache.catalina.groups.Member; @@ -124,5 +126,6 @@ public Valve[] getValves(); public void setChannel(Channel channel); + public Channel getChannel(); } Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterDeployer.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterDeployer.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterDeployer.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterDeployer.java Sat Feb 25 07:25:56 2006 @@ -26,6 +26,7 @@ import org.apache.catalina.LifecycleException; import java.io.IOException; import java.net.URL; +import org.apache.catalina.groups.MessageListener; public interface ClusterDeployer extends MessageListener { /** Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterListener.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterListener.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterListener.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterListener.java Sat Feb 25 07:25:56 2006 @@ -20,6 +20,8 @@ import org.apache.catalina.util.StringManager; +import org.apache.catalina.groups.MessageListener; +import org.apache.catalina.groups.ChannelMessage; /** Added: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessage.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessage.java?rev=380936&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessage.java (added) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessage.java Sat Feb 25 07:25:56 2006 @@ -0,0 +1,33 @@ +/* + * Copyright 1999,2005 The Apache Software Foundation. + * + * Licensed 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. + */ +package org.apache.catalina.cluster; + +import java.io.Serializable; +import org.apache.catalina.groups.Member; + + +/** + * @author Filip Hanik + * + */ +public interface ClusterMessage extends Serializable { + public Member getAddress(); + public void setAddress(Member member); + public String getUniqueId(); + public void setUniqueId(String id); + public long getTimestamp(); + public void setTimestamp(long timestamp); +} Added: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessageBase.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessageBase.java?rev=380936&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessageBase.java (added) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterMessageBase.java Sat Feb 25 07:25:56 2006 @@ -0,0 +1,61 @@ +package org.apache.catalina.cluster; + +import org.apache.catalina.groups.Member; + + +/** + * <p>Title: </p> + * + * <p>Description: </p> + * + * <p>Copyright: Copyright (c) 2005</p> + * + * <p>Company: </p> + * + * @author not attributable + * @version 1.0 + */ +public class ClusterMessageBase implements ClusterMessage { + + protected transient Member address; + private String uniqueId; + private long timestamp; + public ClusterMessageBase() { + } + + /** + * getAddress + * + * @return Member + * @todo Implement this org.apache.catalina.cluster.ClusterMessage method + */ + public Member getAddress() { + return address; + } + + public String getUniqueId() { + return uniqueId; + } + + public long getTimestamp() { + return timestamp; + } + + /** + * setAddress + * + * @param member Member + * @todo Implement this org.apache.catalina.cluster.ClusterMessage method + */ + public void setAddress(Member member) { + this.address = member; + } + + public void setUniqueId(String uniqueId) { + this.uniqueId = uniqueId; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } +} \ No newline at end of file Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterRuleSet.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterRuleSet.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterRuleSet.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/ClusterRuleSet.java Sat Feb 25 07:25:56 2006 @@ -92,7 +92,7 @@ digester.addSetProperties(prefix + "Channel"); digester.addSetNext(prefix + "Channel", "setChannel", - "org.apache.catalina.cluster.Channel"); + "org.apache.catalina.groups.Channel"); String channelPrefix = prefix + "Channel/"; @@ -103,23 +103,23 @@ digester.addSetProperties(channelPrefix + "Membership"); digester.addSetNext(channelPrefix + "Membership", "setMembershipService", - "org.apache.catalina.cluster.MembershipService"); + "org.apache.catalina.groups.MembershipService"); digester.addObjectCreate(channelPrefix + "Sender", null, // MUST be specified in the element "className"); digester.addSetProperties(channelPrefix + "Sender"); digester.addSetNext(channelPrefix + "Sender", - "setClusterSender", - "org.apache.catalina.cluster.ChannelSender"); + "setChannelSender", + "org.apache.catalina.groups.ChannelSender"); digester.addObjectCreate(channelPrefix + "Receiver", null, // MUST be specified in the element "className"); digester.addSetProperties(channelPrefix + "Receiver"); digester.addSetNext(channelPrefix + "Receiver", - "setClusterReceiver", - "org.apache.catalina.cluster.ChannelReceiver"); + "setChannelReceiver", + "org.apache.catalina.groups.ChannelReceiver"); digester.addObjectCreate(channelPrefix + "Interceptor", null, // MUST be specified in the element @@ -127,7 +127,7 @@ digester.addSetProperties(channelPrefix + "Interceptor"); digester.addSetNext(channelPrefix + "Interceptor", "addInterceptor", - "org.apache.catalina.cluster.ChannelInterceptor"); + "org.apache.catalina.groups.ChannelInterceptor"); } digester.addObjectCreate(prefix + "Valve", Added: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/Constants.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/Constants.java?rev=380936&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/Constants.java (added) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/Constants.java Sat Feb 25 07:25:56 2006 @@ -0,0 +1,30 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed 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. + */ + + +package org.apache.catalina.cluster; + +/** + * Manifest constants for the <code>org.apache.catalina.cluster</code> + * package. + * + * @author Bip Thelin + * @version $Revision: 302726 $, $Date: 2004-02-27 08:59:07 -0600 (Fri, 27 Feb 2004) $ + */ + +public final class Constants { + public static final String Package = "org.apache.catalina.cluster"; +} Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FarmWarDeployer.java Sat Feb 25 07:25:56 2006 @@ -32,7 +32,7 @@ import org.apache.catalina.cluster.CatalinaCluster; import org.apache.catalina.cluster.ClusterDeployer; import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; import org.apache.commons.modeler.Registry; import org.apache.catalina.cluster.ClusterListener; @@ -384,9 +384,7 @@ if (log.isInfoEnabled()) log.info("Cluster wide remove of web app " + contextPath); // send to other nodes - Member[] members = getCluster().getMembers(); - Member localMember = getCluster().getLocalMember(); - UndeployMessage msg = new UndeployMessage(localMember, System + UndeployMessage msg = new UndeployMessage(System .currentTimeMillis(), "Undeploy:" + contextPath + ":" + System.currentTimeMillis(), contextPath, undeploy); if (log.isDebugEnabled()) Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FileMessage.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FileMessage.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FileMessage.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/FileMessage.java Sat Feb 25 07:25:56 2006 @@ -19,7 +19,7 @@ import java.io.Serializable; import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; import org.apache.catalina.cluster.ClusterMessageBase; /** @@ -33,7 +33,6 @@ private int messageNumber; private byte[] data; private int dataLength; - private org.apache.catalina.cluster.Member address; private long totalLength; private long totalNrOfMsgs; @@ -89,12 +88,7 @@ public void setTotalLength(long totalLength) { this.totalLength = totalLength; } - public org.apache.catalina.cluster.Member getAddress() { - return address; - } - public void setAddress(org.apache.catalina.cluster.Member address) { - this.address = address; - } + public String getUniqueId() { StringBuffer result = new StringBuffer(getFileName()); result.append("#-#"); Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/UndeployMessage.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/UndeployMessage.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/UndeployMessage.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/deploy/UndeployMessage.java Sat Feb 25 07:25:56 2006 @@ -19,21 +19,19 @@ import java.io.Serializable; import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; -public class UndeployMessage implements ClusterMessage,Serializable { - private Member address; +import org.apache.catalina.cluster.ClusterMessageBase; + +public class UndeployMessage extends ClusterMessageBase implements ClusterMessage,Serializable { private long timestamp; private String uniqueId; private String contextPath; private boolean undeploy; public UndeployMessage() {} //for serialization - public UndeployMessage(Member address, - long timestamp, + public UndeployMessage(long timestamp, String uniqueId, String contextPath, boolean undeploy) { - this.address = address; this.timestamp= timestamp; this.undeploy = undeploy; this.uniqueId = uniqueId; @@ -41,13 +39,6 @@ this.contextPath = contextPath; } - public Member getAddress() { - return address; - } - - public void setAddress(Member address) { - this.address = address; - } public long getTimestamp() { return timestamp; Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/ClusterManagerBase.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/ClusterManagerBase.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/ClusterManagerBase.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/ClusterManagerBase.java Sat Feb 25 07:25:56 2006 @@ -23,7 +23,7 @@ import org.apache.catalina.Loader; import java.io.ByteArrayInputStream; import java.io.IOException; -import org.apache.catalina.cluster.io.ReplicationStream; +import org.apache.catalina.groups.io.ReplicationStream; /** * Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/DeltaManager.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/DeltaManager.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/DeltaManager.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/DeltaManager.java Sat Feb 25 07:25:56 2006 @@ -43,14 +43,13 @@ import org.apache.catalina.cluster.CatalinaCluster; import org.apache.catalina.cluster.ClusterManager; import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; import org.apache.catalina.session.ManagerBase; import org.apache.catalina.cluster.tcp.ReplicationValve; -import org.apache.catalina.util.CustomObjectInputStream; import org.apache.catalina.util.LifecycleSupport; import org.apache.catalina.util.StringManager; import org.apache.catalina.core.StandardContext; -import org.apache.catalina.cluster.io.ReplicationStream; +import org.apache.catalina.groups.io.ReplicationStream; /** * The DeltaManager manages replicated sessions by only replicating the deltas Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionIDMessage.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionIDMessage.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionIDMessage.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionIDMessage.java Sat Feb 25 07:25:56 2006 @@ -36,14 +36,6 @@ private String host ; private String contextPath; - public org.apache.catalina.cluster.Member getAddress() { - return address; - } - - public void setAddress(org.apache.catalina.cluster.Member address) { - this.address = address; - } - public String getUniqueId() { StringBuffer result = new StringBuffer(getOrignalSessionID()); result.append("#-#"); Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionMessageImpl.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionMessageImpl.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionMessageImpl.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SessionMessageImpl.java Sat Feb 25 07:25:56 2006 @@ -17,7 +17,7 @@ import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; import org.apache.catalina.cluster.ClusterMessageBase; /** Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java Sat Feb 25 07:25:56 2006 @@ -22,10 +22,10 @@ import org.apache.catalina.cluster.CatalinaCluster; import org.apache.catalina.cluster.ClusterManager; import org.apache.catalina.cluster.ClusterMessage; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; import org.apache.catalina.realm.GenericPrincipal; import org.apache.catalina.session.StandardManager; -import org.apache.catalina.cluster.io.ReplicationStream; +import org.apache.catalina.groups.io.ReplicationStream; import java.io.ByteArrayInputStream; import org.apache.catalina.Loader; Added: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/Constants.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/Constants.java?rev=380936&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/Constants.java (added) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/Constants.java Sat Feb 25 07:25:56 2006 @@ -0,0 +1,32 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed 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. + */ + + +package org.apache.catalina.cluster.tcp; + +/** + * Manifest constants for the <code>org.apache.catalina.cluster.tcp</code> + * package. + * + * @author Peter Rossbach + * @version $Revision: 303753 $ $Date: 2005-03-14 15:24:30 -0600 (Mon, 14 Mar 2005) $ + */ + +public class Constants { + + public static final String Package = "org.apache.catalina.cluster.tcp"; + +} Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SendMessageData.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SendMessageData.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SendMessageData.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SendMessageData.java Sat Feb 25 07:25:56 2006 @@ -16,7 +16,7 @@ package org.apache.catalina.cluster.tcp; -import org.apache.catalina.cluster.Member; +import org.apache.catalina.groups.Member; /** * @author Peter Rossbach Modified: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java?rev=380936&r1=380935&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/tcp/SimpleTcpCluster.java Sat Feb 25 07:25:56 2006 @@ -37,16 +37,16 @@ import org.apache.catalina.Manager; import org.apache.catalina.Valve; import org.apache.catalina.cluster.CatalinaCluster; -import org.apache.catalina.cluster.Channel; -import org.apache.catalina.cluster.ChannelListener; +import org.apache.catalina.groups.Channel; +import org.apache.catalina.groups.ChannelListener; import org.apache.catalina.cluster.ClusterListener; import org.apache.catalina.cluster.ClusterManager; import org.apache.catalina.cluster.ClusterMessage; import org.apache.catalina.cluster.ClusterValve; -import org.apache.catalina.cluster.Member; -import org.apache.catalina.cluster.MembershipListener; -import org.apache.catalina.cluster.group.GroupChannel; -import org.apache.catalina.cluster.group.interceptors.GzipInterceptor; +import org.apache.catalina.groups.Member; +import org.apache.catalina.groups.MembershipListener; +import org.apache.catalina.groups.group.GroupChannel; + import org.apache.catalina.cluster.session.DeltaManager; import org.apache.catalina.cluster.util.IDynamicProperty; import org.apache.catalina.util.LifecycleSupport; Copied: tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/util/IDynamicProperty.java (from r380925, tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/groups/util/IDynamicProperty.java) URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/util/IDynamicProperty.java?p2=tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/util/IDynamicProperty.java&p1=tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/groups/util/IDynamicProperty.java&r1=380925&r2=380936&rev=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/groups/util/IDynamicProperty.java (original) +++ tomcat/container/tc5.5.x/modules/ha/src/share/org/apache/catalina/cluster/util/IDynamicProperty.java Sat Feb 25 07:25:56 2006 @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.apache.catalina.groups.util; +package org.apache.catalina.cluster.util; import java.util.Iterator; Modified: tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/CatalinaClusterSF.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/CatalinaClusterSF.java?rev=380936&r1=379923&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/CatalinaClusterSF.java (original) +++ tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/CatalinaClusterSF.java Sat Feb 25 07:25:56 2006 @@ -22,13 +22,16 @@ import org.apache.catalina.Valve; import org.apache.catalina.cluster.CatalinaCluster; import org.apache.catalina.cluster.ClusterDeployer; -import org.apache.catalina.cluster.ClusterReceiver; -import org.apache.catalina.cluster.ClusterSender; -import org.apache.catalina.cluster.MembershipService; -import org.apache.catalina.cluster.MessageListener; +import org.apache.catalina.groups.ChannelReceiver; +import org.apache.catalina.groups.ChannelSender; +import org.apache.catalina.groups.MembershipService; +import org.apache.catalina.groups.MessageListener; import org.apache.catalina.cluster.tcp.SimpleTcpCluster; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.catalina.groups.ManagedChannel; +import org.apache.catalina.groups.ChannelInterceptor; +import java.util.Iterator; /** * Generate Cluster Element with Membership,Sender,Receiver,Deployer and @@ -57,21 +60,32 @@ StoreDescription parentDesc) throws Exception { if (aCluster instanceof CatalinaCluster) { CatalinaCluster cluster = (CatalinaCluster) aCluster; + + //store nested <Group> element + ManagedChannel channel = (ManagedChannel)cluster.getChannel(); + if (channel != null ) { + storeElement(aWriter, indent, channel); - // Store nested <Membership> element - MembershipService service = cluster.getMembershipService(); - if (service != null) { - storeElement(aWriter, indent, service); - } - // Store nested <Sender> element - ClusterSender sender = cluster.getClusterSender(); - if (sender != null) { - storeElement(aWriter, indent, sender); - } - // Store nested <Receiver> element - ClusterReceiver receiver = cluster.getClusterReceiver(); - if (receiver != null) { - storeElement(aWriter, indent, receiver); + // Store nested <Membership> element + MembershipService service = channel.getMembershipService(); + if (service != null) { + storeElement(aWriter, indent, service); + } + // Store nested <Sender> element + ChannelSender sender = channel.getChannelSender(); + if (sender != null) { + storeElement(aWriter, indent, sender); + } + // Store nested <Receiver> element + ChannelReceiver receiver = channel.getChannelReceiver(); + if (receiver != null) { + storeElement(aWriter, indent, receiver); + } + + Iterator inti = channel.getInterceptors(); + while ( inti.hasNext() ) { + storeElement(aWriter,indent,inti.next()); + } } // Store nested <Deployer> element ClusterDeployer deployer = cluster.getClusterDeployer(); Modified: tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/StoreRegistry.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/StoreRegistry.java?rev=380936&r1=379923&r2=380936&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/StoreRegistry.java (original) +++ tomcat/container/tc5.5.x/modules/storeconfig-ha/src/share/org/apache/catalina/storeconfig/StoreRegistry.java Sat Feb 25 07:25:56 2006 @@ -27,10 +27,10 @@ import org.apache.catalina.Valve; import org.apache.catalina.cluster.CatalinaCluster; import org.apache.catalina.cluster.ClusterDeployer; -import org.apache.catalina.cluster.ClusterReceiver; -import org.apache.catalina.cluster.ClusterSender; -import org.apache.catalina.cluster.MembershipService; -import org.apache.catalina.cluster.MessageListener; +import org.apache.catalina.groups.ChannelReceiver; +import org.apache.catalina.groups.ChannelSender; +import org.apache.catalina.groups.MembershipService; +import org.apache.catalina.groups.MessageListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -53,7 +53,7 @@ // Access Information private static Class interfaces[] = { CatalinaCluster.class, - ClusterSender.class, ClusterReceiver.class, + ChannelSender.class, ChannelReceiver.class, MembershipService.class, ClusterDeployer.class, Realm.class, Manager.class, DirContext.class, LifecycleListener.class, Valve.class, MessageListener.class }; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]