Solving MaximoRMI system#notboundexception
Problem Scenario : Getting system#notboundexception error while testing an RMI connection to Maximo from an external application
Steps to Deploy and test an RMI connection with Maximo Successfully.
1. Maximo.properties file
Edit or make sure these properties exist in the maximo.properties file that is built and deployed for rmireg.war and maximo-MIF.ear
Note : Ports that are used for RMI needs to be added to firewall settings and the maximo.properties file.
RMI is registered on a port, mxe.registry.port.
RMI uses the port added to mxe.rmi.port while external system communicates with Maximo. Ex in my case I have added 1099 as a RMI communication port and it is registered on 13400.
Make sure all the jvms, other than RMIRegistry have a -Dmxe.name given in their jvm arguments. This will allow the jvms to be recognized by custom names. Ex.In my case MXMIF is the -Dmxe.name name for integration jvm.
In the maximo.properties file, find or add
// Name to bind the MXServer server object to in the RMI registry
mxe.rmi.enabled=1
mxe.registry.port = 13400
2. Build rmireg.war
From cmd, move to <maximoHome>/deployment and execute buildrmiregwar.cmd.
File should be found under <maximoHome>\deployment\default
3. Create RMIRegistry and Install war
Create a separate server for RMI Ex: RMIRegistry on the server/Node where MIF jvm (Whichever jvm is used by external apps to connect) exists.
Ex: I have a external application communicating to Maximo on an integration jvm which on Server/Node3. So I had to create my RMIRegistry jvm on server/Node3.
Install the rmireg.war on the RMIRegistry server. Provide Context Root as RMI. Finish Installation.
4. Order of starting the jvms
If its a fresh environment and all the jvms are down. Order of bringing up the jvms are
Firstly RMIRegistry, folloing Jvm that you want the RMI to bind i.e in the order > RMIRegistry,MXMIF,MXCRON,MXREP,MXUI,MXU2,MXUI3
Suppose you have multiple jvms running and you want to make sure RMI binds to integration MXMIF jvm, stop the MXMIF jvm alone.
Since RMIRegistry was just created and is still in stopped state, bring it up successfully.
Now bring the MXMIF jvm and in the logs observe for a log saying
Bound rmi://servername/MXMIF
and RMI Listening on port 1,099.
This means you're RMI route is established.
5. Test
You can now try to connect to Maximo from the external app. You should not be facing any #notboundexception.
Happy Learning :)
Thank you!!!
Comments
Post a Comment