Written by the technology's inventors and principal architects, this book provides a definitive, up-to-date, and comprehensive overview of TUXEDO, the leading software system for On-Line Transaction Processing (OLTP). Appropriate for anyone with an interest in distributed business applications - information systems managers, software architects, and developers - the book includes a general introduction to distributed transaction processing technology, a broad overview of TUXEDO's features and operation, and a more detailed technical guide to TUXEDO applications development and administration.
You will learn about many of TUXEDO's state-of-the-art features, including ATMI, typed buffers (including FML), the EventBroker(tm), Transactional Remote Procedure Call (TxRPC), the Application Queuing System, TMIB-based administration, and more. In addition, an overall architectural view of a TUXEDO-based application gives you a concrete understanding of how these features and capabilities function in a working environment. You will come away from this book with an insider's view of the rationale behind many of TUXEDO's sophisticated features and an excellent understanding of how and why the TUXEDO System works. Current with the latest release, the book covers TUXEDO version 6.1.
I. SETTING THE STAGE FOR UNDERSTANDING THE TUXEDO SYSTEM.1. Opportunities and Challenges in Distributing Business Applications.
Mainframes - “Once Upon a Time . . .”
Minicomputers - Davids Take on Goliath.
PCs - David Becomes Goliath!
The Effect of Mobile Computing - There Is No Escaping the System.
Improved Networking - Hardware and Software.
The Benefits of Distributing Your Business Applications.
The Costs of Distributing Your Business Applications.
Summary - “Should You Choose to Accept This Assignment . . .”2. Distributing Data and Logic.
Monolithic Applications - All Your Instructions in One Basket.
Distributing Data - The Easy Choice.
Distributing Logic - The Right Choice.
Integrating Data and Processing - The World of Brokers.
Summary.3. Communication and Administration Paradigms for Distributed Business Applications.
Request/Response - “Ask and Ye Shall Receive”
Conversations - When Once (Over and Back) Isn't Enough.
Events - Things Happen.
Queues - Deferred Communication.
Data Representation for Communications - It's All in the Presentation.
Error Conditions - “Are You Still There?”
Transactions - Undoing the Past.
Managers and Managed Entities - Answering to a Higher Authority.
Security - You Are Authorized to Read This Section.
II. OVERVIEW OF THE TUXEDO SYSTEM.4. Application Development - Overview.
TUXEDO Servers and Services.
TUXEDO Data Types.
Using Transactions in Your Application.
Summary.5. Application Administration - Overview.
Application Administration - What Is It?
What Is a TUXEDO Application?
The TUXEDO Management Information Base (TMIB).
The TUXEDO System Administrative Environment.
Using the TUXEDO Administrative Tools.
Summary.6. The Anatomy of a TUXEDO Application.
Hiding Complexity to Make Building Distributed Applications Simpler.
Portability - A Key Characteristic of the TUXEDO System.
The TUXEDO System - A Service Request Broker.
The TUXEDO Run-Time System - The Basic SRB.
Basic and Advanced Administrative Services.
III. DEVELOPMENT OF A TUXEDO APPLICATION.7. Introduction to the Application Programming Interface.
The API and Language Environments.
Building TxRPC Clients and Servers.
Summary.8. Typed Buffers.
Using Typed Buffers: tpalloc, tprealloc, tpfree, tptypes.
The CARRAY and STRING Built-In Types.
The FML Built-In Type.
The VIEW Built-In Type.
Custom Buffer Types.
Summary.9. Joining and Leaving the Application.
Summary.10. Request/Response Communication.
Summary.11. Conversational Communication.
What Is Conversational Communication?
Overview of the TUXEDO System's Conversational Interface.
Initiating a Conversation: tpconnect.
Exchanging Data: tpsend and tprecv.
Ending a Conversation in the Service: tpreturn.
Ending a Conversation in the Client: tpdiscon.
Summary.12. Application Queues.
Forwarding Queued Messages to Servers.
Summary.13. Event-Based Communication.
Unsolicited Event Notification.
Summary.14. Transactions in the TUXEDO System.
Creating a Transaction.
Terminating a Transaction.
Transactions and Communications Revisited.
Recovery - Picking Up the Pieces.
IV. ADMINISTRATION OF A TUXEDO APPLICATION.15. Application Administration and Monitoring.
Responsibilities of TUXEDO Administrators.
Structuring a Distributed Business Application.
Activating a Distributed Application.
Monitoring the Application.
Changing the Application Configuration.
Securing Your Application.
Tuning the Administrative Subsystem to Your Needs.
Summary.16. Failure Handling.
Failure Handling Philosophy.
Computer and Network Failure.
Failure in Transaction Processing.
Automated Application Recovery.
Summary.17. A Tour of the TUXEDO Management Information Base.
What Is the TMIB?
Administering the TUXEDO System - The Core Sub-MIB.
Administering TUXEDO Security - The ACL Sub-MIB.
Administering Workstations - The /WS Sub-MIB.
Administering Application Queues - The /Q Sub-MIB.
Administering Application and System Events - The Event Sub-MIB.
Summary.18. Getting Applications to Work Together.
When to Use Domains.
Naming Resources Across Domains.
The Journey You've Taken.
The Road Ahead.
Additional Material About the TUXEDO System.Appendix A - Example.
This introductory book on the TUXEDO System was written by its principal inventors and architects. The intended audience for the book includes managers of software teams, software architects, and software designers and developers who wish to understand issues in constructing distributed business applications and who wish to see how the TUXEDO System can help them do their jobs. The purpose of this book is to give an overview of, and motivation for, the facilities found within the TUXEDO System. Although this book is neither a reference manual nor a programming guide for the TUXEDO System, the epilogue tells you how to obtain these manuals TUXEDO, as well as providing additional sources of information, for example, case studies, regarding the use of the TUXEDO System.
The software which comprises the TUXEDO System derives from a number of computer science disciplines, including networking, database and transaction processing systems, operating systems, and language theory. It is not the intent of this book to explain the theory of these subject areas with any rigor. Rather, topics from them will be cursorily introduced as they relate to the facilities provided by the TUXEDO System. For a comprehensive text that covers much of the theory referenced in this book, we suggest that you read Gray-Reuter.
Our book contains interface descriptions, programming fragments, and a complete example. As an introductory book, the intent of these descriptions and programming fragments is to give you a concrete visualization of how the programming facilities of the TUXEDO System may be used. This book is not intended to be a substitute for the TUXEDO System product documentation.
The TUXEDO System is a set of software modules that enables the construction, execution, and administration of high performance, distributed business applications. Originally planned as a framework for building such applications atop the UNIX Operating System, the TUXEDO System has widened its scope to enable the construction of distributed business systems which integrate a variety of desktop and server operating systems.
Construction of the TUXEDO System began in 1983 as an applied, forward-looking work project, at the time called The UNIX Transaction System (UNITS), within the Bell Laboratories division of AT&T. The target applications for UNITS were UNIX-based operations support systems within AT&T. Many of the ideas found within the UNITS System can be traced to the system software components of the LMOS Project LMOS, an application which tracked repair incidents in telephone circuits and which was one of the first successful UNIX-based "down-sized" applications.
During the development of LMOS, no substantial commercial database technology was offered on the UNIX Operating System. Thus, UNITS research initially focused on database technology and produced a database system codenamed DUX (Database for UNIX). DUX was used on projects internal to AT&T, but was never sold commercially. To provide for applications requiring a large number of users, UNITS research also began an investigation into client-server-based application technology, and produced a client-server framework codenamed TUX (Transactions for UNIX). Like DUX, TUX was used on internal AT&T projects, but was never sold commercially. Ideas from the DUX and TUX efforts were subsequently combined into a transaction-enabled, client-server communications framework. When this framework was first distributed onto AT&T 3B4000 computers in Release 3.0, Tom Bishop, a principal architect of the 3B4000, coined the term "TUXEDO" when he quipped that "TUX has been Extended for Distributed Operation!"
In 1989, the UNITS project was transferred to the UNIX System Laboratories (USL) division of AT&T, and its client-server framework was offered as a commercial product under the name "The TUXEDO System." The TUXEDO System was transferred to Novell, Inc. when it acquired USL in 1993. In 1996, BEA, Inc. entered into an exclusive agreement with Novell to distribute and continue development of the TUXEDO System on a variety of computer platforms. In the meantime, numerous AT&T applications, which had adopted UNITS as an application framework, "graduated" to the TUXEDO System. By 1995, the TUXEDO System had found wide applicability to a large variety of uses in numerous industries.
Release 1.0 of the TUXEDO System, available in 1984, provided client-server facilities within a single random access memory computer - you can think of it as "Client Server in a Box." Release 1.0 allowed an application to be partitioned into a set of cooperating client and server processes and provided a rudimentary Application Programming Interface (API) that supported request/response interactions among them. Clients located and sent their requests to servers via a high-speed name server called the Bulletin Board (BB).
Release 2.0 became available in 1986 and contained the system's first facility to supply high availability applications. This took the form of a system monitor which restarted failed application servers. The high availability facilities have increased over subsequent releases in the form of various "buddy systems," "heartbeat monitors," and "self-healing" functions for system and application software components.
Release 3.0, available in 1987, provided client-server facilities within a single computer, AT&T's 3B4000, that had individual Processing Elements (PEs), each consisting of a CPU and private memory. The PEs were connected by a high-speed bus. The concept was essentially a small "LAN in a Box." Release 3.0 provided the first distribution of clients and servers onto separate memories and maintained Release 1.0's request/response API. A key to the implementation of Release 3.0 was the replication of the Bulletin Board in the memory of each PE. Release 3.0 also introduced a central configuration file for an application and provided boot, shutdown, and administration commands for an application.
Release 4.0, available in 1989, provided client-server facilities across a set of heterogeneous computers connected via a Local Area Network (LAN). Release 4.0 drew some technology from Release 3.0, in particular, the distribution of the Bulletin Board, while introducing transaction support and the Application-to-Transaction Monitor interface (ATMI) into the TUXEDO System. The introduction of transactions led to the invention of the XA interface to support the transactional control of heterogeneous databases, and the requirement to use a common library interface to support the transmission of different types of data among heterogeneous computers led to the invention of typed buffers. Release 4.0 was the first commercially licensed release of the TUXEDO System.
Release 4.2, available in 1993, provided for the inclusion of personal computers and workstations as client devices for the TUXEDO System. Release 4.2 also included support for communications to mainframes, thus enabling enterprise connectivity from desktop to mainframe. Support for conversational and queued communication paradigms was also introduced into ATMI in this release.
Release 5.0, available in 1994, provided for the federation of TUXEDO applications through a facility called Domains. Release 5.0 also provided for the inclusion of Transactional Remote Procedure Call (TxRPC) as a syntax for request/response communication and provided for gateways to the Open Software Foundation's (OSF) Distributed Computing Environment (DCE)-based applications. The result was the enablement of very large enterprise configurations, as well as inter-enterprise transaction processing.
Release 6.1, available in 1995, provided a comprehensive architecture for administering TUXEDO System based applications. This architecture includes a published classification, called the TMIB, of the TUXEDO System's administrative data, a programming interface called TMIB API to the TMIB, and a Graphical User Interface (GUI) to access and modify the TMIB. Release 6.1 also saw the introduction of additional security controls in the form of Access Control Lists (ACLs). In addition, another communication paradigm, called brokered events, was introduced into ATMI in this release.
This book describes the TUXEDO System as of April, 1996. This includes work through Release 6.1, as well as a number of add-on products.
Substantial technical innovations have been made by the engineers of the TUXEDO System in the years since the start of the UNITS forward-looking work project, including:
This book is divided into four parts, comprising 18 chapters. It proceeds from the general to the specific and visits the main concepts and facilities found in the TUXEDO System at progressively more detailed levels. The initial treatment of a facility is at the conceptual level. The concept is next discussed in a TUXEDO setting, and finally, the specific usage of the concept is presented. For example, the notion of a transaction is introduced in Part I Chapter 3, the relationship of transactions to facilities found within a TUXEDO application is discussed in Part II Chapter 4, the specifics for programmatic use within a TUXEDO application are presented in Part III Chapter 14, and administration of transactions is discussed in Part IV Chapter 15. An example showing the use of transactions is given in Appendix A.Part I of this book, "Setting the Stage for Understanding the TUXEDO System," provides background and motivation for the facilities found in the TUXEDO System and for the application architectures enabled by these facilities. This part gives an overview of the technologies involved in distributed business applications and will be understood by those with a basic familiarity with computerized business systems. Project managers and Information Technology (IT) managers will find Part I particularly useful.
Chapter 1, "Opportunities and Challenges in Distributing Business Applications," describes the forces in the computer industry that require the distribution of business applications. It goes on to describe the business requirements that distributed application frameworks need to satisfy.
Chapter 2, "Distributing Data and Logic," gives an overview of popular techniques for distributing data and processing in business applications and describes Application Function Shipping as the programming method encouraged by the TUXEDO System.
The TUXEDO System provides easy to use, yet sophisticated, communications interfaces for programmers and a comprehensive and programmable administrative system for administrators. The concepts behind these interfaces are introduced in Chapter 3, "Communication and Administration Paradigms for Distributed Business Applications."
Part II of this book, "Overview of the TUXEDO System," describes the programming and administration interfaces and facilities provided in the TUXEDO System. Application architects and software designers will find this part of the book very useful. IT managers may wish to skim these chapters.
Chapter 4, "Application Development-Overview," concentrates on application programming facilities, with emphasis on the TUXEDO System concepts of clients, servers, queues, events, and transactions. The role, construction method, and use of these facilities within a TUXEDO-based application are described.
Chapter 5, "Application Administration-Overview," relates the administrative concepts introduced in Chapter 3 to administrative functionality provided in the TUXEDO System. It indicates the major system entities that are to be administered and provides an overview of the programming and graphical facilities used to create and monitor a TUXEDO-based application. Chapter 5 also introduces the concept of a Domain, which identifies the administration boundary of a TUXEDO-based application.
Chapter 6, "The Anatomy of a TUXEDO Application," provides an overall architectural view of a TUXEDO System-based application. It identifies the system software that supports application logic and shows the flow of application calls. This chapter is ideal for architects, designers, and administrators trying to understand what a distributed TUXEDO application "really looks like."
Part III of this book, "Development of a TUXEDO Application," provides a tour through the development facilities provided by the TUXEDO System. It is intended for potential developers of TUXEDO-based applications and assumes a fluency with the C or COBOL programming languages. IT managers may wish to skim this part of the book.
Chapter 7, "Introduction to the Application Programming Interface," provides an introduction to the design of the TUXEDO System Application Programming Interfaces (APIs), the language bindings supported by the system, and indicates the methods used to create application modules.
Chapter 8, "Typed Buffers," deals with the problem of the representation of data elements passed between communicating programs on different computer types. It describes TUXEDO 's built-in facilities for data representation and automatic data conversion, including FML, a unique data representation found within the TUXEDO System. FML is one of the TUXEDO System's most popular features and enables applications to pass variable numbers of variable length fields among communicating modules.
Chapter 9, "Joining and Leaving the Application," describes the interfaces used by client and server programs to join and leave a running application. For clients, this includes the presentation of any required security information. For server modules, it includes the functions used to advertise and withdraw advertisements of "services" within a domain.
Chapter 10, "Request/Response Communication," provides details on the request/response facilities provided by the system, including library-based ATMI calls, and Transactional Remote Procedure Calls (TxRPCs). The chapter describes synchronous and parallel constructs for request/response interactions and details several constructs unique to the TUXEDO System, including fan-out and pipelined parallelism.
Chapter 11, "Conversational Communication," presents the TUXEDO System's conversational programming interface. This interface is used when communicating modules need to conduct their business over a sequence of communications.
Chapter 12, "Application Queues," gives details on the Application Queuing System offered by the TUXEDO System. Application Queues allow modules to communicate in a time-independent manner. This software may be used to perform deferred actions, implement work-flow systems, and buffer communications to systems where the rate of input exceeds processing capacity.
Chapter 13, "Event-Based Communication," covers the TUXEDO System's APIs for direct and brokered event communication, including the methods used to generate an event and the facilities to receive and act on events. Transactional brokered events are unique to the TUXEDO system and provide a novel tool to be used in the programming of TUXEDO-based applications.
Chapter 14, "Transactions in the TUXEDO System," provides an introduction to the use of transactions within a TUXEDO application, including the programmatic initiation and termination of transactions, and transactional infection and transactional isolation across communications boundaries.
Part IV of this book, "Administration of a TUXEDO Application," concentrates on the administration facilities provided by the system. This chapter should be of interest not only to those who might become the administrators and operators of TUXEDO-based applications, but also for the application architects who may wish to design their application with the needs of the administrator in mind. Indeed, as pointed out in this part of the book, close cooperation between application designers and administrators is essential to having a distributed application successfully deployed.
Chapter 15, "Application Administration and Monitoring," begins a task-oriented view of the administrator's job and indicates the various facilities provided to help make the administration of an application as easy as its creation.
Failures are the parts most often ignored in application design. However, it is precisely at the height of a failure scenario that the system needs to provide the right tools to help analyze and repair the problem. Chapter 16, "Failure Handling," describes the TUXEDO System approach to the handling of failures in a distributed application.
Chapter 17, "A Tour of the TUXEDO Management Information Base," provides in-depth coverage of the TUXEDO System's Management Information Base (TMIB). Understanding the TMIB is a great way to understand the essentials of the TUXEDO System.
The Domains subsystem of the TUXEDO System allows multiple TUXEDO-based applications to work together, forming "super applications." Moreover, Domains provides a good way to interoperate with non-TUXEDO distributed applications, including a variety of proprietary TP monitors and other distributed systems frameworks, such as the Object Management Group's (OMG) Common Object Request Broker Architecture (CORBA). Chapter 18, "Getting Applications to Work Together," provides an introduction to the Domains subsystem.
The Epilogue of this book provides a retrospective on what you have just read and additional information sources on the TUXEDO System.
Appendix A provides a complete example of the construction of a TUXEDO-based application. Appendix B provides a comprehensive glossary for terms introduced in this book. Appendix C provides a list of references used throughout the book.
Throughout this book, when new terms are introduced, they appear in an italic typeface. A definition of such terms may be found in the glossary. The terms function, procedure, primitive, and routine are used interchangeably throughout the book. Function names and system variables appear in a bold typeface. Throughout the book, code fragments are presented as examples of programming interface usage. Such fragments often omit error checking. This is intentional and is done so the reader can concentrate on the construct being described.
Our thanks go to Steve Pendergrast for his persistent suggestions that we write this book. We also express our gratitude to Steve, Ed Felt, and Randy MacBlane for consultations they provided on certain technical aspects of the book. We wish to thank Novell for its permission to use its computing facilities to test examples found within this book and to create, capture, and reproduce renditions of the TUXEDO System 's Graphical User Interface. We also thank the staff of Addison-Wesley, particularly, Katie Duffy, Avanda Peters, and Mike Hendrickson for the assistance and understanding they have provided during this project. Thanks go to LMY Studios for their work in re-rendering our figures. We commend Kenneth Ingham, Lynn Kubeck, Laura Michaels, Neil Ostrove, Steve Pendergrast, and Christopher Youngworth for their thoughtful reviews of an early draft of the book.
We wish to provide special acknowledgment for members of the TUXEDO project, past and present. Our fellow engineers, including engineers from other companies, and technical writers have contributed enormously to the conception and high-quality implementation of the software and documentation described in this book. Our marketing and product management organizations have helped popularize and promote the TUXEDO System throughout the world. The salespeople of our company and our licensees and distributors have brought the TUXEDO System to numerous satisfied customers.
We wish to recognize the contributions of our customers, who have continually supported our efforts, demanded excellence, and challenged our creativity.
Finally, we wish to acknowledge the management of AT&T, USL, Novell, and BEA for their continued support and encouragement during the course of the TUXEDO project.