The main difference between the general communication structure and the RMI
communication structure is the missing output proxy. As you can see in Figure
![[*]](/usr/share/latex2html/icons/crossref.png)
, the other parts are very similar with the exception
that the RMI specific interfaces and proxies are used. But these interfaces
differ just of the name from the original interfaces, the methods are the same.
The output proxy is not used because of the possibility of RMI to call remote
objects directly without having to use a special proxy object (well it uses
the stub - impl mechanism, but this is transparent for the programmer).
There are two
objects exported to the RMI registry,
the
RMICommProxy implementing the
RMICommIFace
and the
RMIMAFFinderServiceProxy implementing the
MAFFinderIFace.
The
RMIMAFFinderServiceProxy (if in WRAPPER - mode) is exported
to let other Agent System access the local MAFFinder, the
RMICommProxy
is exported to the registry to let other
RMICommServices call
their methods on this object remotely.
RMI objects are accessed through a name given to the RMI registry when the object
is exported. The names have to be unique on the machine running the registry.
TAgents uses the following naming conventions
:
The MAFFinder wrapper (
RMIMAFFinderServiceProxy in wrapper
mode) is named ``MAFFinder'' and the
RMICommProxy is named
like the ID of the Agent System which means in the form <ip-address>''/''
AgentSystemID is used.