Interface ServerManager

All Known Implementing Classes:
DomainManager, StandaloneManager

public interface ServerManager
A simple manager for various interactions with a potentially running server.
Author:
James R. Perkins
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    A builder used to build a ServerManager.
  • Method Summary

    Modifier and Type
    Method
    Description
    Creates a builder to build a server manager.
    org.jboss.as.controller.client.ModelControllerClient
    Returns the client associated with this server manager.
    Returns the container description for the running server.
    Returns the deployment manager for the server.
    void
    Reloads the server and returns immediately.
    void
    executeReload(org.jboss.dmr.ModelNode reloadOp)
    Reloads the server and returns immediately.
    Attempts to find the controlling process.
    boolean
    Checks to see if a server is running.
    static boolean
    isRunning(org.jboss.as.controller.client.ModelControllerClient client)
    Checks if a server is running regardless if it is a standalone or domain server.
    static boolean
    Checks whether the directory is a valid home directory for a server.
    static boolean
    Checks whether the directory is a valid home directory for a server.
    Determines the servers "launch-type".
    launchType(org.jboss.as.controller.client.ModelControllerClient client)
    Returns the "launch-type" attribute of a server.
    void
    Checks if the container status is "reload-required" and if it's the case, executes reload and waits for completion with a 10 second timeout.
    void
    reloadIfRequired(long timeout, TimeUnit unit)
    Checks if the container status is "reload-required" and if it's the case, executes reload and waits for completion.
    Gets the "server-state" for standalone servers or the "host-state" for domain servers.
    void
    Shuts down the server.
    void
    shutdown(long timeout)
    Shuts down the server.
    Takes a snapshot of the current servers configuration and returns the relative file name of the snapshot.
    default boolean
    waitFor(long startupTimeout)
    Waits the given amount of time in seconds for a server to start.
    boolean
    waitFor(long startupTimeout, TimeUnit unit)
    Waits the given amount of time for a server to start.
  • Method Details

    • builder

      static ServerManager.Builder builder()
      Creates a builder to build a server manager.
      Returns:
      a new builder
    • findProcess

      static Optional<ProcessHandle> findProcess()
      Attempts to find the controlling process. For a domain server this, returns the process handle for the process controller. For a standalone server, this returns the standalone process handle.

      Please note this method does not work on Windows. The ProcessHandle.Info.arguments() is limited by the operating systems privileges.

      Returns:
      the process handle if one was found running
    • isValidHomeDirectory

      static boolean isValidHomeDirectory(Path path)
      Checks whether the directory is a valid home directory for a server.

      This validates the path is not null, exists, is a directory and contains a jboss-modules.jar.

      Parameters:
      path - the path to validate
      Returns:
      true if the path is valid otherwise false
    • isValidHomeDirectory

      static boolean isValidHomeDirectory(String path)
      Checks whether the directory is a valid home directory for a server.

      This validates the path is not null, exists, is a directory and contains a jboss-modules.jar.

      Parameters:
      path - the path to validate
      Returns:
      true if the path is valid otherwise false
    • isRunning

      static boolean isRunning(org.jboss.as.controller.client.ModelControllerClient client)
      Checks if a server is running regardless if it is a standalone or domain server.
      Parameters:
      client - the client used to check the server state
      Returns:
      true if a server is running, otherwise false
    • launchType

      static Optional<String> launchType(org.jboss.as.controller.client.ModelControllerClient client)
      Returns the "launch-type" attribute of a server.
      Parameters:
      client - the client used to check the launch-type attribute
      Returns:
      the servers launch-type
    • client

      org.jboss.as.controller.client.ModelControllerClient client()
      Returns the client associated with this server manager.
      Returns:
      a client to communicate with the server
    • serverState

      String serverState()
      Gets the "server-state" for standalone servers or the "host-state" for domain servers.
      Returns:
      the server-state or "failed" if an error occurred
    • launchType

      String launchType()
      Determines the servers "launch-type".
      Returns:
      the servers launch-type or "unknown" if it could not be determined
    • takeSnapshot

      String takeSnapshot() throws IOException
      Takes a snapshot of the current servers configuration and returns the relative file name of the snapshot.

      This simply executes the take-snapshot operation with no arguments.

      Returns:
      the file name of the snapshot configuration file
      Throws:
      IOException - if an error occurs executing the operation
    • containerDescription

      ContainerDescription containerDescription() throws IOException
      Returns the container description for the running server.
      Returns:
      the container description for the running server
      Throws:
      IOException - if an error occurs communicating with the server
    • deploymentManager

      DeploymentManager deploymentManager()
      Returns the deployment manager for the server.
      Returns:
      the deployment manager
    • isRunning

      boolean isRunning()
      Checks to see if a server is running.
      Returns:
      true if the server is running, otherwise false
    • waitFor

      default boolean waitFor(long startupTimeout) throws InterruptedException
      Waits the given amount of time in seconds for a server to start.

      If the process is not null and a timeout occurs the process will be destroyed.

      Parameters:
      startupTimeout - the time, in seconds, to wait for the server start
      Returns:
      true if the server is up and running, false if a timeout occurred waiting for the server to be in a running state
      Throws:
      InterruptedException - if interrupted while waiting for the server to start
    • waitFor

      boolean waitFor(long startupTimeout, TimeUnit unit) throws InterruptedException
      Waits the given amount of time for a server to start.

      If the process is not null and a timeout occurs the process will be destroyed.

      Parameters:
      startupTimeout - the time, to wait for the server start
      unit - the time unit for the startupTimeout argument
      Returns:
      true if the server is up and running, false if a timeout occurred waiting for the server to be in a running state
      Throws:
      InterruptedException - if interrupted while waiting for the server to start
    • shutdown

      void shutdown() throws IOException
      Shuts down the server.
      Throws:
      IOException - if an error occurs communicating with the server
    • shutdown

      void shutdown(long timeout) throws IOException
      Shuts down the server.
      Parameters:
      timeout - the graceful shutdown timeout, a value of -1 will wait indefinitely and a value of 0 will not attempt a graceful shutdown
      Throws:
      IOException - if an error occurs communicating with the server
    • executeReload

      void executeReload() throws IOException
      Reloads the server and returns immediately.
      Throws:
      IOException - if an error occurs communicating with the server
    • executeReload

      void executeReload(org.jboss.dmr.ModelNode reloadOp) throws IOException
      Reloads the server and returns immediately.
      Parameters:
      reloadOp - the reload operation to execute
      Throws:
      IOException - if an error occurs communicating with the server
    • reloadIfRequired

      void reloadIfRequired() throws IOException
      Checks if the container status is "reload-required" and if it's the case, executes reload and waits for completion with a 10 second timeout.
      Throws:
      IOException - if an error occurs communicating with the server
      See Also:
    • reloadIfRequired

      void reloadIfRequired(long timeout, TimeUnit unit) throws IOException
      Checks if the container status is "reload-required" and if it's the case, executes reload and waits for completion.
      Parameters:
      timeout - the time to wait for the server to reload
      unit - the time unit for the timeout argument
      Throws:
      IOException - if an error occurs communicating with the server