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/14 15:20:13 UTC
svn commit: r656272 - in /webservices/axis2/trunk/java/modules:
clustering/src/org/apache/axis2/clustering/tribes/
kernel/src/org/apache/axis2/clustering/
kernel/src/org/apache/axis2/deployment/ parent/
Author: azeez
Date: Wed May 14 06:20:13 2008
New Revision: 656272
URL: http://svn.apache.org/viewvc?rev=656272&view=rev
Log:
1. Now we can specify a static group of members
2. Upgraded to Tribes 6.0.16
Added:
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
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/TribesUtil.java
webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/WkaMembershipService.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusterManager.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ClusterBuilder.java
webservices/axis2/trunk/java/modules/parent/pom.xml
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=656272&r1=656271&r2=656272&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 Wed May 14 06:20:13 2008
@@ -30,6 +30,15 @@
*/
public class MembershipManager {
private final List members = new ArrayList();
+ private Member localMember;
+
+ public Member getLocalMember() {
+ return localMember;
+ }
+
+ public void setLocalMember(Member localMember) {
+ this.localMember = localMember;
+ }
public synchronized void memberAdded(Member member) {
members.add(member);
@@ -68,4 +77,7 @@
return (Member) members.get(memberIndex);
}
+ public boolean hasMembers(){
+ return members.size() > 0;
+ }
}
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=656272&r1=656271&r2=656272&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 Wed May 14 06:20:13 2008
@@ -49,13 +49,17 @@
import org.apache.catalina.tribes.group.RpcChannel;
import org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor;
import org.apache.catalina.tribes.group.interceptors.OrderInterceptor;
+import org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor;
import org.apache.catalina.tribes.group.interceptors.TcpFailureDetector;
+import org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor;
+import org.apache.catalina.tribes.membership.StaticMember;
import org.apache.catalina.tribes.transport.MultiPointSender;
import org.apache.catalina.tribes.transport.ReceiverBase;
import org.apache.catalina.tribes.transport.ReplicationTransmitter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -77,12 +81,22 @@
private ChannelListener channelListener;
private ChannelSender channelSender;
private MembershipManager membershipManager;
+ private StaticMembershipInterceptor staticMembershipInterceptor;
+ private org.apache.axis2.clustering.Member[] members;
public TribesClusterManager() {
parameters = new HashMap();
controlCmdProcessor = new ControlCommandProcessor(configurationContext);
}
+ public void setMembers(org.apache.axis2.clustering.Member[] members) {
+ this.members = members;
+ }
+
+ public org.apache.axis2.clustering.Member[] getMembers() {
+ return members;
+ }
+
public ContextManager getContextManager() {
return contextManager;
}
@@ -158,22 +172,57 @@
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());
+ 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);
+ addInterceptors(channel, domain, membershipScheme);
channel.addChannelListener(channelListener);
@@ -223,7 +272,14 @@
}
//TODO: The order of the interceptors will depend on the membership scheme
- private void addInterceptors(ManagedChannel channel, byte[] domain) {
+ private void addInterceptors(ManagedChannel channel, byte[] domain, String membershipScheme)
+ throws ClusteringFault {
+
+ if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
+ TcpPingInterceptor tcpPingInterceptor = new TcpPingInterceptor();
+ tcpPingInterceptor.setInterval(100);
+ channel.addInterceptor(tcpPingInterceptor);
+ }
// Add a DomainFilterInterceptor
channel.getMembershipService().setDomain(domain);
@@ -256,18 +312,9 @@
tcpFailureDetector.setPrevious(dfi);
channel.addInterceptor(tcpFailureDetector);
-// if(memberDiscoverMode = WKA){
-// TcpPing
-// TcpFailure
-// StaticMembership
-// }
- /*StaticMembershipInterceptor staticMembershipInterceptor = new StaticMembershipInterceptor();
- channel.addInterceptor(staticMembershipInterceptor);
- try {
- staticMembershipInterceptor.addStaticMember(new StaticMember("10.100.1.190", 4000, 10));
- } catch (IOException e) {
- e.printStackTrace();
- }*/
+ if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
+ channel.addInterceptor(staticMembershipInterceptor);
+ }
}
private void configureMulticastParameters(ManagedChannel channel) {
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java?rev=656272&r1=656271&r2=656272&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java Wed May 14 06:20:13 2008
@@ -24,6 +24,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.util.StringTokenizer;
+
public class TribesUtil {
private static Log log = LogFactory.getLog(TribesUtil.class);
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=656272&r1=656271&r2=656272&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 Wed May 14 06:20:13 2008
@@ -19,6 +19,7 @@
import org.apache.catalina.tribes.MembershipListener;
import org.apache.catalina.tribes.MembershipService;
import org.apache.catalina.tribes.membership.MemberImpl;
+import org.apache.catalina.tribes.membership.StaticMember;
import java.io.IOException;
import java.util.Properties;
@@ -29,6 +30,8 @@
*/
public class WkaMembershipService implements MembershipService {
+ private MembershipManager membershipManager;
+
/**
* The descriptive information about this implementation.
*/
@@ -38,19 +41,22 @@
* The implementation specific properties
*/
protected Properties properties = new Properties();
-
+
protected byte[] payload;
protected byte[] domain;
+ private MembershipListener membershipListener;
- public void setProperties(Properties properties) {
- //TODO: Method implementation
+ public WkaMembershipService(MembershipManager membershipManager) {
+ this.membershipManager = membershipManager;
+ }
+ public void setProperties(Properties properties) {
+ this.properties = properties;
}
public Properties getProperties() {
- //TODO: Method implementation
- return null;
+ return properties;
}
public void start() throws Exception {
@@ -69,11 +75,11 @@
}
public boolean hasMembers() {
- //TODO: Method implementation
- return false;
+ return membershipManager.hasMembers();
}
public Member getMember(Member member) {
+
//TODO: Method implementation
try {
return new MemberImpl("127.0.0.1", 11, 111);
@@ -84,13 +90,22 @@
}
public Member[] getMembers() {
- //TODO: Method implementation
- return new Member[0];
+ return membershipManager.getMembers();
}
public Member getLocalMember(boolean b) {
+ return membershipManager.getLocalMember();
+
//TODO: Method implementation
- return new MemberImpl();
+// StaticMember member2 = null;
+// try {
+// member2 = new StaticMember("delly", 4000, 10, payload);
+// member2.setDomain(domain);
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+//
+// return member2;
}
public String[] getMembersByName() {
@@ -114,22 +129,18 @@
}
public void setMembershipListener(MembershipListener membershipListener) {
- //TODO: Method implementation
-
+ this.membershipListener = membershipListener;
}
public void removeMembershipListener() {
- //TODO: Method implementation
-
+ this.membershipListener = null;
}
public void setPayload(byte[] bytes) {
- //TODO: Method implementation
-
+ this.payload = payload;
}
public void setDomain(byte[] bytes) {
- //TODO: Method implementation
-
+ this.domain = domain;
}
}
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=656272&r1=656271&r2=656272&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 Wed May 14 06:20:13 2008
@@ -70,4 +70,19 @@
*/
void setConfigurationContext(ConfigurationContext configurationContext);
+ /**
+ * Set the static members of the cluster. This is used only with static group membership.
+ *
+ * @param members Members to be added
+ */
+ void setMembers(Member[] members);
+
+ /**
+ * Get the list of members in a static group
+ *
+ * @return The members if static group membership is used. If any other membership scheme is used,
+ * the values returned may not be valid
+ */
+ Member[] getMembers();
+
}
\ No newline at end of file
Added: 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=656272&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java Wed May 14 06:20:13 2008
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2004,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.axis2.clustering;
+
+/**
+ * Represents a member in the cluster. This is used with static membership
+ */
+public class Member {
+
+ private String hostName;
+ private int port;
+
+ public Member(String hostName, int port) {
+ this.hostName = hostName;
+ this.port = port;
+ }
+
+ public String getHostName() {
+ return hostName;
+ }
+
+ public int getPort() {
+ return port;
+ }
+}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ClusterBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ClusterBuilder.java?rev=656272&r1=656271&r2=656272&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ClusterBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ClusterBuilder.java Wed May 14 06:20:13 2008
@@ -23,10 +23,13 @@
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.clustering.ClusterManager;
+import org.apache.axis2.clustering.Member;
+import org.apache.axis2.clustering.ClusteringConstants;
import org.apache.axis2.clustering.configuration.ConfigurationManager;
import org.apache.axis2.clustering.configuration.ConfigurationManagerListener;
import org.apache.axis2.clustering.context.ContextManager;
import org.apache.axis2.clustering.context.ContextManagerListener;
+import org.apache.axis2.description.Parameter;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.i18n.Messages;
@@ -54,6 +57,8 @@
/**
* Populates service from corresponding OM.
+ *
+ * @param clusterElement Cluster element
*/
public void buildCluster(OMElement clusterElement) throws DeploymentException {
@@ -82,6 +87,9 @@
clusterManager,
null);
+ // loading the members
+ loadMembers(clusterManager, clusterElement);
+
//loading the ConfigurationManager
loadConfigManager(clusterElement, clusterManager);
@@ -96,6 +104,31 @@
}
}
+ private void loadMembers(ClusterManager clusterManager, OMElement clusterElement) {
+ clusterManager.setMembers(new Member[0]);
+ Parameter membershipSchemeParam = clusterManager.getParameter("membershipScheme");
+ if (membershipSchemeParam != null) {
+ String membershipScheme = ((String) membershipSchemeParam.getValue()).trim();
+ if (membershipScheme.equals(ClusteringConstants.MembershipScheme.WKA_BASED)) {
+ List members = new ArrayList();
+ OMElement membersEle =
+ clusterElement.getFirstChildWithName(new QName("members"));
+ if (membersEle != null) {
+ for (Iterator iter = membersEle.getChildrenWithLocalName("member"); iter.hasNext();)
+ {
+ OMElement memberEle = (OMElement) iter.next();
+ String hostName =
+ memberEle.getFirstChildWithName(new QName("hostName")).getText().trim();
+ String port =
+ memberEle.getFirstChildWithName(new QName("port")).getText().trim();
+ members.add(new Member(hostName, Integer.parseInt(port)));
+ }
+ }
+ clusterManager.setMembers((Member[]) members.toArray(new Member[members.size()]));
+ }
+ }
+ }
+
private void loadContextManager(OMElement clusterElement,
ClusterManager clusterManager) throws DeploymentException,
InstantiationException,
Modified: webservices/axis2/trunk/java/modules/parent/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/parent/pom.xml?rev=656272&r1=656271&r2=656272&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/parent/pom.xml (original)
+++ webservices/axis2/trunk/java/modules/parent/pom.xml Wed May 14 06:20:13 2008
@@ -134,7 +134,7 @@
<stax.impl.artifact>wstx-asl</stax.impl.artifact>
<stax.impl.groupid>org.codehaus.woodstox</stax.impl.groupid>
<stax.impl.version>3.2.4</stax.impl.version>
- <tomcat.version>6.0.14</tomcat.version>
+ <tomcat.version>6.0.16</tomcat.version>
<woden.version>1.0M8</woden.version>
<wsdl4j.version>1.6.2</wsdl4j.version>
<xalan.version>2.7.0</xalan.version>
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org