Package gnu.cajo.utils
Fundamentally, there are two entities; clients and servers. A server is a
Virtual Machine which, at a minimum, exports one item, meaning a remotely
invokable object implementing the Invoke
interface. A server can also provide proxies; i.e. mobile item interfaces, to
the server's local item objects (exported or not), which run inside the
client's runtime. A client is a VM that makes use of a server's items and
proxies, but need not export any of its own. The architecture readily supports
the possibility of hybrid client/server VMs. Each VM can export as many items
as it wants.
Items can transparently connect to other items across, logical, virtual or physical separation. This package seeks to establish the following roles between items:
An item is a control element of a system, it performs three major tasks:
- control system resources
- monitor system operation
- log system transactions
- user input validation and feedback
- item output formatting and presentation
- localization and internationalization
When the items are remote; the overall network structure looks something like this:
-------------- -------------- | Server VM | | Client VM | | ---------- | TCP | ---------- | | | Item | | links | | Proxy | | | |----------| | | |----------| | | | http | |<------| | codebase | | | | callback | |<------| | notify | | | | notify | |------>| | callback | | | ---------- | | ---------- | -------------- --------------Note: Each outgoing TCP link consumes a corresponding anonymous return link, so the following port consumption realities for a server VM must be considered:
- Each item consumes 2 inbound ports permanently (http / callback)
- Each item consumes 1 outbound short-term port per client (codebase)
- Each item consumes 1 outbound session-term port per client (callback)
-
Class Summary Class Description BaseItem An optional base class for server objects.BaseProxy A standard abstract base class for proxy objects.CodebaseServer The standard mechanism to send proxies, and other complex objects to remote VMs.ItemServer These routines are used for server object construction.ItemServer.JarClassLoader MonitorItem This class is used to instrument an object for invocation logging purposes.Multicast This class can listen for UDP multicasts over the network, as well as to send out UDP announcements.ProxyLoader This class is used to avoid having to load proxies into the VM runtime of the proxy server.ZippedProxy This class is used to transfer its internal proxy object as a zipped marshalled object (zedmob).