Previous | Table of Contents | Next |
The POA is designed to meet the following goals:
• Allow programmers to construct object implementations that are portable between different ORB products.
• Provide support for objects with persistent identities. More precisely, the POA is designed to allow programmers to build object implementations that can provide consistent service for objects whose lifetimes (from the perspective of a client holding a reference for such an object) span multiple server lifetimes.
• Provide support for transparent activation of objects.
• Allow a single servant to support multiple object identities simultaneously.
• Allow multiple distinct instances of the POA to exist in a server.
• Provide support for transient objects with minimal programming effort and overhead.
• Provide support for implicit activation of servants with POA-allocated Object Ids.
• Allow object implementations to be maximally responsible for an object’s behavior. Specifically, an implementation can control an object’s behavior by establishing the datum that defines an object’s identity, determining the relationship between the object’s identity and the object’s state, managing the storage and retrieval of the object’s state, providing the code that will be executed in response to requests, and determining whether or not the object exists at any point in time.
• Avoid requiring the ORB to maintain persistent state describing individual objects, their identities, where their state is stored, whether certain identity values have been previously used or not, whether an object has ceased to exist or not, and so on.
• Provide an extensible mechanism for associating policy information with objects implemented in the POA.
• Allow programmers to construct object implementations that inherit from static skeleton classes, generated by OMG IDL compilers, or a DSI implementation.