public class CoreGroupCommunicationService extends AsynchronousService<CoreGroupCommunicationService> implements GroupRpcDispatcher, GroupMembershipNotifier, GroupStateTransferService
GroupCommunicationService interface and its direct subinterfaces based on a JGroups MuxRpcDispatcher and a JChannel.
TODO: look into decomposing this class: the RPC stuff, the membership stuff and the state transfer stuff could be handled by
separate components with this class used to integrate the pieces and expose a common API. The separate components could then
be separately testable.| Modifier and Type | Class and Description |
|---|---|
protected static class |
CoreGroupCommunicationService.GroupView
A simple data class containing the current view information as well as change information needed to notify the
GroupMembershipListeners about the event that led to this view.
|
static class |
CoreGroupCommunicationService.NoHandlerForRPC
Returned when an RPC call arrives for a service that isn't registered.
|
| Modifier and Type | Field and Description |
|---|---|
protected ClusteringImplLogger |
log
The cluster instance log category
|
| Constructor and Description |
|---|
CoreGroupCommunicationService(short scope) |
| Modifier and Type | Method and Description |
|---|---|
org.jboss.msc.service.ServiceBuilder<CoreGroupCommunicationService> |
build(org.jboss.msc.service.ServiceTarget target,
String name) |
void |
callAsynchMethodOnCluster(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf)
Invoke an RPC call on all nodes of the partition/cluster without waiting for any responses.
|
void |
callAsynchMethodOnCluster(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf,
boolean unordered)
Invoke an RPC call on all nodes of the partition/cluster without waiting for any responses.
|
void |
callAsyncMethodOnCoordinatorNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf)
Calls method on Cluster coordinator node only.
|
void |
callAsyncMethodOnCoordinatorNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf,
boolean unordered)
Calls method on Cluster coordinator node only.
|
void |
callAsyncMethodOnNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
ClusterNode targetNode)
Calls method on target node only.
|
void |
callAsyncMethodOnNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
ClusterNode targetNode,
boolean unordered)
Calls method on target node only.
|
<T> List<T> |
callMethodOnCluster(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf)
Invoke an RPC call on all nodes of the partition/cluster and return their response values as a list.
|
<T> List<T> |
callMethodOnCluster(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf,
ResponseFilter filter)
Invoke a synchronous RPC call on all nodes of the partition/cluster and return their response values as a list.
|
<T> List<T> |
callMethodOnCluster(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf,
ResponseFilter filter,
long methodTimeout,
boolean unordered)
Invoke an RPC call on all nodes of the partition/cluster and return their response values as a list.
|
<T> T |
callMethodOnCoordinatorNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf)
Calls method on Cluster coordinator node only.
|
<T> T |
callMethodOnCoordinatorNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
boolean excludeSelf,
long methodTimeout,
boolean unordered)
Calls method on Cluster coordinator node only.
|
<T> T |
callMethodOnNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
ClusterNode targetNode)
Calls method on target node only.
|
<T> T |
callMethodOnNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
long methodTimeout,
ClusterNode targetNode)
Calls method on target node only.
|
<T> T |
callMethodOnNode(String serviceName,
String methodName,
Object[] args,
Class<?>[] types,
long methodTimeout,
ClusterNode targetNode,
boolean unordered)
Calls method synchronously on target node only.
|
void |
create() |
protected org.jgroups.Channel |
createChannel() |
protected void |
createService() |
void |
destroy() |
protected void |
destroyService() |
boolean |
getAllowSynchronousMembershipNotifications() |
protected org.jgroups.Channel |
getChannel() |
ChannelFactory |
getChannelFactory() |
String |
getChannelStackName() |
ClusterNode |
getClusterNode()
Gets the object that represents this node in the current group.
|
List<ClusterNode> |
getClusterNodes()
Gets the member nodes that comprise the current group membership.
|
List<String> |
getCurrentView() |
long |
getCurrentViewId()
Identifier for the current group topology.
|
String |
getGroupName()
The name of the group with which communication occurs.
|
String |
getJGroupsVersion() |
int |
getMaxHistoryLength() |
long |
getMethodCallTimeout()
Gets the default period, in ms, that the various
callMethodOnXXX methods that don't specify a
methodTimeout parameter will wait for a response. |
String |
getNodeName()
Return the name of this node in the current group.
|
static org.jboss.msc.service.ServiceName |
getServiceName(String name) |
Future<SerializableStateTransferResult> |
getServiceState(String serviceName)
Gets the current service state from an existing member of the group.
|
Future<SerializableStateTransferResult> |
getServiceState(String serviceName,
ClassLoader classloader)
Gets the current service state from an existing member of the group, using the given classloader to deserialize it.
|
Future<StreamStateTransferResult> |
getServiceStateAsStream(String serviceName)
Gets an input stream from which can be read the current service state from an existing member of the group.
|
org.jboss.as.clustering.impl.CoreGroupCommunicationService.State |
getState() |
long |
getStateTransferTimeout() |
Executor |
getThreadPool() |
CoreGroupCommunicationService |
getValue() |
boolean |
isConsistentWith(GroupCommunicationService other)
Gets whether this GroupCommunicationService is logically consistent with another service; e.g.
|
boolean |
isCoordinator()
Indicates whether this node is the group coordinator.
|
protected void |
logHistory(String pattern,
Object... args) |
void |
registerGroupMembershipListener(GroupMembershipListener listener)
Subscribes to receive
GroupMembershipListener events. |
protected void |
registerGroupMembershipListener(GroupMembershipListener listener,
boolean sync) |
void |
registerRPCHandler(String objName,
Object subscriber)
Register an object upon which RPCs associated with the given serviceName will be invoked.
|
void |
registerRPCHandler(String serviceName,
Object handler,
ClassLoader classLoader)
|
void |
registerRPCHandler(String objName,
Object subscriber,
org.jboss.marshalling.ClassResolver resolver)
Register an object upon which RPCs associated with the given serviceName will be invoked.
|
void |
registerStateTransferProvider(String serviceName,
StateTransferProvider provider)
Registers the object that can provide state for the service when newly joining group members request it.
|
void |
setAllowSynchronousMembershipNotifications(boolean allowSync)
Sets whether this partition will synchronously notify any HAPartition.HAMembershipListener of membership changes using
the calling thread from the underlying group communications layer (e.g.
|
void |
setChannel(org.jgroups.Channel channel) |
void |
setChannelFactory(ChannelFactory factory) |
void |
setChannelStackName(String stackName) |
void |
setGroupName(String groupName) |
void |
setMaxHistoryLength(int maxHistoryLength) |
void |
setMethodCallTimeout(long timeout) |
void |
setStateTransferTimeout(long timeout) |
void |
setThreadPool(Executor threadPool) |
String |
showHistory() |
String |
showHistoryAsXML() |
void |
start() |
void |
start(org.jboss.msc.service.StartContext context) |
protected void |
startService() |
void |
stop() |
void |
stop(org.jboss.msc.service.StopContext context) |
protected void |
stopService() |
void |
unregisterGroupMembershipListener(GroupMembershipListener listener)
Unsubscribes from receiving
GroupMembershipListener events. |
protected void |
unregisterGroupMembershipListener(GroupMembershipListener listener,
boolean sync) |
void |
unregisterRPCHandler(String objName,
Object subscriber)
Unregister the service from the partition
|
void |
unregisterStateTransferProvider(String serviceName)
Unregisters the object that can provide state for the service.
|
protected ClusteringImplLogger log
public static org.jboss.msc.service.ServiceName getServiceName(String name)
public org.jboss.msc.service.ServiceBuilder<CoreGroupCommunicationService> build(org.jboss.msc.service.ServiceTarget target, String name)
public CoreGroupCommunicationService getValue()
getValue in interface org.jboss.msc.value.Value<CoreGroupCommunicationService>Value.getValue()public void start(org.jboss.msc.service.StartContext context)
throws org.jboss.msc.service.StartException
start in interface org.jboss.msc.service.Service<CoreGroupCommunicationService>start in class AsynchronousService<CoreGroupCommunicationService>org.jboss.msc.service.StartExceptionService.start(org.jboss.msc.service.StartContext)public void stop(org.jboss.msc.service.StopContext context)
stop in interface org.jboss.msc.service.Service<CoreGroupCommunicationService>stop in class AsynchronousService<CoreGroupCommunicationService>Service.stop(org.jboss.msc.service.StopContext)public boolean isConsistentWith(GroupCommunicationService other)
GroupCommunicationServiceisConsistentWith in interface GroupCommunicationServiceother - the other GroupCommunicationService. Cannot be null.true if an application can use this service and other together to interact with the
same set of nodes.public String getNodeName()
GroupCommunicationServicegetClusterNode().getName().getNodeName in interface GroupCommunicationServiceGroupCommunicationService.getClusterNode()public String getGroupName()
GroupCommunicationServicegetGroupName in interface GroupCommunicationServicepublic long getCurrentViewId()
GroupCommunicationServicegetCurrentViewId in interface GroupCommunicationServicepublic List<ClusterNode> getClusterNodes()
GroupCommunicationServicegetClusterNodes in interface GroupCommunicationServicepublic ClusterNode getClusterNode()
GroupCommunicationServicegetClusterNode in interface GroupCommunicationServicepublic boolean isCoordinator()
GroupCommunicationServiceisCoordinator in interface GroupCommunicationServicepublic void registerRPCHandler(String objName, Object subscriber)
registerRPCHandler in interface GroupRpcDispatcherobjName - Name of the subscribing service (demultiplexing key)subscriber - object to be called when receiving a RPC for its key.public void registerRPCHandler(String objName, Object subscriber, org.jboss.marshalling.ClassResolver resolver)
registerRPCHandler in interface GroupRpcDispatcherobjName - Name of the subscribing service (demultiplexing key)subscriber - object to be called when receiving a RPC for its key.resolver - ClassResolver to be used when marshalling and unmarshalling RPC requests and responses.public void registerRPCHandler(String serviceName, Object handler, ClassLoader classLoader)
GroupRpcDispatcherregisterRPCHandler in interface GroupRpcDispatcherserviceName - Name of the subscribing service (demultiplexing key)handler - object to be called when receiving a RPC for its key.public void unregisterRPCHandler(String objName, Object subscriber)
unregisterRPCHandler in interface GroupRpcDispatcherobjName - Name of the service key (on which the demultiplexing occurs)subscriber - The target object that unsubscribespublic <T> List<T> callMethodOnCluster(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf) throws InterruptedException
GroupRpcDispatcher.callMethodOnCluster(String, String, Object[], Class[], boolean, ResponseFilter, long, boolean)
callAsynchMethodOnCluster(serviceName, methodName, args, types, Object.class, excludeSelf, null, methodTimeout, false)}
where methodTimeout is the value returned by GroupRpcDispatcher.getMethodCallTimeout().callMethodOnCluster in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - false if the RPC must also be made on the current node of the partition,
true if only on remote nodesInterruptedExceptionpublic <T> List<T> callMethodOnCluster(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf, ResponseFilter filter) throws InterruptedException
GroupRpcDispatcher.callMethodOnCluster(String, String, Object[], Class[], boolean, ResponseFilter, long, boolean)
callAsynchMethodOnCluster(serviceName, methodName, args, types, Object.class, excludeSelf, filter, methodTimeout, false)}
where methodTimeout is the value returned by GroupRpcDispatcher.getMethodCallTimeout().callMethodOnCluster in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - false if the RPC must also be made on the current node of the partition,
true if only on remote nodesfilter - response filter instance which allows for early termination of the synchronous RPC call. Can be
null.InterruptedExceptionpublic <T> List<T> callMethodOnCluster(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf, ResponseFilter filter, long methodTimeout, boolean unordered) throws InterruptedException
callMethodOnCluster in interface GroupRpcDispatcherT - the expected type of the return valuesserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - false if the RPC must also be made on the current node of the partition,
true if only on remote nodesfilter - response filter instance which allows for early termination of the RPC call once acceptable responses are
received. Can be null, in which the call will not return until all nodes have responded.methodTimeout - max number of ms to wait for response to arrive before returningunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeInterruptedExceptionpublic <T> T callMethodOnCoordinatorNode(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf) throws Exception
GroupRpcDispatcher.callMethodOnCoordinatorNode(String, String, Object[], Class[], boolean, long, boolean)
callMethodOnCoordinatorNode(serviceName, methodName, args, types, Object.class, excludeSelf, methodTimeout, false)} where
methodTimeout is the value returned by GroupRpcDispatcher.getMethodCallTimeout().callMethodOnCoordinatorNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - true if the RPC should not be made on the current node even if the current node is the
coordinatorExceptionpublic <T> T callMethodOnCoordinatorNode(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf, long methodTimeout, boolean unordered) throws Exception
callMethodOnCoordinatorNode in interface GroupRpcDispatcherT - the expected type of the return valueserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - true if the RPC should not be made on the current node even if the current node is the
coordinatormethodTimeout - max number of ms to wait for response to arrive before returningunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeExceptionpublic <T> T callMethodOnNode(String serviceName, String methodName, Object[] args, Class<?>[] types, ClusterNode targetNode) throws Exception
GroupRpcDispatcher.callMethodOnNode(String, String, Object[], Class[], long, ClusterNode, boolean)
callMethodOnNode(serviceName, methodName, args, types, Object.class, methodTimeout, targetNode, false)} where
methodTimeout is the value returned by GroupRpcDispatcher.getMethodCallTimeout().callMethodOnNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parameterstargetNode - is the target of the callExceptionpublic <T> T callMethodOnNode(String serviceName, String methodName, Object[] args, Class<?>[] types, long methodTimeout, ClusterNode targetNode) throws Exception
GroupRpcDispatcher.callMethodOnNode(String, String, Object[], Class[], long, ClusterNode, boolean)
callMethodOnNode(serviceName, methodName, args, types, Object.class, methodTimeout, targetNode, false)}.callMethodOnNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersmethodTimeout - max number of ms to wait for response to arrive before returningtargetNode - is the target of the callExceptionpublic <T> T callMethodOnNode(String serviceName, String methodName, Object[] args, Class<?>[] types, long methodTimeout, ClusterNode targetNode, boolean unordered) throws Exception
callMethodOnNode in interface GroupRpcDispatcherT - the expected type of the return valueserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersmethodTimeout - max number of ms to wait for response to arrive before returningtargetNode - is the target of the callunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeExceptionpublic void callAsyncMethodOnNode(String serviceName, String methodName, Object[] args, Class<?>[] types, ClusterNode targetNode) throws Exception
GroupRpcDispatcher.callAsyncMethodOnNode(String, String, Object[], Class[], ClusterNode, boolean)
callAsynchMethodOnCluster(serviceName, methodName, args, types, methodTimeout, targetNode, false)}.callAsyncMethodOnNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parameterstargetNode - is the target of the callExceptionpublic void callAsyncMethodOnNode(String serviceName, String methodName, Object[] args, Class<?>[] types, ClusterNode targetNode, boolean unordered) throws Exception
callAsyncMethodOnNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parameterstargetNode - is the target of the callunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeExceptionpublic void callAsynchMethodOnCluster(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf) throws InterruptedException
callAsynchMethodOnCluster(serviceName, methodName, args, types, excludeSelf, false).callAsynchMethodOnCluster in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - false if the RPC must also be made on the current node of the partition,
true if only on remote nodesInterruptedExceptionpublic void callAsynchMethodOnCluster(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf, boolean unordered) throws InterruptedException
callAsynchMethodOnCluster in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - false if the RPC must also be made on the current node of the partition,
true if only on remote nodesunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeInterruptedExceptionpublic void callAsyncMethodOnCoordinatorNode(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf) throws Exception
GroupRpcDispatchercallMethodOnCoordinatorNode(serviceName, methodName, args, types, excludeSelf, false) .callAsyncMethodOnCoordinatorNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - true if the RPC should not be made on the current node even if the current node is the
coordinatorExceptionpublic void callAsyncMethodOnCoordinatorNode(String serviceName, String methodName, Object[] args, Class<?>[] types, boolean excludeSelf, boolean unordered) throws Exception
GroupRpcDispatchercallAsyncMethodOnCoordinatorNode in interface GroupRpcDispatcherserviceName - name of the target service name on which calls are invokedmethodName - name of the Java method to be called on remote servicesargs - array of Java Object representing the set of parameters to be given to the remote methodtypes - types of the parametersexcludeSelf - true if the RPC should not be made on the current node even if the current node is the
coordinatorunordered - true if the HAPartition isn't required to ensure that this RPC is invoked on all nodes in a
consistent order with respect to other RPCs originated by the same nodeExceptionpublic boolean getAllowSynchronousMembershipNotifications()
public void setAllowSynchronousMembershipNotifications(boolean allowSync)
allowSync - true if registered listeners that don't implement
AsynchHAMembershipExtendedListener or AsynchHAMembershipListener should be notified
synchronously of membership changes; false if those listeners can be notified asynchronously. Default
is false.public void registerGroupMembershipListener(GroupMembershipListener listener)
GroupMembershipNotifierGroupMembershipListener events.registerGroupMembershipListener in interface GroupMembershipNotifierlistener - The membership listener objectpublic void unregisterGroupMembershipListener(GroupMembershipListener listener)
GroupMembershipNotifierGroupMembershipListener events.unregisterGroupMembershipListener in interface GroupMembershipNotifierlistener - The listener wishing to unsubscribepublic long getStateTransferTimeout()
public void setStateTransferTimeout(long timeout)
public Future<SerializableStateTransferResult> getServiceState(String serviceName, ClassLoader classloader)
GroupStateTransferServicegetServiceState in interface GroupStateTransferServiceserviceName - the name of the serviceclassloader - the ClassLoader to use to deserialize the state when it becomes available. May be null in
which case the GroupStateTransferService implementation class' classloader will be used.Future whose get() method will return the service state when it becomes
available.public Future<SerializableStateTransferResult> getServiceState(String serviceName)
GroupStateTransferService
Equivalent to getServiceState(serviceName, null).
getServiceState in interface GroupStateTransferServiceserviceName - the name of the serviceFuture whose get() method will return the service state when it becomes
available.public Future<StreamStateTransferResult> getServiceStateAsStream(String serviceName)
GroupStateTransferService
Equivalent to getServiceState(serviceName, null).
getServiceStateAsStream in interface GroupStateTransferServiceserviceName - the name of the serviceFuture whose get() method will return the service state when it becomes
available.public void registerStateTransferProvider(String serviceName, StateTransferProvider provider)
GroupStateTransferServiceregisterStateTransferProvider in interface GroupStateTransferServiceserviceName - the name of the serviceprovider - the state providerpublic void unregisterStateTransferProvider(String serviceName)
GroupStateTransferServiceunregisterStateTransferProvider in interface GroupStateTransferServiceserviceName - the name of the servicepublic String showHistory()
public String showHistoryAsXML()
public int getMaxHistoryLength()
public void setMaxHistoryLength(int maxHistoryLength)
public Executor getThreadPool()
public void setThreadPool(Executor threadPool)
public String getJGroupsVersion()
public ChannelFactory getChannelFactory()
public void setChannelFactory(ChannelFactory factory)
public String getChannelStackName()
public void setChannelStackName(String stackName)
public long getMethodCallTimeout()
GroupRpcDispatchercallMethodOnXXX methods that don't specify a
methodTimeout parameter will wait for a response.getMethodCallTimeout in interface GroupRpcDispatcherpublic void setMethodCallTimeout(long timeout)
public void setGroupName(String groupName)
public void setChannel(org.jgroups.Channel channel)
public void start()
throws Exception
start in class AsynchronousService<CoreGroupCommunicationService>Exceptionpublic void stop()
stop in class AsynchronousService<CoreGroupCommunicationService>public void destroy()
public org.jboss.as.clustering.impl.CoreGroupCommunicationService.State getState()
protected void destroyService()
protected org.jgroups.Channel createChannel()
protected org.jgroups.Channel getChannel()
protected void registerGroupMembershipListener(GroupMembershipListener listener, boolean sync)
protected void unregisterGroupMembershipListener(GroupMembershipListener listener, boolean sync)
Copyright © 2013 JBoss, a division of Red Hat, Inc.. All Rights Reserved.