...
- Apache Commons Configuration is a well-established Java library whose goal is to make configuration more flexible and easier to manage.
- It automatically interpolates all settings at runtime. This means we no longer need to replace variables (
${setting}
) within our configurations. They will be auto-determined at runtime based on the value of that variable within one of the configuration files For more on variable interpolation see its Basic Features docsdocumentation - It is a flexible configuration scheme. It can read configurations from several sources at once, including Properties files, XML config files and even database tables (see its Overview docsdocumentation). Currently, in the DSpace Enhanced Configuration Scheme we are still only using Properties files, similar to DSpace 5 and below. But, we now be able to easily move all or some configurations to XML configs or database config tables.
- The locations of the configuration sources can be easily customized by DSpace administrators in a new
config-definition.xml
file, which configures Apache Commons Configuration for DSpace. More on that below.
- The locations of the configuration sources can be easily customized by DSpace administrators in a new
- It allows for easy overriding of configuration values from other sources. How the overrides occur is up to how you've configured Apache Commons Configuration. For DSpace, we have a new
config-definition.xml
which defines the following override scheme (again, this can be easily tweaked for local needs):- If a setting is specified in Java System Properties (e.g.
-D[setting]=[value]
), it overrides the same setting found in any below location - If a setting is specified as an Environment Variable, it overrides the same setting found in any below location
- If a setting is specified in the new
local.cfg
configuration file, it overrides the default value in any below location - Default values for all settings are specified in the
dspace.cfg
and themodules/*.cfg
configuration files.
- If a setting is specified in Java System Properties (e.g.
- It supports enhanced Properties files. This means our
dspace.cfg
,local.cfg
and other configuration files can now immediately support some enhanced options, including:- The ability to easily include other configuration files via: "
include=[config-file-location]
" (See the end of the updateddspace.cfg
for examples) - The ability to provide multiple lists of values to a list "array" configurations by specifying a the setting multiple times (rather than creating a giant comma separated configuration on spanning multiple lines). For example, enabling both LDAP and Password authentication could can now be done via these two lines:
plugin.sequence.org.dspace.authenticate.AuthenticationMethod = org.dspace.authenticate.LDAPAuthentication
plugin.sequence.org.dspace.authenticate.AuthenticationMethod = org.dspace.authenticate.PasswordAuthentication
- For more information see the Commons Config Properties File documentation
- The ability to easily include other configuration files via: "
- More information can also be found in the Apache Commons Configuration v1.10 User Guide