Tuxedo (software)

Last updated
Oracle Tuxedo
Developer(s) Oracle Corporation
Stable release
22.1.0.0.0 / October 2022;1 year ago (2022-10)
Written in C, C++, COBOL, Java, Python, Ruby, PHP
Operating system Cross-platform
Type Application server
License Proprietary
Website www.oracle.com/middleware/technologies/tuxedo.html

Tuxedo (Transactions for Unix, Extended for Distributed Operations) is a middleware platform used to manage distributed transaction processing in distributed computing environments. Tuxedo is a transaction processing system or transaction-oriented middleware, or enterprise application server for a variety of systems and programming languages. Developed by AT&T in the 1980s, it became a software product of Oracle Corporation in 2008 when they acquired BEA Systems. Tuxedo is now part of the Oracle Fusion Middleware.

Contents

History

From the beginning in 1983, AT&T designed Tuxedo for high availability and to provide extremely scalable applications to support applications requiring thousands of transactions per second on commonly available distributed systems. The original development targeted the creation and administration of operations support systems for the US telephone company that required online transaction processing (OLTP) capabilities.

The Tuxedo concepts derived from the Loop Maintenance Operations System (LMOS). Tuxedo supported moving the LMOS application off mainframe systems that used Information Management System (IMS) from IBM on to much cheaper distributed systems running (AT&T's own) Unix. [1]

The original Tuxedo team comprised members of the LMOS team, including Juan M. Andrade, Mark T. Carges, Terrence Dwyer, and Stephen Felts. [2] In 1993 Novell acquired the Unix System Laboratories (USL) division of AT&T which was responsible for the development of Tuxedo at the time. In September 1993 it was called the "best known" distributed transaction processing monitor, running on 25 different platforms. [3] In February 1996, BEA Systems made an exclusive agreement with Novell to develop and distribute Tuxedo on non-NetWare platforms, with most Novell employees working with Tuxedo joining BEA. [4] [5] In 2008, Oracle Corporation acquired BEA Systems, and TUXEDO was marketed as part of the Oracle Fusion Middleware product line. [6] [7]

Tuxedo has been used as transactional middleware by a number of multi-tier application development tools. The Open Group used some of the Tuxedo interfaces as the basis of their standards such as X/Open XA and XATMI. [8]

The Tuxedo developers published papers about it in the early 1990s. [9] [10] Later it became the basis of some research projects. [11] [12] [13]

Features

Messaging core

Tuxedo is at its core a message routing and queuing system. Requests are sent to named services and Tuxedo uses memory-based inter-process communication facilities to queue the requests to servers. The requester is unaware of where the server that actually processes the request is located or how it is implemented. In essence, Tuxedo provided the elements of service-oriented architecture (SOA) decades before the phrase was coined. Tuxedo can use the content of the message to determine what servers should be utilized to receive the request by means of data-dependent routing.

Clustering

The heart of the Tuxedo system is the Bulletin Board (BB). This is a shared memory segment that contains the configuration and state of a Tuxedo domain. Servers, services, transactions, and clients are all registered in the BB providing a global view of their state across the machines within a domain. To coordinate updates to the BB a process called the Bulletin Board Liaison (BBL) runs on each machine to keep the local copy of the BB up-to-date. A master machine runs a process called the "Distinguished Bulletin Board Liaison" that coordinates the updates to the BB. This allows each machine to have a view of what servers, services, transactions, and clients are on each machine within the domain.

Another process on each machine called the Bridge is responsible for passing requests from one machine to another. This allows Tuxedo to spread load across the various machines within a domain and allows servers and services to be running on multiple machines. In addition, the BBL and Bridge monitor each other and restart the other should one fail. In the advent of a failure of the master machine, another machine designated as a backup master can take over the function of master machine. Also, since machines within a single domain can be of different architectures (x86, IA32, SPARC, P-Series, etc.), the Bridge is also responsible for handling differences in things like endianness.

On Oracle Exalogic Tuxedo leverages the RDMA capabilities of InfiniBand to bypass the bridge. This allows the client of a service on one machine to directly make a request of a server on another machine.

Flexible buffer formats

Tuxedo applications can utilize a variety of message formats depending upon the type of data that is to be passed. One of the most popular formats is the FML buffer format which is much like a binary XML or ASN.1 format. FML buffers can contain an arbitrary number of named fields of arbitrary type. Fields can be repeated and nested. As it is a self-describing binary format, the processing of fields incurs very little overhead in comparison to the parsing necessary to support something like XML. VIEW buffers are essentially records, C structures, or COBOL copybooks. A VIEW buffer has an external description which allows Tuxedo to access the fields within it if necessary for things like data dependent routing. Other buffer formats include XML, CARRAY (opaque binary data), STRING, and MBSTRING (a string buffer containing multibyte characters.) Tuxedo can automatically and transparently convert FML buffers to and from XML buffers.

There is also support for user-developed buffer types (for example JamFlex buffers defined by Tuxedo version of Panther RAD toolset).

Communication concentrators

For remote clients (Java, CORBA, or/WS), Tuxedo provides communication concentrators called listener/handlers that handle the remote network communication. Clients connect to these communication concentrators, which act as proxies for the clients. As clients make requests, the listener/handler uses the local Tuxedo infrastructure to make the request on the behalf of the client. Tuxedo then load balances the requests across the servers within the domain that offer the service even if the server is not on the local machine. This is in contrast to most Java EE application servers where load balancing is done by the client making requests to different machines with the cluster.

Gateways

To facilitate the sharing of services across domains, Tuxedo provides domain gateways. A domain gateway allows importing and exporting services from remote domains. This allows the local domain to see services on remote domains as 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 send out-of-band notifications to clients that aren't necessarily waiting for a response. Brokered events allow application to subscribe to events of interest and when another application posts an event, all applications subscribed to that event receive it. This allows applications to use an event driven model instead of the more typical request/response model. As well this provides a publish and subscribe messaging model that can be combined with /Q.

Add-on products

Oracle offers a number of add-on products to Tuxedo.

Mainframe re-hosting

In March 2010, Oracle announced two new products. [19] Application Runtime for CICS and Batch along with the associated Oracle Tuxedo Application Rehosting Workbench allows the migration of IBM Customer Information Control System (CICS) and batch applications onto Tuxedo on distributed systems. By providing automated conversion tools, CICS equivalent API pre-processor macro expansion, and a JES-2 like Batch execution environment, the migration of mainframe applications is greatly simplified.

SALT

This product provides a bi-directional web services SOAP/HTTP(S) gateway. This gateway allows Tuxedo services to be accessed by external SOAP clients without making any changes to the Tuxedo service. Likewise, Tuxedo applications can call an external web service as though it were a local Tuxedo service. The latest version of SALT supports WS-AtomicTransactions and modules for Apache Web Server, Oracle HTTP Server, and Oracle iPlanet Web Server, that allows the creation of dynamic web content by calling Tuxedo services. In version 12.1.3 SALT added support for RESTful services.

TSAM Plus

This product provides centralized monitoring capabilities for multiple Tuxedo domains. TSAM Plus agents are deployed on the machines in a Tuxedo domain. These agents collect metric data from the running Tuxedo processes based on a configured policy, and send the data back to the TSAM Plus Manager where it is used historically or in real time. TSAM Plus provides configuration information, call path, call pattern, service execution, transaction, and more monitoring metrics. TSAM Plus also monitors Tuxedo ART CICS and Batch applications. An additional component of TSAM Plus is a plug-in for Oracle Enterprise Manager Cloud Control that provides full operation, configuration, administration, and management of a Tuxedo application.

Tuxedo Mainframe Adapters (TMA)

This product provides a set of gateway processes that run on Tuxedo that communicate with a mainframe using its native protocols. This gateway provides bidirectional integration between mainframe and Tuxedo platforms and makes Tuxedo appear as a remote CICS or IMS region to the mainframe, and the remote CICS or IMS region as another Tuxedo domain to the local Tuxedo application.

JCA Adapter

The Tuxedo JCA adapter provide a JCA 1.5 compliant Resource Adapter that can be deployed to any Java EE (J2EE) 1.5 or later JCA container. The adapter supports both the JCA Common Client interface or CCI, as well as the JATMI interface supported by the Oracle WebLogic Tuxedo Connector component of Oracle WebLogic Server. Message inflow and outflow is supported along with distributed transaction support.

Tuxedo Message Queue

Provides enterprise messaging capabilities that combines the features of Oracle MessageQ with Tuxedo. This extends the existing /Q message queuing facility of Tuxedo by providing things like delivery notification, offline messaging, and store and forward capability.

Related Research Articles

Middleware in the context of distributed applications is software that provides services beyond those provided by the operating system to enable the various components of a distributed system to communicate and manage data. Middleware supports and simplifies complex distributed applications. It includes web servers, application servers, messaging and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture.

<span class="mw-page-title-main">Inter-process communication</span> How computer operating systems enable data sharing

In computer science, inter-process communication (IPC), also spelled interprocess communication, are the mechanisms provided by an operating system for processes to manage shared data. Typically, applications can use IPC, categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing.

An application server is a server that hosts applications or software that delivers a business application through a communication protocol.

<span class="mw-page-title-main">BEA Systems</span> Defunct American software corporation

BEA Systems, Inc. was a company that specialized in enterprise infrastructure software products, which was wholly acquired by Oracle Corporation on April 29, 2008.

<span class="mw-page-title-main">CICS</span> IBM mainframe transaction monitor

IBM CICS is a family of mixed-language application servers that provide online transaction management and connectivity for applications on IBM mainframe systems under z/OS and z/VSE.

In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality.

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.

Jakarta Connectors are a set of Java programming language tools designed for connecting application servers and enterprise information systems (EIS) as part of enterprise application integration (EAI). While JDBC is specifically used to establish connections between Java applications and databases, JCA provides a more versatile architecture for connecting to legacy systems. JCA was developed through the Java Community Process, with versions including JSR 16, JSR 112, and JSR 322.

IBM MQ is a family of message-oriented middleware products that IBM launched in December 1993. It was originally called MQSeries, and was renamed WebSphere MQ in 2002 to join the suite of WebSphere products. In April 2014, it was renamed IBM MQ. The products that are included in the MQ family are IBM MQ, IBM MQ Advanced, IBM MQ Appliance, IBM MQ for z/OS, and IBM MQ on IBM Cloud. IBM MQ also has containerised deployment options.

Online transaction processing (OLTP) is a type of database system used in transaction-oriented applications, such as many operational systems. "Online" refers to that such systems are expected to respond to user requests and process them in real-time. The term is contrasted with online analytical processing (OLAP) which instead focuses on data analysis.

A transaction processing system (TPS) is a software system, or software/hardware combination, that supports transaction processing.

Mule is a lightweight enterprise service bus (ESB) and integration framework provided by MuleSoft. The platform is Java-based but can act as broker for interactions between other platforms such as .NET using web services or sockets.

Oracle Enterprise Service Bus, a fundamental component of Oracle's Services-Oriented Architecture suite of products, provides integration of data and enterprise applications within an organisation and their connected enterprises.

A teleprocessing monitor is a control program that monitors the transfer of data between multiple local and remote terminals to ensure that the transaction processes completely or, if an error occurs, to take appropriate actions.

HP Reliable Transaction Router (RTR) is a transactional middleware for computer software, marketed by Hewlett Packard. RTR is used to integrate with applications that require reliable transaction services.

IBM WebSphere Optimized Local Adapters (OLA or WOLA) is a functional component of IBM's WebSphere Application Server for z/OS that provides an efficient cross-memory mechanism for calls both inbound to WAS z/OS and outbound from z/OS. Because it avoids the overhead of other communication mechanisms, it is capable of high volume exchange of messages. WOLA is an extension to the existing cross-memory exchange mechanism of WAS z/OS, with WOLA providing an external interface so z/OS address spaces outside the WAS z/OS server may participate in cross-memory exchanges. WOLA supports connectivity between a WAS z/OS server and one or more of the following: CICS, IMS, Batch, UNIX Systems Services and ALCS. WOLA was first made available in WAS z/OS Version 7, Fixpack 4 (7.0.0.4). Functional enhancements have appeared in subsequent fixpacks as documented in this article.

Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".

<span class="mw-page-title-main">Distributed Data Management Architecture</span> Open, published architecture for creating, managing and accessing data on a remote computer

Distributed Data Management Architecture (DDM) is IBM's open, published software architecture for creating, managing and accessing data on a remote computer. DDM was initially designed to support record-oriented files; it was extended to support hierarchical directories, stream-oriented files, queues, and system command processing; it was further extended to be the base of IBM's Distributed Relational Database Architecture (DRDA); and finally, it was extended to support data description and conversion. Defined in the period from 1980 to 1993, DDM specifies necessary components, messages, and protocols, all based on the principles of object-orientation. DDM is not, in itself, a piece of software; the implementation of DDM takes the form of client and server products. As an open architecture, products can implement subsets of DDM architecture and products can extend DDM to meet additional requirements. Taken together, DDM products implement a distributed file system.

Enduro/X is an open-source middleware platform for distributed transaction processing. It is built on proven APIs such as X/Open group's XATMI and XA. The platform is designed for building real-time microservices based applications with a clusterization option. Enduro/X functions as an extended drop-in replacement for Oracle Tuxedo. The platform uses in-memory POSIX Kernel queues which insures high interprocess communication throughput.

References

  1. Philip A. Bernstein; Eric Newcomer (2009). Principles of transaction processing. Morgan Kaufmann. pp. 330–336. ISBN   978-1-55860-623-4.
  2. "Juan M. Andrade". Author biography. Pearson Education InformIT. Retrieved October 11, 2011.
  3. Paul Korzeniowski (September 13, 1993). "Supercharge your LAN with On-Line Transaction Processing". InfoWorld. Vol. 15, no. 37. p. 70. Retrieved October 11, 2011.
  4. "Novell and BEA Systems, Inc. Complete Transition of TUXEDO to BEA". News release. BEA Systems, Inc. February 28, 1996. Archived from the original on July 1, 2003. Retrieved October 11, 2011. BEA is the exclusive developer and distributor of the TUXEDO System on UNIX, NT, and all non-NetWare platforms, and Novell will develop TUXEDO-based applications for NetWare. In addition, most Novell TUXEDO employees, including development and marketing personnel, have joined BEA, and BEA has assumed all contracts with TUXEDO partners, distributors, and customers. BEA has exclusive rights to the TUXEDO trademark.
  5. Paul Krill (February 5, 1996). "Novell Rents out Tuxedo Development". InfoWorld. Vol. 18, no. 6. p. 12. Retrieved October 11, 2011.
  6. Juan M. Andrade; Mark T. Carges; Terrence Dwyer; Stephen Felts (1996). The TUXEDO System: Software for Constructing and Managing Distributed Business Applications . Addison-Wesley. p. xxxiv. ISBN   978-0-201-63493-8.
  7. "Number 1 in Middleware: Oracle Unveils BEA's Role in Product Strategy for Next-generation Middleware" (Press release). Oracle Corporation. July 1, 2008. Retrieved October 11, 2011.
  8. Carl Hall (February 2, 1996). Building client/server applications using TUXEDO. John Wiley & Sons. p. 35. ISBN   978-0-471-12958-5.
  9. Juan M. Andrade; Mark T. Carges; M. R. MacBlane (February 24, 1992). "Open online transaction processing with the TUXEDO system". Digest of Papers COMPCON Spring 1992. Vol. 37. pp. 366–371. doi:10.1109/CMPCON.1992.186740. ISBN   978-0-8186-2655-5. S2CID   43607004.
  10. E. P. Felt (January 20, 1993). "Distributed transaction processing in the TUXEDO system". [1993] Proceedings of the Second International Conference on Parallel and Distributed Information Systems. Vol. 2. pp. 366–371. doi:10.1109/PDIS.1993.253082. ISBN   978-0-8186-3330-0. S2CID   45235735.
  11. H. Kaufmann; H.-J. Schek (December 18, 1996). "Extending TP-monitors for intra-transaction parallelism". Fourth International Conference on Parallel and Distributed Information Systems. Vol. 4. IEEE. pp. 250–261. doi:10.1109/PDIS.1996.568686. ISBN   978-0-8186-7475-4. S2CID   26548972.
  12. T. Altiok; Wei Xiong; M. Gunduc (December 9, 2001). "A capacity planning tool for the Tuxedo middleware used in transaction processing systems". Proceeding of the 2001 Winter Simulation Conference (Cat. No.01CH37304). Vol. 1. IEEE. pp. 502–507. CiteSeerX   10.1.1.78.2871 . doi:10.1109/WSC.2001.977330. ISBN   978-0-7803-7307-5. S2CID   1766282.
  13. Yin Wen; He Jingsha (December 9, 2001). "The application of Tuxedo middleware in the banking system". 2011 IEEE 3rd International Conference on Communication Software and Networks. Vol. 3. pp. 594–597. doi:10.1109/ICCSN.2011.6013904. ISBN   978-1-61284-485-5. S2CID   17234102.
  14. "Oracle Tuxedo 12c R2 Documentation". docs.oracle.com.
  15. "Oracle Tuxedo JCA 12cR1 (12.1.1) Documentation". docs.oracle.com.
  16. "Oracle SALT 12.1.3 Documentation". docs.oracle.com.
  17. "Oracle TSAM Plus 12cR2 (12.1.3) Documentation". docs.oracle.com.
  18. "Oracle Tuxedo 12c R2 Documentation". docs.oracle.com.
  19. "Oracle Releases New Mainframe Re-Hosting Products for Oracle Tuxedo 11g". News release. Oracle Corporation. March 31, 2010. Retrieved October 11, 2011.

Further reading