Java Mobile Agents with Aglets Wolfgang Schreiner
Chapter 1 – Introduction to Mobile Agents
What is a Software Agent? End-User Perspective – An agent is a program that assists people and acts on their behalf – Agents function by allowing people delegate work to them System Perspective – An agent is a software object that is situated within an execution environment – possesses mandatory and orthogonal properties
What is a Mobile Agent? Stationary Agent – executes only on the system where it begins execution – interacts with an agent using communication mechanisms Mobile Agent – not bound to the system where it begins execution – has the ability to transport itself from one system in a network to another
Reasons for Mobile Agents Reduce network load Reduce network latency Encapsulate protocols Execute asynchronously and autonomously Adapt dynamically Are naturally heterogeneous Are robust and fault-tolerant
Network Computing Client-Server Paradigm – A server locally hosts services that provide access to resources and code that implements these services. Code-on-Demand Paradigm – no preinstalled code on the client side Mobile Agent Paradigm – hosts are allowed a high degree of flexibility
Mobile Agent Applications Electronic Commerce Personal assistance Distributed information retrieval Telecommunication network services Workflow applications and groupware Monitoring and notification Parallel processing
Mobile Agent Systems Java – Aglets – Odyssey – Concordia – Voyager Others – Agent Tcl – Ara – TACOMA
Mobile Agent Standardization MASIF Agent management Agent transfer Agent and agent system names Agent system type and location syntax
Chapter 2 – Elements of a Mobile Agent System
Agent...
... and Place
Agent Behaviour (1) Creation – Instantiation and identifier assignment – Initialization – Autonomous execution Disposal – Preparing for disposal – Suspension of execution
Agent Behaviour (2) Dispatching – Suspend, serialize, encode, transfer Receiving – Receive, decode, de-serialize, resume execution Agent Class Transfer – Class at destination – Class at origin – Code-on-demand
Communication
MASIF MAFAgentSystem Interface – agent management tasks MAFFinder Interface – agent naming service
Chapter 3 – Mobile Agents with Java
Java Agents - Benefits Platform Independence Secure Execution Dynamic Class Loading Multithread Programming Object Serialization Reflection
Java Agents - Drawbacks Inadequate Support for Resource Control No Protection of References No Object Ownership of References No Support for Preservation and Resumption of the Execution State
The Aglet Model Basic Elements – aglet, proxy, context, identifier – creation, cloning, dispatching, retraction, disposal, activation/deactivation Aglet Event Model – clone, mobility and persistence listener Aglet Communication Model – Message, FutureReply, ReplySet
Aglet Package class Aglet interface AgletProxy interface AgletContext class Message class FutureReply class AgletID
Chapter 4 – Anatomy of an Aglet
Aglet Disposal public final void Aglet.dispose(); public void Aglet.onDisposing(); Example: public class DisposalExample extends Aglet { public void onDisposing() {... } public void run() { dispose(); }
Delegation-Based Event Model CloneEvent, MobilityEvent, PersistencyEvent CloneListener, MobilityListener, PersistencyListener CloneAdapter, MobilityAdapter, PersistencyAdapter
Cloning public final Object Aglet.onClone(); public final void Aglet.addCloneListener(CloneListener); public final void Aglet.removeCloneListener(CloneListener); public void CloneAdapter.onCloning(CloneEvent); public void CloneAdapter.onClone(CloneEvent); public void CloneAdapter.onCloned(CloneEvent);
Aglet Mobility public final void Aglet.dispatch(URL); public final void Aglet.addMobilityListener(MobilityListener); public final void Aglet.removeMobilityListener(MobilityListener); public void MobilityAdapter.onDispatching(MobilityEvent); public void MobilityAdapter.onArrival(MobilityEvent); public void MobilityAdapter.onReverting(MobilityEvent);
Persistence public final void deactivate(long); public final void Aglet.addPersistencyListener (PersistencyListener); public final void Aglet.removePersistencyListener (PersistencyListener); public void PersistencyAdapter.onDeactivating (PersistencyEvent); public void PersistencyAdapter.onActivation (PersistencyEvent);
Events CloneEvent MobilityEvent – public URL MobilityEvent.getLocation(); PersistencyEvent – public long PersistencyAdapter.getDuration();
Chapter 5 – Aglet Context
Aglet Creation Code and Code Base Code Base and Class Mobility Initialization Argument
Proxy Retrieval Proxy Iterator – public abstract Enumeration AgletContext.getAgletProxies(); Getting a Local Proxy – public abstract AgletProxy AgletContext.getAgletProxy(AgletID); Getting a Remote Proxy – URL as additional parameter
Aglet Retraction public abstract AgletProxy AgletContext.retractAglet(URL,AgletID); Example: AgletID aid=proxy.getAgletID(); Proxy.dispatch(dest); getAgletContext().retractAglet(dest,aid);
Context Properties public abstract Object AgletContext.getProperty(String); public abstract Object AgletContext.getProperty(String,Object); public abstract void AgletContext.setProperty(String,Object);
Chapter 6 – Aglet Messaging
Simple Messaging public Object AgletProxy.sendMessage(Message); public boolean Aglet.handleMessage(Message);
The Message Class Message Creation – public Message(String [,…] ); Receiving Messages – getArg, setArg, getKind, sameKind Replying to Messages – public void Message.sendReply(); – public void Message.sendException(Exception);
Getting the Reply
Message Management Serialized Message Handling Message Priorities Parallel Message Handling Synchronized Message Handling
Multicasting public final void Aglet.subscribeMessage(String); public final void Aglet.unsubscribeMessage(String); public final void Aglet.unsubscribeAllMessages(); public ReplySet AgletContext.multicastMessage(Message);
Receiving Multiple Replies public boolean ReplySet.hasMoreReplies(); public FutureReply ReplySet.getNextFutureReply(); public boolean ReplySet.addFutureReply(FutureReply);
Chapter 7 – Aglet Collaboration
Aglet Proxy Cloning Disposal Dispatching Deactivation and Activation Aglet Information
Controlling an Aglet
Finding an Aglet Search Logging Registration AgletFinder – Lookup: NAME – Register: NAME & PROXY – Unregister: NAME
Aglets in Parallel Execution
Chapter 8 – Agent Design Patterns
Design Pattern Classification Traveling Patterns – Itinerary, Forward, Ticket Task Patterns – Master-Slave Interaction Patterns – Meeting, Locker, Messenger, Finder, Organized Group
Chapter 9 – Inside Aglets
Architectural Overview Core Framework – Initialization and (de-)serialization – Class loading and transfer – Aglet references and garbage collection Management Components – PersistencyManager – CacheManager – SecurityManager Communication Layer
Aglet Object Structure
Initialization and Serialization Initialization of Aglets – Locate aglet class, load class data, define class – Instantiate new object – Create reference AgletRef, establish connection – Start execution Serialization and Object Mobility
Class Loading and Transfer Class Loading Class Transfer – Archived classes – Code base classes – System classes – Others Class Resumption and Evolution Other Considerations of Class Mobility
Communication Layer Communication API – MASIF Agent Transfer Protocol – Dispatch – Retract – Fetch – Message
Chapter 10 – Aglet Security
What Can Go Wrong? Agent Protection – Remote host threatens agent – Agent threatens another agent – Unauthorized third parties threaten agent Host Protection – Incoming agent threatens host – Unauthorized third parties threaten host Network protection – Incoming agent threatens the network
Taxonomy of Attacks Passive Attacks – Eavesdropping – Traffic Analysis Active Attacks – Illegal Access– Replay – Masquerade– Resource Exhaustion – Trojan Horse– Repudiation – Alteration
Security Services Authentication – user, host, code, agent Integrity Confidentiality Authorization Nonrepudiation Auditing
Security Model Principals – Aglet, Context and Server, Network Domain Permissions – File, Network, Window, Context, Aglet Protections Policy and Authority – Aglet owner, Context owner, Network owner