Hot Deploy
Jmix supports Hot Deploy technology that helps to apply project changes to the running application immediately without restarting the application server. Hot deployment is performed by copying updated resources and Java source files to the Jmix configuration directory of the application. Then the running application compiles the source code and loads new classes and resources.
The location of the configuration directory is determined in the jmix.core.conf-dir
application property. The default value is {user.dir}/.jmix/conf/
.
By default, the configuration directory is cleaned on the application start. You can disable this by editing Run/Debug Configuration Settings.
When you make some changes in the source code, Studio copies the changed files to the configuration directory of the application. Resources in the configuration directory have priority over the resources in the JAR files of the application, so the running application will load these resources when needed. If Java source files are loaded, the application compiles them on the fly and loads the resulting classes.
Studio also sends signals to the application to clear appropriate caches to make it load the changed resources. These are messages cache and the configurations of fetch plans, registered screens, and menu.
The following classes and resources can be hot deployed:
-
Screen descriptors and controllers
-
Fetch plans
-
Localized messages
-
Menu
-
Resource roles
-
Row-level roles
Other classes and beans, including their static methods, are hot deployed only if some screen file or a middleware service implementation that uses them has also been changed.
Entity classes and entity listeners cannot be hot deployed.