Remote method invocation (RMI) is an application programming interface that provides a way for objects in separate memory areas to interact. Separate memory areas can be part of the same physical system or can be on different systems connected by a network.
An RMI Registry is an area in memory that maintains the RMI address information of a Java™ object server. By default, the RMI registry is created on port 1099. More than one RMI registry can exist in memory. Each registry has a designated TCP/IP port for access.
If the mxe.allowLocalObjects property is set to 1, then the user interface does not use the RMI registry. The RMI registry is only needed if the RMI client program is used.
When the EAR file is deployed, the Java objects search for an RMI registry in the current memory area. If no RMI registry is found, then a registry is created and is bound to the product instance.
In a clustered environment, creation of an RMI registry that is bound to an instance of the product can be problematic. If the JVM fails, then the other JVMs on the same physical server are not reachable by client programs.
The solution in a clustered environment is to deploy the RMI registry file, rmireg.war, on the application server. The rmireg.war file is deployed on a separate server and creates the registry independent of any product JVMs. If a JVM is shut down or recycled, the RMI communication is not lost. In a clustered environment that spans multiple physical servers, RMI must be deployed one time on every server. But if the mxe.allowLocalObjects property is set to 1 and you do not use the RMI client program in your environment, you do not need to deploy the rmireg.war file.