Chapter 29 Configuring and Using Hot Deployment : Hot Deployment Overview

Hot Deployment Overview
You can make certain changes to a BusinessEvents project and apply them to engine that is running the application, without stopping the application. This is known as hot deployment.
Modifications Allowed in Hot Deployment
You can make only certain changes during a hot deployment. They are listed in Table 37, Hot Deployment Supported Modifications. Modifications allowed are also different for each type of object management.
If you attempt to deploy an EAR file that includes unsupported modifications without first stopping the BusinessEvents engine, BusinessEvents rejects the EAR file.
In some cases, if you want to make a change that is not supported by the hot deployment feature, for example, if you want to change an event expiry action for an event definition, you may be able to work around the limitation. For example, instead of changing the event expiry action in the event definition, you may be able to change the rule function used in the currently configured event expiry action.
Hot Deployment in a Fault Tolerance Group (In Memory OM)
In a fault tolerance group, you must first perform the hot deployment on the secondary servers. When the process is complete on the secondary servers, you can then safely perform the hot deployment on the primary server.
When hot deployment is enabled, the deployed application listens for changes in the EAR file. Therefore do not use the same copy of the EAR file (that is, the EAR file in the same directory location) for deploying primary and secondary servers. If you do, the hot deployment may occur out of order, and anomalous behavior may occur in the caches.
How Hot Deployment Occurs
Performing hot deployment requires changing the execution code at runtime. This is made possible using the -javaagent option. The -javaagent option is provided in the be-engine.tra file as shipped.
In an active agent, the hot deployment process waits for the current RTC cycle to complete and then injects the changes before the next RTC cycle starts.