512 DISTRIBUTED OBJECT-BASED SYSTEMS CHAP . 9
many other policies that can be supported . For example , a POA can support transient as well as persistent objects . Likewise , there are different policies with respect to the use of threads . We omit details on these policies , which are further described in ( Henning and Vinoski , 1999 )
Agents
To facilitate agent-based applications , CORBA adopts a model in which agents from different kinds of systems can cooperate . Instead of specifying its own model of an agent , CORBA prescribes standard interfaces that an agent system should implement . This approach has the potential advantage that different types of agents can be used in a single distributed application . For example , in CORBA it is possible to let a Java applet create a Tcl agent on a D ’ Agents platform . ( We described the D ’ Agents system in Chap . 3 .)
In CORBA , agents are always defined with respect to an agent system . An agent system is defined as a platform that allows the creation , execution , transfer , and termination of agents . Each agent system has an associated profile describing exactly what the agent system looks like . For example , there will be a profile for a D ’ Agents agent system , prescribing its type (‘‘ D ’ Agents ’’), the supported language ( e . g ., Tcl ), and the way agents are serialized when moving between systems .
An agent is always located at a particular place in an agent system . A place corresponds to a server where an agent resides . There can be multiple places in an agent system . In other words , CORBA assumes that a single agent system may consist of multiple processes , each hosting one or more agents . This organization has been adopted in order to group several agent hosts into a single administrative domain , and be able to refer to that group as a whole , namely as an agent system .
Agent systems , in turn , can be grouped into a region , where a region represents the administrative domain in which an agent system resides . For example , a university department could have several agent systems , each of a different type . Each agent system could be distributed across multiple hosts , or places , where each host may run several agents . This model is shown in Fig . 9-13 .
An agent in CORBA is assumed to be constructed from a collection of classes , or at the very least from a file containing the necessary program text . In either case , it should be possible to name an agent ’ s implementation , and pass that name to an agent system to allow the creation or transfer of an agent .
Each agent system in CORBA must implement a number of standard operations . For example , an agent system must offer operations to create or terminate an agent , to receive an agent for execution , to list its current set of agents , to list the places where an agent may reside , and operations to suspend and resume an agent . Note that the implementation of these operations depends entirely on the actual agent system . However , CORBA does require that each agent system adheres to the overall model . This means that if an existing agent system does not