next up previous
Next: Example Up: POA Previous: Architecture

Policies

 

We have already mentioned the policies that control various aspects of POA behaviour. POA policies do not change over the POA's lifetime. When creating a new POA as a child of an existing POA, policies are not inherited from the parent, but instead each POA is assigned a set of default policies if not explicitely defined.

Thread Policy
 
ORB_CTRL_MODEL
(default)
Invocations are performed as scheduled by the ORB. Potentially, many upcalls are perfomed simultaneously.
SINGLE_THREAD_MODEL
 
Invocations are serialized. At most a single upcall is performed at any time.

Non-reentrant servants should only be activated in POAs with the SINGLE_THREAD_MODEL policy.

As the current version of MICO is not multithreaded, this policy is not yet evaluated.

Lifespan Policy
 
TRANSIENT
(default)
Objects activated in this POA cannot outlive the server process.
PERSISTENT
 
Objects can outlive the server process

Id Uniqueness Policy
 
UNIQUE_ID
(default)
Servants can be activated at most once in this POA.
MULTIPLE_ID
 
Servants can be activated more than once in this POA and can therefore serve more than one object reference.

Id Assignment Policy
 
SYSTEM_ID
(default)
Object Ids are assigned by the POA upon object activation.
USER_ID
 
Upon activation, each servant must be provided with a unique Id by the user.

Servant Retention Policy
 
RETAIN
(default)
The POA maintains a map of active servants (the Active Object Map).
NON_RETAIN
 
The POA does not maintain an Active Object Map.

Request Processing Policy
 
USE_ACTIVE_OBJECT_MAP_ONLY
(default)
To process an incoming request, the object reference is looked up in the Active Object Map only. If no active servant serving the reference is found, the request is rejected, and an OBJECT_NOT_EXIST exception is returned.
USE_DEFAULT_SERVANT
 
The object reference is looked up in the Active Object Map first. If no active servant is found to serve the reference, the request is delegated to a default servant.
USE_SERVANT_MANAGER
 
The object reference is looked up in the Active Object Map first. If no active servant is found to serve the reference, a servant manager is invoked to locate or incarnate an appropriate servant.

Implicit Activation Policy
 
IMPLICIT_ACTIVATION
 
If an inactive servant is used in a context that requires the servant to be active, the servant is implicitely activated.
NO_IMPLICIT_ACTIVATION
(default) 
It is an error to use an inactive servant in a context that requires an active servant.

The Root POA has the ORB_CTRL_MODEL, TRANSIENT, UNIQUE_ID, SYSTEM_ID, RETAIN, USE_ACTIVE_OBJECT_MAP_ONLY and IMPLICIT_ACTIVATION policies.


next up previous
Next: Example Up: POA Previous: Architecture

MICO
Tue Nov 10 11:04:45 CET 1998