ServerPatterns are design or architectural patterns for ''servers'', i.e. systems that process requests from clients. Note that a server is '''not''' application code -- it is an execution context that provides resources needed to run application code. ApplicationPatterns are covered elsewhere. For example, an EjbServer consists of a JavaVirtualMachine, an EjbContainer, and various underlying services (transactions, security, etc.). The ServerPatterns in this context use JavaTwoEnterpriseEdition terminology. Generalising somewhat, a particular request enters the server via some type of communications transport protocol carrying an application-level protocol, such as the CommonObjectRequestBrokerArchitecture (CORBA) InternetInterOrbProtocol (IIOP). The request is analyzed (validated, security checked, etc.), allocated various resources (such as memory, CPU, etc), and demultiplexed and dispatched to an appropriate request handler that processes it. As it runs, it may lose control if it attempts to acquire additional resources and will be re-dispatched when those resources become available. ServerPatterns are concerned with connection and memory management, event handling, synchronization, concurrency, security, dependability and fault isolation, and other infrastructure issues. ---- A wide variety of ServerPatterns can be found in PatternOrientedSoftwareArchitectureTwo. ---- CategoryPattern