You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by az...@apache.org on 2008/05/17 07:24:58 UTC
svn commit: r657292 - in /webservices/axis2/trunk/java/modules:
clustering/src/org/apache/axis2/clustering/tribes/
clustering/test/org/apache/axis2/clustering/
clustering/test/org/apache/axis2/clustering/configuration/
kernel/src/org/apache/axis2/clust...
Author: azeez
Date: Fri May 16 22:24:58 2008
New Revision: 657292
URL: http://svn.apache.org/viewvc?rev=657292&view=rev
Log:
1. If a static member is also the local member, do not add it to the member list
2. Test for excluding all properties from replication
3. Code improvement/Added few javadocs
Modified:
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java
webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ClusterManagerTestCase.java
webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ContextReplicationTest.java
webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/configuration/ConfigurationManagerTestCase.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java Fri May 16 22:24:58 2008
@@ -20,16 +20,24 @@
package org.apache.axis2.clustering.tribes;
import org.apache.catalina.tribes.Member;
+import org.apache.catalina.tribes.membership.MemberImpl;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
- * Responsible for managing the membership
+ * Responsible for managing the membership. Handles membership changes.
*/
public class MembershipManager {
- private final List members = new ArrayList();
+ /**
+ * List of members in the cluster
+ */
+ private final List<Member> members = new ArrayList<Member>();
+
+ /**
+ * The member representing this node
+ */
private Member localMember;
public Member getLocalMember() {
@@ -40,26 +48,47 @@
this.localMember = localMember;
}
+ /**
+ * A new member is added
+ *
+ * @param member The new member that joined the cluster
+ */
public synchronized void memberAdded(Member member) {
- members.add(member);
+ if (!members.contains(member)) {
+ members.add(member);
+ }
}
+ /**
+ * A member disappeared
+ *
+ * @param member The member that left the cluster
+ */
public synchronized void memberDisappeared(Member member) {
members.remove(member);
}
+ /**
+ * Get the list of current members
+ *
+ * @return list of current members
+ */
public synchronized Member[] getMembers() {
- return (Member[]) members.toArray(new Member[members.size()]);
+ return members.toArray(new Member[members.size()]);
}
+ /**
+ * Get the member that has been alive for the longest time
+ *
+ * @return The member that has been alive for the longest time
+ */
public synchronized Member getLongestLivingMember() {
Member longestLivingMember = null;
if (members.size() > 0) {
- Member member0 = (Member) members.get(0);
+ Member member0 = members.get(0);
long longestAliveTime = member0.getMemberAliveTime();
longestLivingMember = member0;
- for (int i = 0; i < members.size(); i++) {
- Member member = (Member) members.get(i);
+ for (Member member : members) {
if (longestAliveTime < member.getMemberAliveTime()) {
longestAliveTime = member.getMemberAliveTime();
longestLivingMember = member;
@@ -69,15 +98,44 @@
return longestLivingMember;
}
+ /**
+ * Get a random member from the list of current members
+ *
+ * @return A random member from the list of current members
+ */
public synchronized Member getRandomMember() {
if (members.size() == 0) {
return null;
}
int memberIndex = new Random().nextInt(members.size());
- return (Member) members.get(memberIndex);
+ return members.get(memberIndex);
}
- public boolean hasMembers(){
+ /**
+ * Check whether there are any members
+ *
+ * @return true if there are other members, false otherwise
+ */
+ public boolean hasMembers() {
return members.size() > 0;
}
+
+ /**
+ * Get a member
+ *
+ * @param member The member to be found
+ * @return The member, if it is found
+ */
+ public Member getMember(Member member) {
+ if (hasMembers()) {
+ MemberImpl result = null;
+ for (int i = 0; i < this.members.size() && result == null; i++) {
+ if (members.get(i).equals(member)) {
+ result = (MemberImpl) members.get(i);
+ }
+ }
+ return result;
+ }
+ return null;
+ }
}
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java Fri May 16 22:24:58 2008
@@ -60,12 +60,19 @@
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketAddress;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Properties;
+/**
+ * The main ClusterManager class for the Tribes based clustering implementation
+ */
public class TribesClusterManager implements ClusterManager {
public static final int MSG_ORDER_OPTION = 512;
private static final Log log = LogFactory.getLog(TribesClusterManager.class);
@@ -73,7 +80,7 @@
private DefaultConfigurationManager configurationManager;
private DefaultContextManager contextManager;
- private HashMap parameters;
+ private HashMap<String, Parameter> parameters;
private ManagedChannel channel;
private RpcChannel rpcChannel;
private ConfigurationContext configurationContext;
@@ -85,7 +92,7 @@
private org.apache.axis2.clustering.Member[] members;
public TribesClusterManager() {
- parameters = new HashMap();
+ parameters = new HashMap<String, Parameter>();
controlCmdProcessor = new ControlCommandProcessor(configurationContext);
}
@@ -105,12 +112,16 @@
return configurationManager;
}
+ /**
+ * Initialize the cluster.
+ *
+ * @throws ClusteringFault If initialization fails
+ */
public void init() throws ClusteringFault {
AxisConfiguration axisConfig = configurationContext.getAxisConfiguration();
- for (Iterator iterator = axisConfig.getInFlowPhases().iterator();
- iterator.hasNext();) {
- Phase phase = (Phase) iterator.next();
+ for (Object o : axisConfig.getInFlowPhases()) {
+ Phase phase = (Phase) o;
if (phase instanceof DispatchPhase) {
RequestBlockingHandler requestBlockingHandler = new RequestBlockingHandler();
if (!phase.getHandlers().contains(requestBlockingHandler)) {
@@ -122,13 +133,15 @@
handlerDesc.setName(ClusteringConstants.REQUEST_BLOCKING_HANDLER);
handlerDesc.setRules(rule);
phase.addHandler(requestBlockingHandler);
+
+ log.info("Added " + ClusteringConstants.REQUEST_BLOCKING_HANDLER +
+ " between SOAPMessageBodyBasedDispatcher & InstanceDispatcher to InFlow");
+ break;
}
- break;
}
}
- for (Iterator iterator = axisConfig.getInFaultFlowPhases().iterator();
- iterator.hasNext();) {
- Phase phase = (Phase) iterator.next();
+ for (Object o : axisConfig.getInFaultFlowPhases()) {
+ Phase phase = (Phase) o;
if (phase instanceof DispatchPhase) {
RequestBlockingHandler requestBlockingHandler = new RequestBlockingHandler();
if (!phase.getHandlers().contains(requestBlockingHandler)) {
@@ -140,6 +153,9 @@
handlerDesc.setName(ClusteringConstants.REQUEST_BLOCKING_HANDLER);
handlerDesc.setRules(rule);
phase.addHandler(requestBlockingHandler);
+
+ log.info("Added " + ClusteringConstants.REQUEST_BLOCKING_HANDLER +
+ " between SOAPMessageBodyBasedDispatcher & InstanceDispatcher to InFaultFlow");
break;
}
}
@@ -172,58 +188,20 @@
channel.getMembershipService().getProperties().setProperty("mcastClusterDomain",
new String(domain));
- // Membership scheme handling
- //TODO: if it is a WKA scheme, connect to a WKA and get a list of members. Add the members
- // TODO: to the membership manager
Parameter membershipSchemeParam = getParameter("membershipScheme");
String membershipScheme = ClusteringConstants.MembershipScheme.MULTICAST_BASED;
if (membershipSchemeParam != null) {
membershipScheme = ((String) membershipSchemeParam.getValue()).trim();
}
- if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
- log.info("Using WKA based membership management scheme");
- channel.setMembershipService(new WkaMembershipService(membershipManager));
- StaticMember localMember = new StaticMember();
- membershipManager.setLocalMember(localMember);
- ReceiverBase receiver = (ReceiverBase) channel.getChannelReceiver();
- Parameter tcpListenHost = getParameter("tcpListenHost");
- if (tcpListenHost != null) {
- String host = ((String) tcpListenHost.getValue()).trim();
- receiver.setAddress(host);
- localMember.setHost(host);
- }
- Parameter tcpListenPort = getParameter("tcpListenPort");
- if (tcpListenPort != null) {
- String port = ((String) tcpListenPort.getValue()).trim();
- receiver.setPort(Integer.parseInt(port));
- localMember.setPort(Integer.parseInt(port));
- }
- localMember.setDomain(domain);
- byte[] payload = "test".getBytes();
- localMember.setPayload(payload);
-
- staticMembershipInterceptor = new StaticMembershipInterceptor();
- try {
- for (int i = 0; i < members.length; i++) {
- org.apache.axis2.clustering.Member member = members[i];
- StaticMember member1 = new StaticMember(member.getHostName(),
- member.getPort(), 10, payload);
- member1.setDomain(domain);
- staticMembershipInterceptor.addStaticMember(member1);
- }
- } catch (IOException e) {
- String msg = "Could not add static members";
- log.error(msg, e);
- throw new ClusteringFault(msg, e);
- }
- } else if (membershipScheme.equals(ClusteringConstants.MembershipScheme.MULTICAST_BASED)) {
- log.info("Using multicast based membership management scheme");
- configureMulticastParameters(channel);
- }
// Add all the ChannelInterceptors
addInterceptors(channel, domain, membershipScheme);
+ // Membership scheme handling
+ //TODO: if it is a WKA scheme, connect to a WKA and get a list of members. Add the members
+ // TODO: to the membership manager
+ configureMembershipScheme(domain, membershipScheme);
+
channel.addChannelListener(channelListener);
TribesMembershipListener membershipListener = new TribesMembershipListener(membershipManager);
@@ -240,7 +218,9 @@
" System property and retry.");
}
} catch (ChannelException e) {
- throw new ClusteringFault("Error starting Tribes channel", e);
+ String msg = "Error starting Tribes channel";
+ log.error(msg, e);
+ throw new ClusteringFault(msg, e);
}
// RpcChannel is a ChannelListener. When the reply to a particular request comes back, it
@@ -271,7 +251,91 @@
setNonReplicableProperty(ClusteringConstants.CLUSTER_INITIALIZED, "true");
}
- //TODO: The order of the interceptors will depend on the membership scheme
+ /**
+ * Handle specific configurations related to different membership management schemes.
+ *
+ * @param domain The clustering domain to which this member belongs to
+ * @param membershipScheme The membership scheme. Only wka & multicast are valid values.
+ * @throws ClusteringFault If the membership scheme is invalid, or if an error occurs
+ * while configuring membership scheme
+ */
+ private void configureMembershipScheme(byte[] domain, String membershipScheme)
+ throws ClusteringFault {
+
+ if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
+ log.info("Using WKA based membership management scheme");
+ channel.setMembershipService(new WkaMembershipService(membershipManager));
+ StaticMember localMember = new StaticMember();
+ membershipManager.setLocalMember(localMember);
+ ReceiverBase receiver = (ReceiverBase) channel.getChannelReceiver();
+ Parameter tcpListenHost = getParameter("tcpListenHost");
+ if (tcpListenHost != null) {
+ String host = ((String) tcpListenHost.getValue()).trim();
+ receiver.setAddress(host);
+ localMember.setHost(host);
+ }
+ Parameter tcpListenPort = getParameter("tcpListenPort");
+ if (tcpListenPort != null) {
+ String port = ((String) tcpListenPort.getValue()).trim();
+ receiver.setPort(Integer.parseInt(port));
+ localMember.setPort(Integer.parseInt(port));
+ }
+ localMember.setDomain(domain);
+ byte[] payload = "ping".getBytes();
+ localMember.setPayload(payload);
+
+ try {
+ for (org.apache.axis2.clustering.Member member : members) {
+ StaticMember tribesMember = new StaticMember(member.getHostName(),
+ member.getPort(),
+ 0,
+ payload);
+ // Do not add the local member to the list of members
+ if (!(Arrays.equals(localMember.getHost(), tribesMember.getHost()) &&
+ localMember.getPort() == tribesMember.getPort())) {
+ tribesMember.setDomain(domain);
+ staticMembershipInterceptor.addStaticMember(tribesMember);
+ try {
+
+ // Before adding a static member, we will try to verify whether
+ // we can connect to it
+ InetAddress addr = InetAddress.getByName(member.getHostName());
+ SocketAddress sockaddr = new InetSocketAddress(addr,
+ member.getPort());
+ new Socket().connect(sockaddr, 3000);
+ membershipManager.memberAdded(tribesMember);
+ log.info("Added static member " + TribesUtil.getHost(tribesMember));
+ } catch (Exception e) {
+ log.info("Could not connect to member " +
+ TribesUtil.getHost(tribesMember));
+ }
+ }
+ }
+ } catch (IOException e) {
+ String msg = "Could not add static members"; // TODO host and port
+ log.error(msg, e);
+ throw new ClusteringFault(msg, e);
+ }
+ } else if (membershipScheme.equals(ClusteringConstants.MembershipScheme.MULTICAST_BASED)) {
+ log.info("Using multicast based membership management scheme");
+ configureMulticastParameters(channel);
+ } else {
+ String msg = "Invalid membership scheme '" + membershipScheme +
+ "'. Supported schemes are multicast & wka";
+ log.error(msg);
+ throw new ClusteringFault(msg);
+ }
+ }
+
+ /**
+ * Add ChannelInterceptors. The order of the interceptors that are added will depend on the
+ * membership management scheme
+ *
+ * @param channel The Tribes channel
+ * @param domain The domain to which this node belongs to
+ * @param membershipScheme The membership scheme. Only wka & multicast are valid values.
+ * @throws ClusteringFault If an error occurs while adding interceptors
+ */
private void addInterceptors(ManagedChannel channel, byte[] domain, String membershipScheme)
throws ClusteringFault {
@@ -313,10 +377,17 @@
channel.addInterceptor(tcpFailureDetector);
if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
+ staticMembershipInterceptor = new StaticMembershipInterceptor();
channel.addInterceptor(staticMembershipInterceptor);
}
}
+ /**
+ * If a multicast based membership management scheme is used, configure the multicasting related
+ * parameters
+ *
+ * @param channel The Tribes channel
+ */
private void configureMulticastParameters(ManagedChannel channel) {
Properties mcastProps = channel.getMembershipService().getProperties();
Parameter mcastAddress = getParameter("multicastAddress");
@@ -381,7 +452,7 @@
// Keep track of members to whom we already sent an initialization command
// Do not send another request to these members
- List sentMembersList = new ArrayList();
+ List<String> sentMembersList = new ArrayList<String>();
sentMembersList.add(TribesUtil.getLocalHost(channel));
Member[] members = membershipManager.getMembers();
if (members.length == 0) {
@@ -443,19 +514,19 @@
}
public Parameter getParameter(String name) {
- return (Parameter) parameters.get(name);
+ return parameters.get(name);
}
public ArrayList getParameters() {
- ArrayList list = new ArrayList();
- for (Iterator it = parameters.keySet().iterator(); it.hasNext();) {
- list.add(parameters.get(it.next()));
+ ArrayList<Parameter> list = new ArrayList<Parameter>();
+ for (String msg : parameters.keySet()) {
+ list.add(parameters.get(msg));
}
return list;
}
public boolean isParameterLocked(String parameterName) {
- Parameter parameter = (Parameter) parameters.get(parameterName);
+ Parameter parameter = parameters.get(parameterName);
return parameter != null && parameter.isLocked();
}
@@ -463,6 +534,11 @@
parameters.remove(param.getName());
}
+ /**
+ * Shutdown the cluster. This member will leave the cluster when this method is called.
+ *
+ * @throws ClusteringFault If an error occurs while shutting down
+ */
public void shutdown() throws ClusteringFault {
log.debug("Enter: TribesClusterManager::shutdown");
if (channel != null) {
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java Fri May 16 22:24:58 2008
@@ -20,6 +20,7 @@
import org.apache.catalina.tribes.MembershipService;
import org.apache.catalina.tribes.membership.MemberImpl;
import org.apache.catalina.tribes.membership.StaticMember;
+import org.apache.catalina.tribes.util.UUIDGenerator;
import java.io.IOException;
import java.util.Properties;
@@ -32,10 +33,6 @@
private MembershipManager membershipManager;
- /**
- * The descriptive information about this implementation.
- */
- private static final String info = "McastService/2.1";
/**
* The implementation specific properties
@@ -60,18 +57,15 @@
}
public void start() throws Exception {
- //TODO: Method implementation
-
+ // Nothing to do here
}
public void start(int i) throws Exception {
- //TODO: Method implementation
-
+ // Nothing to do here
}
public void stop(int i) {
- //TODO: Method implementation
-
+ // Nothing to do here
}
public boolean hasMembers() {
@@ -79,14 +73,7 @@
}
public Member getMember(Member member) {
-
- //TODO: Method implementation
- try {
- return new MemberImpl("127.0.0.1", 11, 111);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return member;
+ return membershipManager.getMember(member);
}
public Member[] getMembers() {
@@ -95,37 +82,51 @@
public Member getLocalMember(boolean b) {
return membershipManager.getLocalMember();
-
- //TODO: Method implementation
-// StaticMember member2 = null;
-// try {
-// member2 = new StaticMember("delly", 4000, 10, payload);
-// member2.setDomain(domain);
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-//
-// return member2;
}
public String[] getMembersByName() {
- //TODO: Method implementation
- return new String[0];
+ Member[] currentMembers = getMembers();
+ String[] membernames;
+ if (currentMembers != null) {
+ membernames = new String[currentMembers.length];
+ for (int i = 0; i < currentMembers.length; i++) {
+ membernames[i] = currentMembers[i].toString();
+ }
+ } else {
+ membernames = new String[0];
+ }
+ return membernames;
}
- public Member findMemberByName(String s) {
- //TODO: Method implementation
- try {
- return new MemberImpl("127.0.0.1", 11, 111);
- } catch (IOException e) {
- e.printStackTrace();
+ public Member findMemberByName(String name) {
+ Member[] currentMembers = getMembers();
+ for (Member currentMember : currentMembers) {
+ if (name.equals(currentMember.toString())) {
+ return currentMember;
+ }
}
return null;
}
- public void setLocalMemberProperties(String s, int i) {
- //TODO: Method implementation
-
+ public void setLocalMemberProperties(String listenHost, int listenPort) {
+ properties.setProperty("tcpListenHost", listenHost);
+ properties.setProperty("tcpListenPort", String.valueOf(listenPort));
+ StaticMember localMember = (StaticMember) membershipManager.getLocalMember();
+ try {
+ if (localMember != null) {
+ localMember.setHostname(listenHost);
+ localMember.setPort(listenPort);
+ } else {
+ localMember = new StaticMember(listenHost, listenPort, 0);
+ localMember.setUniqueId(UUIDGenerator.randomUUID(true));
+ localMember.setPayload(payload);
+ localMember.setDomain(domain);
+ membershipManager.setLocalMember(localMember);
+ }
+ localMember.getData(true, true);
+ } catch (IOException x) {
+ throw new IllegalArgumentException(x);
+ }
}
public void setMembershipListener(MembershipListener membershipListener) {
@@ -136,11 +137,11 @@
this.membershipListener = null;
}
- public void setPayload(byte[] bytes) {
+ public void setPayload(byte[] payload) {
this.payload = payload;
}
- public void setDomain(byte[] bytes) {
+ public void setDomain(byte[] domain) {
this.domain = domain;
}
}
Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ClusterManagerTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ClusterManagerTestCase.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ClusterManagerTestCase.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ClusterManagerTestCase.java Fri May 16 22:24:58 2008
@@ -30,8 +30,6 @@
import org.apache.axis2.description.AxisServiceGroup;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.transport.http.server.HttpUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
public abstract class ClusterManagerTestCase extends TestCase {
@@ -55,8 +53,6 @@
protected TestConfigurationManagerListener configurationManagerListener;
protected DefaultContextManagerListener contextManagerListener;
- private static final Log log = LogFactory.getLog(ClusterManagerTestCase.class);
-
protected void setUp() throws Exception {
Thread.sleep(3000);
@@ -102,7 +98,8 @@
} catch (ClusteringFault e) {
String message =
"Could not initialize ClusterManagers. Please check the network connection";
- log.error(message, e);
+ System.out.println(message + ": " + e);
+ e.printStackTrace();
skipChannelTests = true;
}
}
Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ContextReplicationTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ContextReplicationTest.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ContextReplicationTest.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ContextReplicationTest.java Fri May 16 22:24:58 2008
@@ -556,6 +556,23 @@
assertNull(serviceContext1.getProperty(key1));
}
+ public void testReplicationExclusion0() throws Exception {
+ if (!canRunTests) {
+ return;
+ }
+
+ String key1 = "local_configCtxKey";
+ String val1 = "configCtxVal1";
+ configurationContext1.setProperty(key1, val1);
+ List<String> exclusionPatterns = new ArrayList<String>();
+ exclusionPatterns.add("*"); // Exclude all properties
+ ctxMan1.setReplicationExcludePatterns("defaults", exclusionPatterns);
+ ctxMan1.updateContext(configurationContext1);
+
+ String value = (String) configurationContext2.getProperty(key1);
+ assertNull(value); // The property should not have gotten replicated
+ }
+
public void testReplicationExclusion1() throws Exception {
if (!canRunTests) {
return;
@@ -564,7 +581,7 @@
String key1 = "local_configCtxKey";
String val1 = "configCtxVal1";
configurationContext1.setProperty(key1, val1);
- List exclusionPatterns = new ArrayList();
+ List<String> exclusionPatterns = new ArrayList<String>();
exclusionPatterns.add("local_*");
ctxMan1.setReplicationExcludePatterns("defaults", exclusionPatterns);
ctxMan1.updateContext(configurationContext1);
@@ -581,7 +598,7 @@
String key1 = "local_configCtxKey";
String val1 = "configCtxVal1";
configurationContext1.setProperty(key1, val1);
- List exclusionPatterns = new ArrayList();
+ List<String> exclusionPatterns = new ArrayList<String>();
exclusionPatterns.add("local_*");
ctxMan1.setReplicationExcludePatterns("org.apache.axis2.context.ConfigurationContext",
exclusionPatterns);
@@ -608,9 +625,9 @@
String val3 = "configCtxVal3";
configurationContext1.setProperty(key3, val3);
- List exclusionPatterns1 = new ArrayList();
+ List<String> exclusionPatterns1 = new ArrayList<String>();
exclusionPatterns1.add("local1_*");
- List exclusionPatterns2 = new ArrayList();
+ List<String> exclusionPatterns2 = new ArrayList<String>();
exclusionPatterns2.add("local2_*");
ctxMan1.setReplicationExcludePatterns("org.apache.axis2.context.ConfigurationContext",
exclusionPatterns1);
Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/configuration/ConfigurationManagerTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/configuration/ConfigurationManagerTestCase.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/configuration/ConfigurationManagerTestCase.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/configuration/ConfigurationManagerTestCase.java Fri May 16 22:24:58 2008
@@ -21,16 +21,12 @@
import org.apache.axis2.clustering.ClusterManagerTestCase;
import org.apache.axis2.clustering.ClusteringFault;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import javax.xml.stream.XMLStreamException;
public abstract class ConfigurationManagerTestCase extends ClusterManagerTestCase {
- private static final Log log = LogFactory.getLog(ConfigurationManagerTestCase.class);
-
public void testLoadServiceGroup() throws ClusteringFault {
String serviceGroupName = "testService";
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java Fri May 16 22:24:58 2008
@@ -27,7 +27,7 @@
/**
* This is the main interface in the Axis2 clustering implementation.
* In order to plug-in a new clustering implementation, this interface has to be
- * implmented.
+ * implemented.
*/
public interface ClusterManager extends ParameterInclude {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java?rev=657292&r1=657291&r2=657292&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java Fri May 16 22:24:58 2008
@@ -20,7 +20,14 @@
*/
public class Member {
+ /**
+ * The host name of this member. Can be the name or the IP address
+ */
private String hostName;
+
+ /**
+ * The TCP port used by this member
+ */
private int port;
public Member(String hostName, int port) {