Channel between admin server and instances

Admin channel has been built for notification from iAS SE admin server instance to administered server instance(s). The notification is in the form of a event. For more information on notifications, please see the description of package com.sun.enterprise.admin.event.

The admin channel is built over RMI, where admin server instance acts as a client, whereas all administered server instances act as servers. There are a few exceptions to typical RMI implementations -

- The objects are not bound to (or looked up from) rmiregistry. Instead, it uses filesystem. So, instead of binding a server object to rmiregistry, it is written to filesystem (as a serialized object) and instead of looking up client-side objects from rmiregistry, it is read from the filesystem. The filename is IAS_ROOT/<instance>/config/admch - this file should be present whenever an instance is running.
- All methods have a security check in place which ensures that the client object is running on the same IP address as server object.
- All method calls require a shared secret, so a shared secret must be specified in any method call to get a response.

All of these exceptions were made for security (and possibly robustness). By avoiding rmiregistry, we are ensuring that no one over the network will be able to access the stub of the server object - the clients will need to have access to filesystem to get the stub. rmiregistry is possibly another process and certainly a new port that needs to be managed and it adds more complexity to the whole picture.

The security checks (same IP address and shared secret) were added to guard against hacking by arbitrary network traffic (in the form of RMI packets). So, not only the packet needs to originate (or seem to) on the same machine but it also needs to contain some application specific data (shared secret, in this case). It is assumed that once you have broken into a OS level login on the system, then you have better ways of breaking the system (like editing server.xml, or killing processes) than trying to use admin channel to cause some trouble.