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.