Class DynamicClassLoader

  • All Implemented Interfaces:
    Service

    public class DynamicClassLoader
    extends java.lang.Object
    implements Service
    A service implementation for supporting dynamic class transfer at a node. When started, JFTP server and ClassMananger processes will be spawned and send/receive filters created. To support dynamic class loading over a given channel, plug the TX filter into the sending end and the RX filter into the receiving end. The channel can then be used normally.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Filter getChannelRxFilter()
      Returns the RX filter to be used at the receiving end of a channel if dynamic class loading is to be supported over that channel.
      Filter getChannelTxFilter()
      Returns the TX filter to be used at the sending end of a channel if dynamic class loading is to be supported over that channel.
      static Filter getNonDynamicClassLoadingRxFilter()
      An alternative RX filter that does not support dynamic class loading but will properly unmarshal objects wrapped up by a TX filter.
      ServiceUserObject getUserObject()
      Returns the service user object.
      boolean init​(ServiceSettings settings)
      Initializes the dynamic loader service.
      boolean isRunning()
      Returns true iff the service is running.
      boolean start()
      Starts the dynamic loader service by spawning ClassManager and JFTP processes.
      boolean stop()
      Stops the dynamic loader service.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • running

        private boolean running
        Stores the current state of the service.
      • channelTxFilter

        private DataSerializationFilter channelTxFilter
        The TX filter created when the service started, returned by getChannelTxFilter.
      • channelRxFilter

        private DeserializeChannelFilter channelRxFilter
        The RX filter created when the service started, returned by getChannelRxFilter.
      • cm

        private ClassManager cm
        The class manager process started by the service.
      • nonDynamicClassLoadingRxFilter

        private static Filter nonDynamicClassLoadingRxFilter
        The alternative RX filter that does not support dynamic class loading, returned by getNonDynamicClassLoadingRxFilter.
    • Constructor Detail

      • DynamicClassLoader

        public DynamicClassLoader()
    • Method Detail

      • start

        public boolean start()
        Starts the dynamic loader service by spawning ClassManager and JFTP processes.
        Specified by:
        start in interface Service
        Returns:
        true if the service started successfully.
      • stop

        public boolean stop()
        Stops the dynamic loader service.
        Specified by:
        stop in interface Service
        Returns:
        true iff the service has successfully stopped.
      • init

        public boolean init​(ServiceSettings settings)
        Initializes the dynamic loader service.
        Specified by:
        init in interface Service
        Parameters:
        settings - The settings used by the service.
        Returns:
        true iff the service has been initialized.
      • isRunning

        public boolean isRunning()
        Returns true iff the service is running.
        Specified by:
        isRunning in interface Service
        Returns:
        true iff the service is currently running.
      • getUserObject

        public ServiceUserObject getUserObject()
                                        throws java.lang.SecurityException
        Returns the service user object.
        Specified by:
        getUserObject in interface Service
        Returns:
        a ServiceUserObject.
        Throws:
        java.lang.SecurityException - if the calling Thread does not have access to the object.
      • getChannelTxFilter

        public Filter getChannelTxFilter()
        Returns the TX filter to be used at the sending end of a channel if dynamic class loading is to be supported over that channel. If there is a TX filter at the sending end, there must be a RX filter at the receiving end.
      • getChannelRxFilter

        public Filter getChannelRxFilter()
        Returns the RX filter to be used at the receiving end of a channel if dynamic class loading is to be supported over that channel. The filter returned is safe to use if there is no TX filter at the sending end.
      • getNonDynamicClassLoadingRxFilter

        public static Filter getNonDynamicClassLoadingRxFilter()
        An alternative RX filter that does not support dynamic class loading but will properly unmarshal objects wrapped up by a TX filter.