Class MainReplicationService

  • All Implemented Interfaces:
    Service

    public class MainReplicationService
    extends BaseService
    A kernel-level service to manage a ring of Main Containers, keeping the various replicas in sync and providing failure detection and recovery to make JADE tolerate Main Container crashes.
    Author:
    Giovanni Rimassa - FRAMeTech s.r.l.
    • Constructor Detail

      • MainReplicationService

        public MainReplicationService()
    • Method Detail

      • init

        public void init​(AgentContainer ac,
                         Profile p)
                  throws ProfileException
        Description copied from interface: Service
        Performs the passive initialization step of the service. This method is called before activating the service. Its role should be simply the one of a constructor, setting up the internal data as needed. Service implementations should not use the Service Manager and Service Finder facilities from within this method. A distributed initialization protocol, if needed, should be exectuted within the boot() method.
        Specified by:
        init in interface Service
        Overrides:
        init in class BaseService
        Parameters:
        ac - The agent container this service is activated on.
        p - The configuration profile for this service.
        Throws:
        ProfileException - If the given profile is not valid.
      • getName

        public String getName()
        Description copied from interface: Service
        Retrieve the name of this service, that can be used to look up its slices in the Service Finder.
        Returns:
        The name of this service.
        See Also:
        ServiceFinder
      • getHorizontalInterface

        public Class<?> getHorizontalInterface()
        Description copied from class: BaseService
        This should be properly implemented by the services that have non-empty slices.
        Specified by:
        getHorizontalInterface in interface Service
        Overrides:
        getHorizontalInterface in class BaseService
        Returns:
        A Class object, representing the interface that is implemented by the slices of this service. Let s be the Class object corresponding to the Service.Slice interface, and let c be the returned Class object. Then, the two following conditions must hold:
        1. c.isInterface() == true
        2. s.isAssignableFrom(c) == true
      • getLocalSlice

        public Service.Slice getLocalSlice()
        Description copied from class: BaseService
        This should be properly implemented by the services that have non-empty slices.
        Specified by:
        getLocalSlice in interface Service
        Overrides:
        getLocalSlice in class BaseService
        Returns:
        The slice of this service that resides on the local platform node, or null if no such slice exists.
      • getCommandFilter

        public Filter getCommandFilter​(boolean direction)
        Description copied from class: BaseService
        This should be properly implemented by the services that have filters. Note that when called multiple times with the same value of the direction parameter this method MUST always return the same object!
        Specified by:
        getCommandFilter in interface Service
        Overrides:
        getCommandFilter in class BaseService
        Parameters:
        direction - One of the two constants Filter.INCOMING and Filter.OUTGOING, distinguishing between the two filter chains managed by the command processor.
        Returns:
        A Filter object, used by this service to intercept and process kernel-level commands. If the service does not wish to install a command filter for one or both directions, it can just return null when appropriate.
        See Also:
        CommandProcessor
      • getOwnedCommands

        public String[] getOwnedCommands()
        Description copied from class: BaseService
        This should be properly implemented by the services that owns vertival commands.
        Specified by:
        getOwnedCommands in interface Service
        Overrides:
        getOwnedCommands in class BaseService
        Returns:
        An array containing the names of all the vertical commands this service wants to own. If this service has no such commands (it acts purely as a command filter), it can return an empty array, or null as well.
        See Also:
        jade.core.Service#getCommandSink()
      • boot

        public void boot​(Profile p)
                  throws ServiceException
        Description copied from interface: Service
        Performs the active initialization step of a kernel-level service. When JADE kernel calls this method, the service has already been already associated with its container and registered with the Service Manager.
        Specified by:
        boot in interface Service
        Overrides:
        boot in class BaseService
        Parameters:
        p - The configuration profile for this service.
        Throws:
        ServiceException - If a problem occurs during service initialization.
      • shutdown

        public void shutdown()
        Description copied from interface: Service
        Performs the shutdown step of a kernel-level service. The JADE kernel calls this method just before uninstalling this service
        Specified by:
        shutdown in interface Service
        Overrides:
        shutdown in class BaseService
      • checkConnectivity

        protected int checkConnectivity​(Node unreachableNode)
        This method is invoked when the monitored main node remains unreachable for too long and is therefore considered dead. The default implementation simply returns REMOVE_NODE so that the node is removed. Subclasses may redefine this method to implement application-specific checks aimed at detecting whether the unreachability depends on a real death or on temporary network problems and returns different actions according to the situation.
        Parameters:
        unreachableNode - The node that is considered dead due to long unreachability
        Returns:
        One of REMOVE_NODE, WAIT or SUICIDE.
      • dump

        public String dump​(String key)
        Description copied from class: BaseService
        This method can be redefined to support service internal data inspection by means of the ContainerMonitorAgent included in the misc add-on. The default implementation just dumps the map of cached slices
        Overrides:
        dump in class BaseService
        Parameters:
        key - A hint indicating which service data should be dumped
        Returns:
        A string representation of the service internal data