Bootstrapping - the start up
Regardless of platform, the startup process of PhenixID Server is the same.
During startup, the system will look for a valid license. If a license file is not found, the startup process is aborted and system will halt.
Once the license has been validated, the modules are loaded. Each module provides a well defined set of functions. Not all modules are loaded. Only modules required for a certain function is loaded. However many modules provide core functionality and will most likely be loaded in all installations. It is possible to start system with no modules but it would not make any sense since no functionality will be avalible.
Loading is done in the following order:
- The module handling system configuration, com.phenixidentity~phenix-store-json, is loaded first. System will wait for this to finish before proceeding. This module is defined in the boot.json and MUST not be removed.
- Modules defined in the boot.json file are loaded with an internal order. First of all, the modules defined in the default_modules are loaded. Secondly, the modules defined in the deploy section are loaded. Depending of the module definition, the system deploys it differently. Modules defined in default_modules are deployed in one fashion, modules deployed in deploy in another. If defined in default_modules the deployment process will ensure the the module is installed on ONE node in the system. This means if a node in a cluster joins, the modules defined in default_modules are already deployed and will be ignored. Modules defined in deploy will be deployed on the current node regardless if it was already deployed in the cluster or not.
- Finally, the modules defined in phenix-store.json are deployed.
Module deployment looks for modules under the repo directory. If found, the system unpacks and copies the module to the mods directory. If not found, deployment will fail and the server can potentially halt.