Class AbstractLauncher<T extends Comparable<T>>

java.lang.Object
org.apache.geode.distributed.AbstractLauncher<T>
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
LocatorLauncher, ServerLauncher

public abstract class AbstractLauncher<T extends Comparable<T>> extends Object implements Runnable
The AbstractLauncher class is a base class for implementing various launchers to construct and run different GemFire processes, like Cache Servers, Locators, Managers, HTTP servers and so on.
Since:
GemFire 7.0
See Also:
  • Field Details

    • MEMBER_NAME_ERROR_MESSAGE

      public static final String MEMBER_NAME_ERROR_MESSAGE
      See Also:
    • WORKING_DIRECTORY_OPTION_NOT_VALID_ERROR_MESSAGE

      public static final String WORKING_DIRECTORY_OPTION_NOT_VALID_ERROR_MESSAGE
      See Also:
    • WORKING_DIRECTORY_NOT_FOUND_ERROR_MESSAGE

      public static final String WORKING_DIRECTORY_NOT_FOUND_ERROR_MESSAGE
      See Also:
    • DEFAULT_FORCE

      @Immutable protected static final Boolean DEFAULT_FORCE
    • READ_PID_FILE_TIMEOUT_MILLIS

      @Deprecated protected static final long READ_PID_FILE_TIMEOUT_MILLIS
      Deprecated.
      This timeout is no longer needed.
      See Also:
    • DEFAULT_WORKING_DIRECTORY

      public static final String DEFAULT_WORKING_DIRECTORY
    • SIGNAL_HANDLER_REGISTRATION_SYSTEM_PROPERTY

      public static final String SIGNAL_HANDLER_REGISTRATION_SYSTEM_PROPERTY
      See Also:
    • OPTION_PREFIX

      protected static final String OPTION_PREFIX
      See Also:
    • running

      protected final transient AtomicBoolean running
    • logger

      @Deprecated protected Logger logger
      Deprecated.
      Please use Log4J 2 instead.
  • Constructor Details

    • AbstractLauncher

      public AbstractLauncher()
  • Method Details

    • assertPortAvailable

      protected static void assertPortAvailable(int port) throws BindException
      Asserts that the specified port is available on all network interfaces on this local system.
      Parameters:
      port - an integer indicating the network port to listen for client network requests.
      Throws:
      BindException - if the network port is not available.
    • assertPortAvailable

      protected static void assertPortAvailable(InetAddress bindAddress, int port) throws BindException
      Asserts that the specified port is available on the specified network interface, indicated by it's assigned IP address, on this local system.
      Parameters:
      bindAddress - an InetAddress indicating the bounded network interface to determine whether the service port is available or not.
      port - an integer indicating the network port to listen for client network requests.
      Throws:
      BindException - if the network address and port are not available. Address defaults to localhost (or all network interfaces on the local system) if null.
      See Also:
      • AvailablePort
    • isSet

      protected static boolean isSet(Properties properties, String propertyName)
      Determines whether the specified property with name is set to a value in the referenced Properties. The property is considered "set" if the String value of the property is not non-null, non-empty and non-blank. Therefore, the Properties may "have" a property with name, but having no value as determined by this method.
      Parameters:
      properties - the Properties used in determining whether the given property is set.
      propertyName - a String indicating the name of the property to check if set.
      Returns:
      a boolean indicating whether the specified property with name has been given a value in the referenced Properties.
      See Also:
    • loadGemFireProperties

      protected static Properties loadGemFireProperties(URL url)
      Loads the GemFire properties at the specified URL.
      Parameters:
      url - the URL to the gemfire.properties to load.
      Returns:
      a Properties instance populated with the gemfire.properties.
      See Also:
    • isDebugging

      public boolean isDebugging()
      Determines whether the Locator launcher is in debug mode.
      Returns:
      a boolean to indicate whether the Locator launcher is in debug mode.
      See Also:
    • setDebug

      public void setDebug(boolean debug)
      Sets the debug mode of the GemFire launcher class. This mutable property of the launcher enables the user to turn the debug mode on and off programmatically.
      Parameters:
      debug - a boolean used to enable or disable debug mode.
      See Also:
    • isRunning

      public boolean isRunning()
      Determines whether the Locator referenced by this launcher is running.
      Returns:
      a boolean valued indicating if the referenced Locator is running.
    • getDistributedSystemProperties

      protected Properties getDistributedSystemProperties()
      Creates a Properties object with configuration settings that the launcher has that should take precedence over anything the user has defined in their gemfire properties file.
      Returns:
      a Properties object with GemFire properties that the launcher has defined.
      See Also:
    • getDistributedSystemProperties

      protected Properties getDistributedSystemProperties(Properties defaults)
      Creates a Properties object with configuration settings that the launcher has that should take precedence over anything the user has defined in their gemfire properties file.
      Parameters:
      defaults - default GemFire Distributed System properties as configured in the Builder.
      Returns:
      a Properties object with GemFire properties that the launcher has defined.
      See Also:
    • getLogFile

      protected File getLogFile()
      Gets a File reference with the path to the log file for the process.
      Returns:
      a File reference to the path of the log file for the process.
    • getLogFileCanonicalPath

      protected String getLogFileCanonicalPath()
      Gets the fully qualified canonical path of the log file for the process.
      Returns:
      a String value indicating the canonical path of the log file for the process.
    • getLogFileName

      public abstract String getLogFileName()
      Gets the name of the log file used to log information about this GemFire service.
      Returns:
      a String value indicating the name of this GemFire service's log file.
    • getMember

      public String getMember()
      Gets the name or ID of the member in the GemFire distributed system. This method prefers name if specified, otherwise the ID is returned. If name was not specified to the Builder that created this Launcher and this call is not in-process, then null is returned.
      Returns:
      a String value indicating the member's name if specified, otherwise the member's ID is returned if this call is made in-process, or finally, null is returned if neither name name was specified or the call is out-of-process.
      See Also:
    • getMemberId

      public String getMemberId()
      Gets the ID of the member in the GemFire distributed system as determined and assigned by GemFire when the member process joins the distributed system. Note, this call only works if the API is used in-process.
      Returns:
      a String value indicating the ID of the member in the GemFire distributed system.
    • getMemberName

      public String getMemberName()
      Gets the name of the member in the GemFire distributed system as determined by the 'name' GemFire property. Note, this call only works if the API is used in-process.
      Returns:
      a String value indicating the name of the member in the GemFire distributed system.
    • getPid

      public abstract Integer getPid()
      Gets the user-specified process ID (PID) of the running GemFire service that AbstractLauncher implementations can use to determine status, or stop the service.
      Returns:
      an Integer value indicating the process ID (PID) of the running GemFire service.
    • getServiceName

      public abstract String getServiceName()
      Gets the name of the GemFire service.
      Returns:
      a String indicating the name of the GemFire service.
    • getWorkingDirectory

      public String getWorkingDirectory()
      Gets the working directory pathname in which the process will be run.
      Returns:
      a String value indicating the pathname of the Server's working directory.
    • debug

      protected void debug(String message, Object... args)
      Prints the specified debug message to standard output, replacing any placeholder values with the specified arguments on output, if debugging has been enabled.
      Parameters:
      message - the String value written to standard output.
      args - an Object array containing arguments to replace the placeholder values in the message.
      See Also:
    • debug

      protected void debug(Throwable t)
      Prints the stack trace of the given Throwable to standard err if debugging has been enabled.
      Parameters:
      t - the Throwable who's stack trace is printed to standard err.
      See Also:
    • info

      protected void info(Object message, Object... args)
      Prints the specified informational message to standard out, replacing any placeholder values with the specified arguments on output.
      Parameters:
      message - the String value written to standard out.
      args - an Object array containing arguments to replace the placeholder values in the message.
      See Also:
    • redirectOutput

      protected void redirectOutput(DistributedSystem distributedSystem) throws IOException
      Redirects the standard out and standard err to the configured log file as specified in the GemFire distributed system properties.
      Parameters:
      distributedSystem - the GemFire model for a distributed system.
      Throws:
      IOException - if the standard out and err redirection was unsuccessful.
    • version

      public String version()
      Gets the version of GemFire currently running.
      Returns:
      a String representation of GemFire's version.