The bank fasl file corresponding to the
bank.idl
file (produced when compiling the defsystem) defines a servant class for each of the protocol classes corresponding to an IDL interface. Each of these classes inherits from the abstract class
PortableServer:ServantBase
, allowing instances of these classes to be registered with a POA.
The user provides an implementation of a servant class by defining a subclass of that class, called an implementation class , and defining methods, specialized on this implementation class, for each of the protocol functions corresponding to an IDL attribute or operation.
The bank fasl file defines a concrete skeleton method, specialized on the appropriate servant class, for each protocol function stemming from an IDL attribute or operation. When the POA receives a request from a client through the ORB it looks up the servant targeted by that request, and invokes the corresponding skeleton method on that servant. The skeleton method performs an upcall to the method that implements the protocol function for the implementation class of the servant. If the upcall succeeds, the skeleton method sends the result to the client. If the method raises a Common Lisp condition corresponding to a CORBA user or system exception, the skeleton method sends the CORBA exception back to client.