Skip to main content

Args

Command-line arguments can be associated with a microservice using the args() method.

Example
public static void main(String[] args) {
Microservice
.create() // Create builder.
.args(args) // Pass in args.
.build() // Create microservice.
.start() // Start microservice.
.join() // Join thread.
;
}

When specified, the arguments can be retrieved using the Microservice.getArgs() method which provides an API for easily accessing command-line arguments using common notation:

Args args = Microservice.getInstance().getArgs();

// One main argument
// a1
String a1 = args.getArg(0); // "a1"
String a2 = args.getArg(1); // null

// Two main arguments
// a1 a2
String a1 = args.getArg(0); // "a1"
String a2 = args.getArg(1); // "a2"

// One main argument and one optional argument with no value
// a1 -a2
String argsa1 = args.getArg(0);
boolean hasA2 = args.hasArg("a2"); // true
boolean hasA3 = args.hasArg("a3"); // false

// One main argument and one optional argument with one value
// a1 -a2 v2
String a1 = args.getArg(0);
String a2 = args.getArg("a2"); // "v2"
String a3 = args.getArg("a3"); // null

// One main argument and one optional argument with two values
// a1 -a2 v2a v2b
String a1 = args.getArg(0);
List a2 = args.getArgs("a2"); // Contains ["v2a","v2b"]
List a3 = args.getArgs("a3"); // Empty list

// Same as previous, except specify optional argument name multiple times
// a1 -a2 v2a -a2 v2b
String a1 = args.getArg(0);
List a2 = args.getArgs("a2"); // Contains ["v2a","v2b"]

Specifying the command-line arguments also makes them available through $A SVL variables.

These can be used in the configuration file and throughout various Juneau annotations.

Example
// $A used in variable resolver.
VarResolver varResolver = Microservice.getInstance().getVarResolver();
System.out.println(varResolver.resolve("Arg #1 is set to $A{1}"));
// $A used in annotation.
@Rest(
title="$A{title}",
...
)