Distributed SOM (DSOM)
Appearance
What is Distributed SOM?
DSOM features
When to use DSOM
Chapter Outline
Tutorial example
Programming DSOM applications
Configuring DSOM applications
Running DSOM applications
DSOM and CORBA
Advanced topics
Error reporting and troubleshooting
A Simple DSOM Example
The "Stack" interface The "Stack" class implementation Client program using a local stack Client program using a remote stack Using specific servers A note on finding existing objects "Stack" server implementation Compiling the application Installing the implementation Setting environment variables Registering the class in the Interface Repository Registering the server in the Implementation Repository Running the application "Stack" example run-time scenario Summary
Basic Client Programming
DSOM Object Manager Initializing a client program Exiting a client program Creating remote objects Creating an object in an arbitrary server Proxy objects Servers and server objects Creating an object in a specific server Inquiring about a remote object's implementation Destroying remote objects Destroying objects via a proxy Destroying objects via the DSOM Object Manager Destroying objects via a server object Creating remote objects using user-defined metaclasses Saving and restoring references to objects Finding existing objects Finding server objects Invoking methods on remote objects Determining memory allocation and ownership Passing object references in method calls Memory management Memory management for method parameters The CORBA policy for parameter memory management The 'somdReleaseResources' method and object-owned parameters Writing clients that are also servers Compiling and linking clients
Basic Server Programming
Server run-time objects Server implementation definition SOM Object Adapter (SOMOA) Server object Server activation Initializing a server program Initializing the DSOM run-time environment Initializing the server's ImplementationDef Initializing the SOM Object Adapter When initialization fails Processing requests Exiting a server program Managing objects in the server Object references, ReferenceData, and the ReferenceData table Simple SOM object references SOMDServer (default server-object class) Creation and destruction of SOM objects Mapping objects to object references Hints on the use of create vs. create_constant Mapping object references to objects Dispatching a method Example: Writing a persistent object server Identifying the source of a request Compiling and linking servers
Implementing Classes
Using SOM class libraries Role of DSOM generic server program Role of SOM Object Adapter Role of SOMDServer Implementation constraints Using other object implementations Wrapping a printer API Parameter memory management Building and registering class libraries
Configuring DSOM Applications
Preparing the environment Registering class interfaces Registering servers and classes The 'regimpl', 'pregimpl', 'wregimpl' registration utilities Registration steps Using 'regimpl' Command line interface to 'regimpl' Registration steps using 'pregimpl' or 'wregimpl' Programmatic interface to the Implementation Repository The 'dsom' server manager utility Interpretation of 'dsom' messages Verifying the DSOM environment with 'somdchk' Freeing interprocess communication resources on AIX Using 'somdclean' Using 'cleanipc'
Running DSOM Applications
Running the DSOM daemon (somdd) Running DSOM servers
DSOM as a CORBA-compliant Object Request Broker
Mapping OMG CORBA terminology onto DSOM Object Request Broker run-time interfaces Object references and proxy objects Creation of remote objects Interface definition language C language mapping Dynamic Invocation Interface (DII) Implementations and servers Object Adapters Extensions and limitations
Advanced Topics
Peer vs. client/server processes Multi-threaded DSOM programs Event-driven DSOM programs using EMan Sample server using EMan Dynamic Invocation Interface The NamedValue structure The NVList class Creating argument lists Building a Request Initiating a Request Example code Creating user-supplied proxies Customizing the default base proxy class Sockets class
Error Reporting and Troubleshooting
Error codes Troubleshooting hints Checking the DSOM setup Analyzing problem conditions