In both hardware and software, an addition/modification to existing configuration is ignored by the system until it is restarted. In hardware, it could happen when you add memory or hard disks. In software, it generally means modifying the configuration files.
In any generic system, the resources available are registered at the time of startup. In case of hardware, for example, all the resources are checked and then the system remembers them for optimizing the process. It is what we do when we enter a new place. For example, when we enter a hotel room, we move around and register in our mind where the switches are.
Both databases and application servers depend on a configuration file to remember different parameters which in turn control the runtime behavior of the system. If you change the parameter, you need to restart.
Hot deployment is a feature where the server periodically checks whether its configuration has changed. If it observes the change, then it reviews all dependent processes to decide the optimum time to change it.
An example will help. The configuration file has the following parameters.
SESSION IDLE TIMEOUT VALUE IN SECONDS: 10000
MAX NUMBER OF DATABASE CONNECTIONS: 25
If one changes the above value for timeout to 7200, then what would happen to sessions that are active for more than 7200 seconds. They need to be logged out if they are idle.
If there are already more than 25 database connections, who should be logged out? earlier connections? later connections ?
Before any configuration is made sensitive to hot deployment, one need to consider the implementation details. They are sometimes very critical.