Before we go into all the details it might be very helpful to know the full component initialisation sequence, how the component is brought to life and when the configuration is set. Component loading and starting sequence looks like this:
compName); method is called to set a name for the component. This method is (should) be called only once in the component live time.
start();method is called which starts all the component internal threads. This method, together with
stop();can be called many times to put the component processing on hold or restart processing. The developer should normally not be concerned about these, unless he decided to overwrite these methods.
getDefaults();method is called to retrieve initial settings for the component. This method is normally called only once in the component life time.
setProperties();is called to set new configuration for the component. This method can be called many times at any point during the component life time.
initializationCompleted();method is called to notify the component that the global server initialisation has been finished. This method is called only once during the server startup time, after all components have been initialised and configured. This method is mainly used by network connection managers which wait with activating socket listeners until the server is fully functional.
The important thing about all the configuration stuff is that the component does not read/ask/request configuration. The configuration is pushed to the component by the configuration manager. The
setProperties() method can be called at any time and any number of times while the server is running. This design allows for the server reconfiguration at run-time and developers should be aware of this and properly code the method to allow for the component reconfiguration at run-time.