XML configuration
Configuring a Diffusion™ server using XML property files
XML Property files
A Diffusion server is configured using a set of XML property files typically loaded from the etc folder. In a new Diffusion installation example versions of these files are provided which can be edited as required.
XML is used rather than standard property files due to the hierarchic nature and the ability to support repeating groups.
XSD files are issued that define the content of the XML property files and this section summarizes the XSD content.
Configuration path loading
You can pass a parameter to Diffusion upon startup so that files are not automatically loaded from the etc folder but loaded from a different folder. This folder does not have to contain the complete set of XML files, but the file is loaded from the specified folder first, if it exists. If it does not, Diffusion loads the configuration file from the etc folder. When Diffusion starts, it logs where each configuration file has been loaded from.
XML Value types
When XML values are loaded, the schema is checked so that we know that it is valid, but to aid configuration, there are some extra data types. When values are loaded, they are trimmed of leading and trailing white space.
Data type | Meaning |
---|---|
push:boolean | true or false |
push:string | String value |
push:int | A number between -2,147,483,648 and 2,147,483,647 |
push:long | A number between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807 |
push:double | An 8 byte IEEE 754 floating point number: from +/- 2^-1074 to +/- (2-(2^-52))·2^1023 |
push:port | A positive number but less than 65535 |
push:millis | A string that represents the number of milliseconds. Append
the mnemonic for the time unit. The mnemonic can be either upper
or lower case.
360000, 360s, 6m all represent 6 minutes |
push:bytes | A string that represents the number of bytes. Append the
mnemonic size unit. The mnemonic can be either upper or lower case.
6291456, 6144k, 6m, all represent 6 Megabytes |
push:log-level | A log level can be ERROR, WARN, INFO, DEBUG, or TRACE. |
push:percent | A value that represents a percentage, this can have the trailing percent sign (%) |
push:positiveNonZeroInt | A number between 1 and 2,147,483,647 |
push:positiveInt | A number between 0 and 2,147,483,647 |
push:positiveNonZeroLong | A number between 1 and 9,223,372,036,854,775,807 |
push:positiveLong | A number between 0 and 9,223,372,036,854,775,807 |
<element> | This notation is used to indicate a complex element type. It can also be List<element> to indicate a repeating property group. |
Environmental values
When defining custom configurations, you can define environmental variables that can be reused in all XML property files. These variables can be defined in the etc/Env.xml property file to be used in all other property files. Suppose, for example, the etc/Env.xml file defines a server-name variable, with value d-unit as follows:
<env> <property name="server-name">d-unit</property> </env>
The server-name variable can be used in all other property files, where the value d-unit is appropriate, either as a value for an attribute, as in
<server name={server-name}> ... </server>
or as a name for an element as in:
<server>{server-name}</server>
As a side remark, it is worth noting that names can be combined to provide malleable environmental variables. Suppose for instance Env.xml contains the following entries:
<env> <property name="server-name">myServer</property> <property name ="server-version">V2.0</property> </env>
Then server-name and server-version can be combined, for instance within the same etc/Env.xml, as
<property name="server-and-version">{server-name}-{server-version}</property>and used in all other configuration files.