Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Page 5 of 6
onCloning() -- called before a clone operationonDispatch() -- called before a dispatchonReverting() -- called before a retractiononDeactivating() -- called before a deactivationonDisposing() -- called before a dispose operation (Unlike real life, an aglet can throw an exception if it doesn't want to die.)
For each of these processes, the Aglet class has a corresponding method that triggers the action: clone(), dispatch(), retract(), deactivate(), and dispose(). Some time after these are called, the aglet host will invoke the appropriate callback method.
Each time an aglet begins execution at a host, the host invokes an initialization method on the aglet. When the initialization
method returns, the host invokes run(). Depending on the event that precipitated the aglet's new life, the aglet host will choose to invoke one of these four initialization
methods:
onCreation() -- called the first time an aglet springs to lifeonClone() -- called on a clone after a clone operationonArrival() -- called after a dispatch or a retractiononActivation() -- called after an activation
An aglet interacts with its environment (its aglet host) through an AgletContext object. An aglet can obtain a handle to its context by invoking getAgletContext(), a method it inherits from base class Aglet. The aglet context has methods such as createAglet() and retractAglet(), which allow an aglet to add new aglets (or get an old aglet back) to its local host.
To interact with each other, aglets do not normally invoke each other's methods directly. Instead they go through AgletProxy objects, which serve as aglet representatives. For example, if a BossAglet wishes to make a request of an EmployeeAglet, the BossAglet obtains a handle to a proxy object that "represents" the EmployeeAglet. The BossAglet then makes a request by invoking a method in the EmployeeAglet's proxy, which in turn forwards the request to the actual EmployeeAglet.
The AgletProxy class contains methods that allow aglets to request other aglets to take actions, such as dispatch(), clone(), deactivate(), and dispose(). The aglet that has been requested to take an action can comply, refuse to comply, or decide to comply later.
The proxy also allows an aglet to send a message, either synchronously or asynchronously, to another aglet. A Message object is supplied for this purpose; it carries a String to indicate the kind of message plus one other optional piece of data, either a String or one of Java's primitive types. To send a message you create a Message object and pass it as a parameter to the sendMessage() or sendAsynchMessage() method of the proxy object.
An aglet must go through a proxy object to interact with an aglet, even if both aglets are in the same aglet host. The reason
aglets aren't allowed to directly interact with one another is that the aglet's callback and initialization methods are public. These methods should be invoked only by the aglet host, but if an aglet could get a handle to another aglet, it could invoke
that aglet's callback or initialization methods. An aglet could become very confused if another aglet inadvertently or maliciously
invoked these methods directly.
Archived Discussions (Read only)