Methods and apparatus, including computer program products, for selecting
client adapters. A client abstraction layer identifies one or more
selection data elements in a client request and selects an adapter to
communicate with the client based on the selection data elements, wherein
each selection data element specifies an adapter type, a client type, or
data describing the client. The adapter can be selected based on a
multi-stage selection process that involves performing an adapter-request
process for selecting an adapter based on the selection data elements
that specify the adapter type; if the adapter-request process fails to
select an adapter, performing a client-identification process for
selecting an adapter based on the selection data elements that specify
the client type; and if the client-identification process fails to select
an adapter, performing a client-description process for selecting an
adapter based on the selection data elements that specify data describing
the client.