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.name=MXServer
mxe.rmi.enabled=1
mxe.registry.port = 13400
mxe.rmi.port = 1099

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

Popular posts from this blog

BMXAA6445E - Cache INTOBJECT could not be initialized. Log out and then log in again to refresh your database connection #BMXAA6445E #BMXAA7733E

Launch a dialog and enable end user select assignee on workflow route

Maximo | Scheduling, Generating & Posting a report to server | #Maximo #AutomationScript #Cron