though they were local services. The domain gateways are responsible for propagating security and transaction context to the remote domain. Besides connecting Tuxedo domains together, domain gateways exist for mainframe systems using TCP/IP, IBM's Systems Network Architecture (SNA), or the OSI protocols, and Java Platform, Enterprise Edition application servers. For the mainframe gateways, each system sees the services imported from the remote system as local services and use the local systems infrastructure to interact with those services. This means that Tuxedo sees a CICS transaction as a Tuxedo service, and CICS sees a Tuxedo service as a CICS transaction. Failure recovery The BBL on each machine monitors the state of all servers and can automatically restart failed servers. It can also detect hung servers and kill/restart them as required. The BRIDGE process in a clustered environment monitors to BBL, so there are no single points of failure. Any transactions that are affected by a server or machine failure and that have not completed the prepare phase are rolled back. Transactions that have completed the prepare phase but not the commit phase will be committed as part of the Tuxedo boot sequence. Transaction monitoring and coordination Tuxedo applications can request that all service invocations and their associated updates to any resources controlled by resource managers (such as databases) be controlled by a transaction. Once the application begins a transaction, all subsequent service invocations and nested invocations are included as part of that transaction, even those services that were executed on remote domains. Tuxedo then coordinates the commit processing with the resource managers to ensure atomic updates to all affected resources. Transactions can be controlled by the application or automatically controlled by the Tuxedo configuration, i.e., container managed transactions. Queuing subsystem Tuxedo provides a queuing subsystem called /Q. This facility provides transient and persistent queues that allows applications to explicitly enqueue and dequeue messages from named queues. Queues can be ordered by message availability time, expiration time, priority, LIFO, FIFO, or a combination. Queues are managed by an XA compliant resource manager allowing queue operations to participate in distributed transactions. An automated queue forwarding server is provided that will remove entries from a queue and invoke an associated Tuxedo services, placing the reply message on an associated reply queue. Event subsystem The event subsystem within Tuxedo provides support for unsolicited events as well as brokered events. Unsolicited events allow Tuxedo applications to