Eclipse MicroProfile Config API
Since 4.1.2.173
Provided version of the API: MicroProfile Config 1.3
Background
The Config API was created to allow for the modification of application configuration from outside the application without needing the application to be repackaged.
A full overview for the reasoning behind the API can be found in the README for the source code repository.
The complete specification is maintained in the same repository
Config Sources
A ConfigSource
is a definition of a source of configuration values that can be
used by an application. In addition to
the default ConfigSources outlined by the specification, the following are also
supported ConfigSources:
Source | Ordinal | Description |
---|---|---|
|
90 |
Reads configuration properties from files in a specified directory. Each file name is the confguration property name and the contents of the file are the config property value. This config source can be used to read Kubernetes secrets files. See below on how to specify the directory to be used for secrets files using asadmin. |
|
110 |
Retrieves and stores config values in the domain.xml as key values. These will then apply to all instances within a domain |
|
120 |
Retrieves and stores config values at the level of the named configuration in
the domain.xml; |
|
130 |
Retrieves and stores config values at the level of the server in the domain.xml. Property values will only apply on the named server instance |
|
140 |
Retrieves and stores config values at the level of the application. Property values will only be available for the specified application on all server instances it is deployed |
|
150 |
Retrieves and stores config values at the level of an individual module within an appllication. Property values will only be available for the specified module on all server instances it is deployed |
|
160 |
Retrieves and stores config values in the Hazelcast cluster as name value pairs. These will be available for all server instances that are members of the cluster. |
|
115 |
Retrieves and stores config values within the jndi tree. The property name being the dotted name path in the JNDI tree and the value being stored in the JNDI tree. These are modifiable by current admin console functionality. |
|
105 |
Retrieves and stores config values in the password alias store. These will be available to all server instances in a domain. |
Converters
In addition to the standard converters specified by the API, Payara’s implementation
includes out-of-the-box converters for URL and InetAddress. These have @Priority
of 1
, the same as the default converters.
Payara Specific Configuration Properties
In addition to the standard configuration properties, Payara Server and Micro provide a number of out-of-the-box config properties you can use in your application to find information about the Payara runtime environment.
Property | Description |
---|---|
|
The type of the runtime from |
|
The name of the instance e.g. |
|
The directory which is the root of the instance installation |
|
The name of the Payara domain |
|
The directory which is the root of the Payara software installation |
|
The directory in which the server’s configuration files reside |
|
The start time of the server in |
|
The name of the configuration this server is using |
|
The administration port number of this instance |
|
The host IP address which the admin listener is listening on |
|
The HTTP port for http-listener |
|
The IP address the http listener is listening on |
|
Whether the http listener is enabled |
|
The HTTP port for https-listener |
|
The IP address the https listener is listening on |
|
Whether the https listener is enabled |
Config Ordinal Configuration
Config Ordinal can be configured by using Admin Console or Asadmin commands.
Since 5.183
Using the Admin Console
To configure the Config Ordinal in the Admin Console, go to Configuration → [instance-configuration (like server-config)] → MicroProfile → Config → Ordinal:
Using Asadmin Commands
A --source value of jndi is not supported for these asadmin commands in
4.1.2.173. The JNDI ConfigSource does exist and is usable from the Config API, though.
|
set-config-ordinal
- Usage
-
asadmin> set-config-ordinal --ordinal=<integer.value> --source=domain|config| server|application|module|cluster
- Aim
-
Provides a way to set the ordinal for a given config source. Where multiple configuration properties exist, the property from a source with a higher ordinal number is preferred.
Command Options
Option | Description | Default | Mandatory |
---|---|---|---|
|
The value of the ordinal to set. This must be a number greater than 1. A lower number ordinal means lower order of precedence. |
- |
yes |
|
The value of the source to change. Must be one of: |
- |
yes |
|
The target Payara config to apply the change to |
server (the DAS) |
no |
get-config-ordinal
- Usage
-
asadmin> get-config-ordinal --source=domain|config|server|application|module|cluster
- Aim
-
Returns the ordinal value for the given ConfigSource type.
Config Property Configuration
Config Property can be configured by using Admin Console or Asadmin commands.
Since 5.183
Using the Admin Console
To configure the Config Property in the Admin Console, go to Configuration → [instance-configuration (like server-config)] → MicroProfile → Config → Property:
Using Asadmin Commands
set-config-property
- Usage
-
asadmin> set-config-property --propertyName=<property.name> --propertyValue= <property.val> --source=domain|config|server|application|module|cluster --sourceName=<source.name> --moduleName=<module.name> --target=<target[default:server]>
- Aim
-
Sets the given property name and value in one of the built-in config sources. The source is specified with
--source
and, where there is ambiguity, the--sourceName
and--moduleName
options can be used. For example, where the source isserver
, the--sourceName
can be used to specify the name of the server where the config property is to be stored.
Command Options
Option | Description | Default | Mandatory |
---|---|---|---|
|
The name of the configuration property to set |
- |
yes |
|
The value of the configuration property to set |
- |
yes |
|
The ConfigSource where the property is to be stored |
- |
yes |
|
The name of the ConfigSource when there may be ambiguity, for example a
ConfigSource of type |
- |
no |
|
The name of the module when the ConfigSource is of type |
- |
no |
|
The target configuration where the command should be run |
server (the DAS) |
no |
delete-config-property
- Usage
-
asadmin> delete-config-property --propertyName=<property.name> --source=domain| config|server|application|module|cluster --sourceName=<source.name> --moduleName=<module.name> --target=<target[default:server]>
- Aim
-
Deletes the given property name in one of the built-in config sources so that the property no longer exists. The source is specified with
--source
and, where there is ambiguity, the--sourceName
and--moduleName
options can be used. For example, where the source isserver
, the--sourceName
can be used to specify the name of the server where the config property is to be stored.moduleName
should only be used when the--source=module
.
Command Options
Option | Description | Default | Mandatory |
---|---|---|---|
|
The name of the configuration property to delete |
- |
yes |
|
The ConfigSource where the property is stored |
- |
yes |
|
The name of the ConfigSource when there may be ambiguity, for example a
ConfigSource of type |
- |
no |
|
The name of the module when the ConfigSource is of type |
- |
no |
|
The target configuration where the command should be run |
server (the DAS) |
no |
get-config-property
- Usage
-
asadmin> get-config-property --propertyName=<property.name> --source=domain| config|server|application|module|cluster --sourceName=<source.name> --moduleName=<module.name> --target=<target[default:server]>
- Aim
-
Gets the value for the given property name in one of the built-in config sources. The source is specified with
--source
and, where there is ambiguity, the--sourceName
and--moduleName
options can be used. For example, where the source isserver
, the--sourceName
can be used to specify the name of the server where the config property is to be stored.
Command Options
Option | Description | Default | Mandatory |
---|---|---|---|
|
The name of the configuration property to get |
- |
yes |
|
The ConfigSource where the property is stored |
- |
yes |
|
The name of the ConfigSource when there may be ambiguity, for example a
ConfigSource of type |
- |
no |
|
The name of the module when the ConfigSource is of type |
- |
no |
|
The target configuration where the command should be run |
server (the DAS) |
no |
Config Secrets Directory Configuration
Config Secrets Directory can be configured by using Admin Console or Asadmin commands.
Since 5.183
Using the Admin Console
To configure the Config Secrets Directory in the Admin Console, go to Configuration → [instance-configuration (like server-config)] → MicroProfile → Config → Directory:
Using Asadmin Commands
set-config-secrets-dir
- Usage
-
asadmin> set-config-secrets-dir --directory=<full.path.to.dir> --target=<target[default:server]>
- Aim
-
Sets the directory to be used for the directory config source.
get-config-secrets-dir
- Usage
-
asadmin> get-config-secrets-dir --target=<target[default:server]>
- Aim
-
Gets the value of the directory to be used for the directory config source.