Documentation
Runtime
Boot Sequence
The following depiction provides a high level overview of the initializaiton and bootstrap process within Express Gateway and its extension points made possible through plugins.
Note: the plugin framework described here is coming in the 1.2.0
release
Initial phase
Config Loading
Express Gateway loads config files (gateway.config.yml, system.config.yml etc).
Plugin registration
Based on “plugins” section in system.config.yml Express Gateway builds a list of plugins to load.
Each plugins it loaded using the Node.JS require
function.
The actual require statement is require('plugin-name')(pluginContext)
.
As the result Express Gateway will know about all entity extensions (policies, conditions etc.) that the plugin provides.
Plugins provide a list of contents through the PluginContext
. Details about PluginContext
can be found in the Plugin Development Guide.
Note: At this stage no policies or conditions or middlewares are executed. As well as there are no http servers that can accept connections. Express Gateway is just collecting information about extensions.
Gateway initialization
Gateway ExpressJS server initialize
Creates ExpressJS instance that will handle all requests to Express Gateway
Loading extensions for Gateway
Conditions, Policies, Routes and Middlewares registered in the system have now been initialized and can be used during request processing.
For example:
- Routes and Middlewares are mounted onto ExpressJS Gateway application.
- Conditions and Policies are registered in the pipeline engine
Pipeline engine initialization
All defined pipelines are now transformed into ExpressJS routes and registered in ExpressJS Gateway application.
Gateway Server start
Finally ExpressJS applications is starting and is exposed by 2 node.js servers: HTTP and HTTPS. Express Gateway start listening on configured ports.
Events
http-ready
- emitted once HTTP server starts listening on porthttps-ready
- emitted once HTTPS server starts listening on port Now plugins can subsctibe to actual node.js server events (likeupgrade
required for websockets)
Admin API initialization
Admin ExpressJS server initialize
Creates ExpressJS application that will handle all requests to Express Gateway Admin API.
Loading extensions for Admin API
Admin Routes and middlewares registered in the system are now initialized and can be used during request processing.
Admin Server start
Admin ExpressJS application is now exposed by node.js servers and start listening on configured port. Admin API is now ready to process requests
Events
admin-ready
- emitted once Admin API server starts listening on the port