Package org.wildfly.core.launcher
Class StandaloneCommandBuilder
- java.lang.Object
-
- org.wildfly.core.launcher.StandaloneCommandBuilder
-
- All Implemented Interfaces:
CommandBuilder
public class StandaloneCommandBuilder extends Object implements CommandBuilder
Builds a list of commands used to launch a standalone instance of WildFly. This builder is not thread safe and the same instance should not be used in multiple threads.- Author:
- James R. Perkins
-
-
Field Summary
Fields Modifier and Type Field Description protected org.wildfly.core.launcher.Environmentenvironment
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StandaloneCommandBuilderaddJavaOption(String jvmArg)Adds a JVM argument to the command ignoringnullarguments.StandaloneCommandBuilderaddJavaOptions(Iterable<String> javaOpts)Adds the collection of JVM arguments to the command.StandaloneCommandBuilderaddJavaOptions(String... javaOpts)Adds the array of JVM arguments to the command.TaddModuleDir(String moduleDir)Adds a directory to the collection of module paths.TaddModuleDirs(Iterable<String> moduleDirs)Adds all the module directories to the collection of module paths.TaddModuleDirs(String... moduleDirs)Adds all the module directories to the collection of module paths.StandaloneCommandBuilderaddModuleOption(String arg)Adds an option which will be passed to JBoss Modules.StandaloneCommandBuilderaddModuleOptions(Iterable<String> args)Adds the options which will be passed to JBoss Modules.StandaloneCommandBuilderaddModuleOptions(String... args)Adds the options which will be passed to JBoss Modules.TaddPropertiesFile(String file)Adds a properties file to be passed to the server.TaddPropertiesFile(Path file)Adds a properties file to be passed to the server.StandaloneCommandBuilderaddSecurityProperties(Map<String,String> properties)Adds all the security properties to be passed to the server.StandaloneCommandBuilderaddSecurityProperty(String key)Adds a security property to be passed to the server with anullvalue.StandaloneCommandBuilderaddSecurityProperty(String key, String value)Adds a security property to be passed to the server.protected voidaddServerArg(String key, String value)TaddServerArgument(String arg)Adds an argument to be passed to the server ignore the argument ifnull.TaddServerArguments(Iterable<String> args)Adds the arguments to the collection of arguments that will be passed to the server ignoring anynullarguments.TaddServerArguments(String... args)Adds the arguments to the collection of arguments that will be passed to the server ignoring anynullarguments.protected static voidaddSystemPropertyArg(List<String> cmd, String key, Object value)List<String>build()A list of commands, including ajavaexecutable, required to launch WildFly instance.List<String>buildArguments()A list of command arguments required to launch WildFly instance.PathgetBaseDirectory()Returns the base directory for the server.protected StringgetBootLogArgument(String fileName)Returns the command line argument that specifies the path the log file that should be used.PathgetConfigurationDirectory()Returns the configuration directory for the server.PathgetJavaHome()Returns the Java home directory where the java executable command can be found.List<String>getJavaOptions()Returns the JVM arguments.PathgetLogDirectory()Returns the log directory for the server.protected StringgetLoggingPropertiesArgument(String fileName)Returns the command line argument that specifies the logging configuration.StringgetModulePaths()Returns the modules paths used on the command line.StringgetModulesJarName()Returns the normalized path to thejboss-modules.jarfor launching the server.StringgetReadOnlyServerConfiguration()Returns the configuration filesetornullif one was not set.protected StringgetServerArg(String key)Returns the first argument from the server arguments.List<String>getServerArguments()A collection of server command line arguments.StringgetServerConfiguration()Returns the configuration filesetornullif one was not set.protected StandaloneCommandBuildergetThis()Returns the concrete builder.PathgetWildFlyHome()Returns the home directory used.protected static booleanisJavaSecurityManagerConfigured(org.wildfly.core.launcher.Arguments.Argument argument)protected PathnormalizePath(String path)Resolves the path to the path relative to the WildFly home directory.protected PathnormalizePath(Path parent, String path)Resolves the path relative to the parent and normalizes it.static StandaloneCommandBuilderof(String wildflyHome)Creates a command builder for a standalone instance of WildFly.static StandaloneCommandBuilderof(Path wildflyHome)Creates a command builder for a standalone instance of WildFly.TsetAdminOnly()Sets the server argument--admin-only.StandaloneCommandBuildersetBaseDirectory(String baseDir)Sets the base directory to use.StandaloneCommandBuildersetBaseDirectory(Path baseDir)Sets the base directory to use.TsetBindAddressHint(String address)Sets the system propertyjboss.bind.addressto the address given.TsetBindAddressHint(String interfaceName, String address)Sets the system propertyjboss.bind.address.$INTERFACEto the address given where$INTERFACEis theinterfaceNameparameter.TsetConfigurationDirectory(String path)Sets the configuration directory to be used for configuration files.TsetConfigurationDirectory(Path path)Sets the configuration directory to be used for configuration files.StandaloneCommandBuildersetDebug()Sets the debug argument for the JVM with a default port of8787.StandaloneCommandBuildersetDebug(boolean suspend, int port)Sets the debug JPDA remote socket debugging argument.StandaloneCommandBuildersetDebug(int port)Sets the debug argument for the JVM.StandaloneCommandBuildersetGitRepository(String gitRepository, String gitBranch, String gitAuthentication)StandaloneCommandBuildersetJavaHome(String javaHome)Sets the Java home where the Java executable can be found.StandaloneCommandBuildersetJavaHome(Path javaHome)Sets the Java home where the Java executable can be found.StandaloneCommandBuildersetJavaOptions(Iterable<String> javaOpts)Sets the JVM arguments to use.StandaloneCommandBuildersetJavaOptions(String... javaOpts)Sets the JVM arguments to use.TsetLogDirectory(String path)Sets the log directory to be used for log files.TsetLogDirectory(Path path)Sets the log directory to be used for log files.TsetModuleDirs(Iterable<String> moduleDirs)Replaces any previously set module directories with the collection of module directories.TsetModuleDirs(String... moduleDirs)Replaces any previously set module directories with the array of module directories.StandaloneCommandBuildersetModuleOptions(Iterable<String> args)Clears the current module options and adds the options which will be passed to JBoss Modules.StandaloneCommandBuildersetModuleOptions(String... args)Clears the current module options and adds the options which will be passed to JBoss Modules.StandaloneCommandBuildersetModulesLockless(boolean b)Set totrueto use JBoss Modules lockless mode.StandaloneCommandBuildersetModulesMetrics(boolean b)Set totrueto gather metrics for JBoss Modules.TsetMulticastAddressHint(String address)Sets the system propertyjboss.default.multicast.addressto the address given.TsetPropertiesFile(String file)Sets the properties file to use for the server ornullto remove the file.TsetPropertiesFile(Path file)Sets the properties file to use for the server ornullto remove the file.StandaloneCommandBuildersetServerConfiguration(String configFile)Sets the configuration file for the server.StandaloneCommandBuildersetServerReadOnlyConfiguration(String configFile)Sets the configuration file for the server.protected voidsetSingleServerArg(String key, String value)TsetStartSuspended()Sets the server argument--start-mode=suspend.TsetUseSecurityManager(boolean useSecMgr)Sets whether or not the security manager option,-secmgr, should be used.StandaloneCommandBuildersetYamlFiles(Path[] yamlFiles)booleanuseSecurityManager()Indicates whether or no a security manager should be used for the server launched.protected static PathvalidateAndNormalizeDir(String path, boolean allowNull)protected static PathvalidateAndNormalizeDir(Path path, boolean allowNull)
-
-
-
Method Detail
-
of
public static StandaloneCommandBuilder of(Path wildflyHome)
Creates a command builder for a standalone instance of WildFly.- Parameters:
wildflyHome- the path to the WildFly home directory- Returns:
- a new builder
-
of
public static StandaloneCommandBuilder of(String wildflyHome)
Creates a command builder for a standalone instance of WildFly.- Parameters:
wildflyHome- the path to the WildFly home directory- Returns:
- a new builder
-
addJavaOption
public StandaloneCommandBuilder addJavaOption(String jvmArg)
Adds a JVM argument to the command ignoringnullarguments.- Parameters:
jvmArg- the JVM argument to add- Returns:
- the builder
-
addJavaOptions
public StandaloneCommandBuilder addJavaOptions(String... javaOpts)
Adds the array of JVM arguments to the command.- Parameters:
javaOpts- the array of JVM arguments to add,nullarguments are ignored- Returns:
- the builder
-
addJavaOptions
public StandaloneCommandBuilder addJavaOptions(Iterable<String> javaOpts)
Adds the collection of JVM arguments to the command.- Parameters:
javaOpts- the collection of JVM arguments to add,nullarguments are ignored- Returns:
- the builder
-
setJavaOptions
public StandaloneCommandBuilder setJavaOptions(Iterable<String> javaOpts)
Sets the JVM arguments to use. This overrides any default JVM arguments that would normally be added and ignoresnullvalues in the collection. If the collection isnullthe JVM arguments will be cleared and no new arguments will be added.- Parameters:
javaOpts- the JVM arguments to use- Returns:
- the builder
-
setJavaOptions
public StandaloneCommandBuilder setJavaOptions(String... javaOpts)
Sets the JVM arguments to use. This overrides any default JVM arguments that would normally be added and ignoresnullvalues in the array. If the array isnullthe JVM arguments will be cleared and no new arguments will be added.- Parameters:
javaOpts- the JVM arguments to use- Returns:
- the builder
-
getJavaOptions
public List<String> getJavaOptions()
Returns the JVM arguments.- Returns:
- the JVM arguments
-
addModuleOption
public StandaloneCommandBuilder addModuleOption(String arg)
Adds an option which will be passed to JBoss Modules.Note that
-mpor--modulepathis not supported. UseaddModuleDir(String)to add a module directory.- Parameters:
arg- the argument to add- Returns:
- the builder
-
addModuleOptions
public StandaloneCommandBuilder addModuleOptions(String... args)
Adds the options which will be passed to JBoss Modules.Note that
-mpor--modulepathis not supported. UseaddModuleDirs(String...)to add a module directory.- Parameters:
args- the argument to add- Returns:
- the builder
-
addModuleOptions
public StandaloneCommandBuilder addModuleOptions(Iterable<String> args)
Adds the options which will be passed to JBoss Modules.Note that
-mpor--modulepathis not supported. UseaddModuleDirs(Iterable)to add a module directory.- Parameters:
args- the argument to add- Returns:
- the builder
-
setModuleOptions
public StandaloneCommandBuilder setModuleOptions(String... args)
Clears the current module options and adds the options which will be passed to JBoss Modules.Note that
-mpor--modulepathis not supported. UseaddModuleDirs(String...)to add a module directory.- Parameters:
args- the argument to use- Returns:
- the builder
-
setModuleOptions
public StandaloneCommandBuilder setModuleOptions(Iterable<String> args)
Clears the current module options and adds the options which will be passed to JBoss Modules.Note that
-mpor--modulepathis not supported. UseaddModuleDirs(Iterable)to add a module directory.- Parameters:
args- the argument to use- Returns:
- the builder
-
setDebug
public StandaloneCommandBuilder setDebug()
Sets the debug argument for the JVM with a default port of8787.- Returns:
- the builder
-
setDebug
public StandaloneCommandBuilder setDebug(int port)
Sets the debug argument for the JVM.- Parameters:
port- the port to listen on- Returns:
- the builder
-
setDebug
public StandaloneCommandBuilder setDebug(boolean suspend, int port)
Sets the debug JPDA remote socket debugging argument.- Parameters:
suspend-trueto suspend otherwisefalseport- the port to listen on- Returns:
- the builder
-
setBaseDirectory
public StandaloneCommandBuilder setBaseDirectory(String baseDir)
Sets the base directory to use. The default is$JBOSS_HOME/standalone.- Parameters:
baseDir- the base directory ornullto resolve the base directory- Returns:
- the builder
-
setBaseDirectory
public StandaloneCommandBuilder setBaseDirectory(Path baseDir)
Sets the base directory to use. The default is$JBOSS_HOME/standalone.- Parameters:
baseDir- the base directory ornullto resolve the base directory- Returns:
- the builder
-
setJavaHome
public StandaloneCommandBuilder setJavaHome(String javaHome)
Sets the Java home where the Java executable can be found.- Parameters:
javaHome- the Java home ornullto use te system propertyjava.home- Returns:
- the builder
-
setJavaHome
public StandaloneCommandBuilder setJavaHome(Path javaHome)
Sets the Java home where the Java executable can be found.- Parameters:
javaHome- the Java home ornullto use te system propertyjava.home- Returns:
- the builder
-
setModulesLockless
public StandaloneCommandBuilder setModulesLockless(boolean b)
Set totrueto use JBoss Modules lockless mode.- Parameters:
b-trueto use lockless mode- Returns:
- the builder
-
setModulesMetrics
public StandaloneCommandBuilder setModulesMetrics(boolean b)
Set totrueto gather metrics for JBoss Modules.- Parameters:
b-trueto gather metrics for JBoss Modules.- Returns:
- this builder
-
setServerConfiguration
public StandaloneCommandBuilder setServerConfiguration(String configFile)
Sets the configuration file for the server. The file must be in theconfigurationdirectory. A value ofnullwill remove the configuration file. This will override any previous value set viaaddServerArgument(String).- Parameters:
configFile- the configuration file name ornullto remove the configuration file- Returns:
- the builder
-
getServerConfiguration
public String getServerConfiguration()
Returns the configuration filesetornullif one was not set.- Returns:
- the configuration file set or
nullif not set
-
setServerReadOnlyConfiguration
public StandaloneCommandBuilder setServerReadOnlyConfiguration(String configFile)
Sets the configuration file for the server. The file must be in theconfigurationdirectory. A value ofnullwill remove the configuration file. This will override any previous value set viaaddServerArgument(String).- Parameters:
configFile- the configuration file name ornullto remove the configuration file- Returns:
- the builder
-
getReadOnlyServerConfiguration
public String getReadOnlyServerConfiguration()
Returns the configuration filesetornullif one was not set.- Returns:
- the configuration file set or
nullif not set
-
addSecurityProperty
public StandaloneCommandBuilder addSecurityProperty(String key)
Adds a security property to be passed to the server with anullvalue.- Parameters:
key- the property key- Returns:
- the builder
-
addSecurityProperty
public StandaloneCommandBuilder addSecurityProperty(String key, String value)
Adds a security property to be passed to the server.- Parameters:
key- the property keyvalue- the property value- Returns:
- the builder
-
addSecurityProperties
public StandaloneCommandBuilder addSecurityProperties(Map<String,String> properties)
Adds all the security properties to be passed to the server.- Parameters:
properties- a map of the properties to add,nullvalues are allowed in the map- Returns:
- the builder
-
setGitRepository
public StandaloneCommandBuilder setGitRepository(String gitRepository, String gitBranch, String gitAuthentication)
-
setYamlFiles
public StandaloneCommandBuilder setYamlFiles(Path[] yamlFiles)
-
buildArguments
public List<String> buildArguments()
Description copied from interface:CommandBuilderA list of command arguments required to launch WildFly instance. These are the arguments the follow ajavaexecutable command.- Specified by:
buildArgumentsin interfaceCommandBuilder- Returns:
- the list of arguments required to launch WildFly
-
build
public List<String> build()
Description copied from interface:CommandBuilderA list of commands, including ajavaexecutable, required to launch WildFly instance.- Specified by:
buildin interfaceCommandBuilder- Returns:
- the list of arguments required to launch WildFly
-
getJavaHome
public Path getJavaHome()
Returns the Java home directory where the java executable command can be found. If the directory was not set the system property value,java.home, should be used.- Returns:
- the path to the Java home directory
-
getBaseDirectory
public Path getBaseDirectory()
Returns the base directory for the server. Example: For standalone the base directory would be$JBOSS_HOME/standalone.- Returns:
- the base directory
-
getThis
protected StandaloneCommandBuilder getThis()
Returns the concrete builder.- Returns:
- the concrete builder
-
setUseSecurityManager
public T setUseSecurityManager(boolean useSecMgr)
Sets whether or not the security manager option,-secmgr, should be used.- Parameters:
useSecMgr-trueto use the a security manager, otherwisefalse- Returns:
- the builder
-
useSecurityManager
public boolean useSecurityManager()
Indicates whether or no a security manager should be used for the server launched.- Returns:
trueif a security manager should be used, otherwisefalse
-
addModuleDir
public T addModuleDir(String moduleDir)
Adds a directory to the collection of module paths.- Parameters:
moduleDir- the module directory to add- Returns:
- the builder
- Throws:
IllegalArgumentException- if the path isnull
-
addModuleDirs
public T addModuleDirs(String... moduleDirs)
Adds all the module directories to the collection of module paths.- Parameters:
moduleDirs- an array of module paths to add- Returns:
- the builder
- Throws:
IllegalArgumentException- if any of the module paths are invalid ornull
-
addModuleDirs
public T addModuleDirs(Iterable<String> moduleDirs)
Adds all the module directories to the collection of module paths.- Parameters:
moduleDirs- a collection of module paths to add- Returns:
- the builder
- Throws:
IllegalArgumentException- if any of the module paths are invalid ornull
-
setModuleDirs
public T setModuleDirs(Iterable<String> moduleDirs)
Replaces any previously set module directories with the collection of module directories. The default module directory will NOT be used if this method is invoked.- Parameters:
moduleDirs- the collection of module directories to use- Returns:
- the builder
- Throws:
IllegalArgumentException- if any of the module paths are invalid ornull
-
setModuleDirs
public T setModuleDirs(String... moduleDirs)
Replaces any previously set module directories with the array of module directories. The default module directory will NOT be used if this method is invoked.- Parameters:
moduleDirs- the array of module directories to use- Returns:
- the builder
- Throws:
IllegalArgumentException- if any of the module paths are invalid ornull
-
getModulePaths
public String getModulePaths()
Returns the modules paths used on the command line.- Returns:
- the paths separated by the
path separator
-
getLogDirectory
public Path getLogDirectory()
Returns the log directory for the server.- Returns:
- the log directory
-
setLogDirectory
public T setLogDirectory(String path)
Sets the log directory to be used for log files. If set tonull, the default, the log directory will be resolved.- Parameters:
path- the path to the log directory ornullto have the log directory resolved- Returns:
- the builder
- Throws:
IllegalArgumentException- if the directory is not a valid directory
-
setLogDirectory
public T setLogDirectory(Path path)
Sets the log directory to be used for log files. If set tonull, the default, the log directory will be resolved.- Parameters:
path- the path to the log directory ornullto have the log directory resolved- Returns:
- the builder
- Throws:
IllegalArgumentException- if the directory is not a valid directory
-
getConfigurationDirectory
public Path getConfigurationDirectory()
Returns the configuration directory for the server.- Returns:
- the configuration directory
-
setConfigurationDirectory
public T setConfigurationDirectory(String path)
Sets the configuration directory to be used for configuration files. If set tonull, the default, the configuration directory will be resolved.- Parameters:
path- the path to the configuration directory ornullto have the configuration directory resolved- Returns:
- the builder
- Throws:
IllegalArgumentException- if the directory is not a valid directory
-
setConfigurationDirectory
public T setConfigurationDirectory(Path path)
Sets the configuration directory to be used for configuration files. If set tonull, the default, the configuration directory will be resolved.- Parameters:
path- the path to the configuration directory ornullto have the configuration directory resolved- Returns:
- the builder
- Throws:
IllegalArgumentException- if the directory is not a valid directory
-
addServerArgument
public T addServerArgument(String arg)
Adds an argument to be passed to the server ignore the argument ifnull.- Parameters:
arg- the argument to pass- Returns:
- the builder
-
addServerArguments
public T addServerArguments(String... args)
Adds the arguments to the collection of arguments that will be passed to the server ignoring anynullarguments.- Parameters:
args- the arguments to add- Returns:
- the builder
-
addServerArguments
public T addServerArguments(Iterable<String> args)
Adds the arguments to the collection of arguments that will be passed to the server ignoring anynullarguments.- Parameters:
args- the arguments to add- Returns:
- the builder
-
setAdminOnly
public T setAdminOnly()
Sets the server argument--admin-only.- Returns:
- the builder
-
setStartSuspended
public T setStartSuspended()
Sets the server argument--start-mode=suspend.- Returns:
- the builder
-
setBindAddressHint
public T setBindAddressHint(String address)
Sets the system propertyjboss.bind.addressto the address given. This will override any previous value set viaaddServerArgument(String). Note: This option only works if the standard system property has not been removed from the interface. If the system property was removed the address provided has no effect.- Parameters:
address- the address to set the bind address to- Returns:
- the builder
-
setBindAddressHint
public T setBindAddressHint(String interfaceName, String address)
Sets the system propertyjboss.bind.address.$INTERFACEto the address given where$INTERFACEis theinterfaceNameparameter. For example in the default configuration passingmanagementfor theinterfaceNameparameter would result in the system propertyjboss.bind.address.managementbeing set to the address provided. This will override any previous value set viaaddServerArgument(String). Note: This option only works if the standard system property has not been removed from the interface. If the system property was removed the address provided has no effect.- Parameters:
interfaceName- the name of the interface of the binding addressaddress- the address to bind the management interface to- Returns:
- the builder
-
setMulticastAddressHint
public T setMulticastAddressHint(String address)
Sets the system propertyjboss.default.multicast.addressto the address given. This will override any previous value set viaaddServerArgument(String). Note: This option only works if the standard system property has not been removed from the interface. If the system property was removed the address provided has no effect.- Parameters:
address- the address to set the multicast system property to- Returns:
- the builder
-
addPropertiesFile
public T addPropertiesFile(String file)
Adds a properties file to be passed to the server. Note that the file must exist.- Parameters:
file- the file to add- Returns:
- the builder
- Throws:
IllegalArgumentException- if the file does not exist or is not a regular file
-
addPropertiesFile
public T addPropertiesFile(Path file)
Adds a properties file to be passed to the server. Note that the file must exist.- Parameters:
file- the file to add- Returns:
- the builder
- Throws:
IllegalArgumentException- if the file does not exist or is not a regular file
-
setPropertiesFile
public T setPropertiesFile(String file)
Sets the properties file to use for the server ornullto remove the file. Note that the file must exist.This will override any previous values set.
- Parameters:
file- the properties file to use ornull- Returns:
- the builder
- Throws:
IllegalArgumentException- if the file does not exist or is not a regular file
-
setPropertiesFile
public T setPropertiesFile(Path file)
Sets the properties file to use for the server ornullto remove the file. Note that the file must exist.This will override any previous values set.
- Parameters:
file- the properties file to use ornull- Returns:
- the builder
- Throws:
IllegalArgumentException- if the file does not exist or is not a regular file
-
getWildFlyHome
public Path getWildFlyHome()
Returns the home directory used.- Returns:
- the home directory
-
getLoggingPropertiesArgument
protected String getLoggingPropertiesArgument(String fileName)
Returns the command line argument that specifies the logging configuration.- Parameters:
fileName- the name of the configuration file- Returns:
- the command line argument
-
getBootLogArgument
protected String getBootLogArgument(String fileName)
Returns the command line argument that specifies the path the log file that should be used. This is generally only used on the initial boot of the server in standalone. The server will rewrite the configuration file with hard-coded values.- Parameters:
fileName- the name of the file- Returns:
- the command line argument
-
getModulesJarName
public String getModulesJarName()
Returns the normalized path to thejboss-modules.jarfor launching the server.- Returns:
- the path to
jboss-modules.jar
-
normalizePath
protected Path normalizePath(String path)
Resolves the path to the path relative to the WildFly home directory.- Parameters:
path- the name of the relative path- Returns:
- the normalized path
-
normalizePath
protected Path normalizePath(Path parent, String path)
Resolves the path relative to the parent and normalizes it.- Parameters:
parent- the parent pathpath- the path- Returns:
- the normalized path
-
getServerArguments
public List<String> getServerArguments()
A collection of server command line arguments.- Returns:
- the server arguments
-
getServerArg
protected String getServerArg(String key)
Returns the first argument from the server arguments.- Parameters:
key- the key to the argument- Returns:
- the first argument or
null
-
validateAndNormalizeDir
protected static Path validateAndNormalizeDir(String path, boolean allowNull)
-
validateAndNormalizeDir
protected static Path validateAndNormalizeDir(Path path, boolean allowNull)
-
addSystemPropertyArg
protected static void addSystemPropertyArg(List<String> cmd, String key, Object value)
-
isJavaSecurityManagerConfigured
protected static boolean isJavaSecurityManagerConfigured(org.wildfly.core.launcher.Arguments.Argument argument)
-
-