org.infinispan.remoting.transport.jgroups
Class JGroupsTransport

java.lang.Object
  extended by org.infinispan.remoting.transport.AbstractTransport
      extended by org.infinispan.remoting.transport.jgroups.JGroupsTransport
All Implemented Interfaces:
Lifecycle, Transport, org.jgroups.MembershipListener

public class JGroupsTransport
extends AbstractTransport
implements org.jgroups.MembershipListener

An encapsulation of a JGroups transport. JGroups transports can be configured using a variety of methods, usually by passing in one of the following properties:

These are normally passed in as Properties in GlobalConfiguration.setTransportProperties(java.util.Properties) or in the Infinispan XML configuration file.

Since:
4.0
Author:
Manik Surtani, Galder ZamarreƱo

Field Summary
protected  Address address
           
protected  ExecutorService asyncExecutor
           
protected  org.jgroups.Channel channel
           
static String CHANNEL_LOOKUP
           
protected  CountDownLatch channelConnectedLatch
           
static String CONFIGURATION_FILE
           
static String CONFIGURATION_STRING
           
static String CONFIGURATION_XML
           
protected  Address coordinator
           
protected static String DEFAULT_JGROUPS_CONFIGURATION_FILE
           
protected  InboundInvocationHandler inboundInvocationHandler
           
protected  boolean isCoordinator
           
protected  StreamingMarshaller marshaller
           
protected  List<Address> members
           
protected  CacheManagerNotifier notifier
           
protected  Address physicalAddress
           
protected  TypedProperties props
           
protected  ExecutorService remoteCommandsExecutor
           
protected  boolean startChannel
           
protected  boolean stopChannel
           
 
Fields inherited from class org.infinispan.remoting.transport.AbstractTransport
configuration
 
Constructor Summary
JGroupsTransport()
           
JGroupsTransport(org.jgroups.Channel channel)
          This form is used when the transport is created by an external source and passed in to the GlobalConfiguration.
 
Method Summary
 BackupResponse backupRemotely(Collection<XSiteBackup> backups, ReplicableCommand rpcCommand)
           
 void block()
           
 void checkTotalOrderSupported(boolean anycast)
          check if the transport has configured with total order deliver properties (has the sequencer in JGroups protocol stack.
 Address getAddress()
          Retrieves the current cache instance's network address
 org.jgroups.Channel getChannel()
           
 CommandAwareRpcDispatcher getCommandAwareRpcDispatcher()
           
 Address getCoordinator()
           
 Log getLog()
           
 List<Address> getMembers()
          Returns a list of members in the current cluster view.
 List<Address> getPhysicalAddresses()
          Retrieves the current cache instance's physical network addresses.
 int getViewId()
           
protected  void initChannel()
           
 void initialize(StreamingMarshaller marshaller, ExecutorService asyncExecutor, ExecutorService remoteCommandsExecutor, InboundInvocationHandler inboundInvocationHandler, CacheManagerNotifier notifier, GlobalComponentRegistry gcr, BackupReceiverRepository backupReceiverRepository, TimeService timeService)
          Initializes the transport with global cache configuration and transport-specific properties.
 Map<Address,Response> invokeRemotely(Collection<Address> recipients, ReplicableCommand rpcCommand, ResponseMode mode, long timeout, boolean usePriorityQueue, ResponseFilter responseFilter, boolean totalOrder, boolean anycast)
          Invokes an RPC call on other caches in the cluster.
 boolean isCoordinator()
           
 boolean isMulticastCapable()
          Tests whether the transport supports true multicast
 void start()
           
protected  void startJGroupsChannelIfNeeded()
           
 void stop()
           
 void suspect(org.jgroups.Address suspected_mbr)
           
protected static org.jgroups.Address toJGroupsAddress(Address a)
           
 void unblock()
           
 void viewAccepted(org.jgroups.View newView)
           
 void waitForChannelToConnect()
           
 
Methods inherited from class org.infinispan.remoting.transport.AbstractTransport
checkResponse, parseResponseAndAddToResponseList, setConfiguration
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONFIGURATION_STRING

public static final String CONFIGURATION_STRING
See Also:
Constant Field Values

CONFIGURATION_XML

public static final String CONFIGURATION_XML
See Also:
Constant Field Values

CONFIGURATION_FILE

public static final String CONFIGURATION_FILE
See Also:
Constant Field Values

CHANNEL_LOOKUP

public static final String CHANNEL_LOOKUP
See Also:
Constant Field Values

DEFAULT_JGROUPS_CONFIGURATION_FILE

protected static final String DEFAULT_JGROUPS_CONFIGURATION_FILE
See Also:
Constant Field Values

startChannel

protected boolean startChannel

stopChannel

protected boolean stopChannel

props

protected TypedProperties props

inboundInvocationHandler

protected InboundInvocationHandler inboundInvocationHandler

marshaller

protected StreamingMarshaller marshaller

asyncExecutor

protected ExecutorService asyncExecutor

remoteCommandsExecutor

protected ExecutorService remoteCommandsExecutor

notifier

protected CacheManagerNotifier notifier

channel

protected org.jgroups.Channel channel

address

protected Address address

physicalAddress

protected Address physicalAddress

members

protected volatile List<Address> members

coordinator

protected volatile Address coordinator

isCoordinator

protected volatile boolean isCoordinator

channelConnectedLatch

protected CountDownLatch channelConnectedLatch
Constructor Detail

JGroupsTransport

public JGroupsTransport(org.jgroups.Channel channel)
This form is used when the transport is created by an external source and passed in to the GlobalConfiguration.

Parameters:
channel - created and running channel to use

JGroupsTransport

public JGroupsTransport()
Method Detail

getLog

public Log getLog()
Specified by:
getLog in interface Transport

initialize

public void initialize(StreamingMarshaller marshaller,
                       ExecutorService asyncExecutor,
                       ExecutorService remoteCommandsExecutor,
                       InboundInvocationHandler inboundInvocationHandler,
                       CacheManagerNotifier notifier,
                       GlobalComponentRegistry gcr,
                       BackupReceiverRepository backupReceiverRepository,
                       TimeService timeService)
Initializes the transport with global cache configuration and transport-specific properties.

Parameters:
marshaller - marshaller to use for marshalling and unmarshalling
asyncExecutor - executor to use for asynchronous calls
inboundInvocationHandler - handler for invoking remotely originating calls on the local cache
notifier - notifier to use
gcr -

start

public void start()
Specified by:
start in interface Lifecycle
Specified by:
start in interface Transport

startJGroupsChannelIfNeeded

protected void startJGroupsChannelIfNeeded()

getViewId

public int getViewId()
Specified by:
getViewId in interface Transport

stop

public void stop()
Specified by:
stop in interface Lifecycle
Specified by:
stop in interface Transport

initChannel

protected void initChannel()

isCoordinator

public boolean isCoordinator()
Specified by:
isCoordinator in interface Transport
Returns:
true if the current Channel is the coordinator of the cluster.

getCoordinator

public Address getCoordinator()
Specified by:
getCoordinator in interface Transport
Returns:
the Address of the current coordinator.

waitForChannelToConnect

public void waitForChannelToConnect()

getMembers

public List<Address> getMembers()
Description copied from interface: Transport
Returns a list of members in the current cluster view.

Specified by:
getMembers in interface Transport
Returns:
a list of members. Typically, this would be defensively copied.

isMulticastCapable

public boolean isMulticastCapable()
Description copied from interface: Transport
Tests whether the transport supports true multicast

Specified by:
isMulticastCapable in interface Transport
Returns:
true if the transport supports true multicast

getAddress

public Address getAddress()
Description copied from interface: Transport
Retrieves the current cache instance's network address

Specified by:
getAddress in interface Transport
Returns:
an Address

getPhysicalAddresses

public List<Address> getPhysicalAddresses()
Description copied from interface: Transport
Retrieves the current cache instance's physical network addresses. Some implementations might differentiate between logical and physical addresses in which case, this method allows clients to query the physical ones associated with the logical address. Implementations where logical and physical address are the same will simply return a single entry List that contains the same Address as Transport.getAddress().

Specified by:
getPhysicalAddresses in interface Transport
Returns:
an List of Address

invokeRemotely

public Map<Address,Response> invokeRemotely(Collection<Address> recipients,
                                            ReplicableCommand rpcCommand,
                                            ResponseMode mode,
                                            long timeout,
                                            boolean usePriorityQueue,
                                            ResponseFilter responseFilter,
                                            boolean totalOrder,
                                            boolean anycast)
                                     throws Exception
Description copied from interface: Transport
Invokes an RPC call on other caches in the cluster.

Specified by:
invokeRemotely in interface Transport
Parameters:
recipients - a list of Addresses to invoke the call on. If this is null, the call is broadcast to the entire cluster.
rpcCommand - the cache command to invoke
mode - the response mode to use
timeout - a timeout after which to throw a replication exception.
usePriorityQueue - if true, a priority queue is used to deliver messages. May not be supported by all implementations.
responseFilter - a response filter with which to filter out failed/unwanted/invalid responses.
totalOrder - the command will be send with total order properties
anycast - used when is true, it means that it must use TOA instead of TOB.
Returns:
a map of responses from each member contacted.
Throws:
Exception - in the event of problems.

backupRemotely

public BackupResponse backupRemotely(Collection<XSiteBackup> backups,
                                     ReplicableCommand rpcCommand)
                              throws Exception
Specified by:
backupRemotely in interface Transport
Throws:
Exception

viewAccepted

public void viewAccepted(org.jgroups.View newView)
Specified by:
viewAccepted in interface org.jgroups.MembershipListener

suspect

public void suspect(org.jgroups.Address suspected_mbr)
Specified by:
suspect in interface org.jgroups.MembershipListener

block

public void block()
Specified by:
block in interface org.jgroups.MembershipListener

unblock

public void unblock()
Specified by:
unblock in interface org.jgroups.MembershipListener

toJGroupsAddress

protected static org.jgroups.Address toJGroupsAddress(Address a)

getCommandAwareRpcDispatcher

public CommandAwareRpcDispatcher getCommandAwareRpcDispatcher()

getChannel

public org.jgroups.Channel getChannel()

checkTotalOrderSupported

public final void checkTotalOrderSupported(boolean anycast)
Description copied from interface: Transport
check if the transport has configured with total order deliver properties (has the sequencer in JGroups protocol stack.

Specified by:
checkTotalOrderSupported in interface Transport
Parameters:
anycast - if true, check is Total Order protocol for distributed mode is in the protocol stack

-->

Copyright © 2013 JBoss, a division of Red Hat. All Rights Reserved.