Table of Contents
- List of Examples
- List of Figures
- List of Tables
- Title and Copyright Information
- 1 Introduction to Oracle Tuxedo Programming
-
2
Managing Typed Buffers
- 2.1 Overview of Typed Buffers
- 2.2 Allocating a Typed Buffer
- 2.3 Putting Data in a Buffer
- 2.4 Resizing a Typed Buffer
- 2.5 Checking for Buffer Type
- 2.6 Freeing a Typed Buffer
- 2.7 Using a VIEW Typed Buffer
- 2.8 Using a RECORD Typed Buffer
- 2.9 Using an FML Typed Buffer
- 2.10 Using an XML Typed Buffer and the Apache Xerces C++ Parser
- 2.11 Using an MBSTRING Typed Buffer
- 2.12 Customizing a Buffer
- 3 Programming Environment
- 4 Writing Clients
- 5 Writing Servers
-
6
Writing Request/Response Communication
- 6.1 Overview of Request/Response Communication
-
6.2
Sending Synchronous Messages
- 6.2.1 Example: Using the Same Buffer for Request and Reply Messages
- 6.2.2 Example: Testing for Change in Size of Reply Buffer
- 6.2.3 Example: Sending a Synchronous Message with TPSIGRSTRT Set
- 6.2.4 Example: Sending a Synchronous Message with TPNOTRAN Set
- 6.2.5 Example: Sending a Synchronous Message with TPNOCHANGE Set
- 6.3 Sending Asynchronous Messages
- 6.4 Setting and Getting Message Priorities
- 7 Writing Conversational Clients and Servers
- 8 Writing Event-based Clients and Servers
-
9
Writing Global Transactions
- 9.1 What Is a Global Transaction?
- 9.2 Starting the Transaction
- 9.3 Suspending and Resuming a Transaction
- 9.4 Terminating the Transaction
- 9.5 Implicitly Defining a Global Transaction
- 9.6 Defining Global Transactions for an XA-Compliant Server Group
- 9.7 Testing Whether a Transaction Has Started
-
10
Programming a Multithreaded and Multicontexted ATMI Application
- 10.1 Support for Programming a Multithreaded/Multicontexted ATMI Application
-
10.2
Planning and Designing a Multithreaded/Multicontexted ATMI
Application
- 10.2.1 What Are Multithreading and Multicontexting?
- 10.2.2 Auditing a Multithreaded or Multicontexted Application
- 10.2.3 Advantages and Disadvantages of a Multithreaded/Multicontexted ATMI Application
- 10.2.4 How Multithreading and Multicontexting Work in a Client
- 10.2.5 How Multithreading and Multicontexting Work in Server-Dispatched Threads an on ATMI Server
- 10.2.6 How Multithreading and Multicontexting Work in Application-Created Threads of an ATMI Server
-
10.2.7
Design Considerations for a Multithreaded and Multicontexted
ATMI Application
- 10.2.7.1 Environment Requirements
-
10.2.7.2
Design Requirements
- 10.2.7.2.1 Is the Task of Your Application Suitable for Multithreading and/or Multicontexting?
- 10.2.7.2.2 How Many Applications and Connections Do You Want?
- 10.2.7.2.3 What Synchronization Issues Need to Be Addressed?
- 10.2.7.2.4 Will You Need to Port Your Application?
- 10.2.7.2.5 Which Threads Model Is Best for You?
- 10.2.7.3 Interoperability Restrictions for Workstation Clients
-
10.3
Implementing a Multithreaded/ Multicontexted ATMI
Application
- 10.3.1 Preliminary Guidelines for Programming a Multithreaded/Multicontexted ATMI Application
-
10.3.2
Writing Code to Enable Multicontexting in an ATMI Client
- 10.3.2.1 Context Attributes
- 10.3.2.2 Setting Up Multicontexting at Initialization
- 10.3.2.3 Implementing Security for a Multicontexted ATMI Client
- 10.3.2.4 Synchronizing Threads Before an ATMI Client Termination
- 10.3.2.5 Switching Contexts
- 10.3.2.6 Handling Unsolicited Messages
- 10.3.2.7 Coding Rules for Transactions in a Multithreaded/Multicontexted ATMI Application
- 10.3.3 Writing Code to Enable Server-Dispatched Multicontexting and Multithreading Threads in an ATMI Server
-
10.3.4
Writing Code to Enable Multicontexting in Application-Created
Threads of an ATMI Server
- 10.3.4.1 Creating Threads
- 10.3.4.2 Associating Application Threads with a Context
- 10.3.4.3 Associating Application Threads with an Existing Server-Dispatched Context
- 10.3.4.4 Sample Code for Associating Application Thread with an Existing Server-Dispatched Context in a Multicontexted Server
- 10.3.4.5 Associating Application Threads with Application-Created Context
- 10.3.4.6 Sample Code for Associating Application Thread with Application-created server Context in a Multicontexted Server
-
10.3.5
Writing a Multithreaded ATMI Client
- 10.3.5.1 Coding Rules for a Multithreaded ATMI Client
- 10.3.5.2 Initializing an ATMI Client to Multiple Contexts
- 10.3.5.3 Context State Changes for an ATMI Client Thread
- 10.3.5.4 Getting Replies in a Multithreaded Environment
- 10.3.5.5 Using Environment Variables in a Multithreaded and/or Multicontexted Environment
- 10.3.6 Using Per-context Functions and Data Structures in a Multithreaded ATMI Client
- 10.3.7 Using Per-process Functions and Data Structures in a Multithreaded ATMI Client
- 10.3.8 Using Per-thread Functions and Data Structures in a Multithreaded ATMI Client
- 10.3.9 Sample Code for a Multithreaded ATMI Client
- 10.3.10 Writing a Multithreaded ATMI Server
- 10.3.11 Compiling Code for a Multithreaded/Multicontexted ATMI Application
- 10.4 Testing a Multithreaded/Multicontexted ATMI Application
-
11
Managing Errors
- 11.1 System Errors
- 11.2 Abort Errors
- 11.3 Oracle Tuxedo System Errors
- 11.4 Call Descriptor Errors
- 11.5 Conversational Errors
- 11.6 Duplicate Object Error
- 11.7 General Communication Call Errors
- 11.8 Invalid Argument Errors
- 11.9 MIB Error
- 11.10 No Entry Errors
- 11.11 Operating System Errors
- 11.12 Permission Errors
- 11.13 Protocol Errors
- 11.14 Queuing Error
- 11.15 Release Compatibility Error
- 11.16 Resource Manager Errors
- 11.17 Timeout Errors
- 11.18 Transaction Errors
- 11.19 Typed Buffer Errors
- 11.20 Application Errors
- 11.21 Handling Errors
- 11.22 Transaction Considerations
- 11.23 Communication Etiquette
- 11.24 Transaction Errors
- 11.25 Transaction Timeouts
- 11.26 tpreturn( ) and tpforward( ) Functions
- 11.27 tpterm( ) Function
- 11.28 Resource Managers
- 11.29 Sample Transaction Scenarios
- 11.30 Oracle TUXEDO System-supplied Subroutines
- 11.31 Central Event Log
- 11.32 Debugging Application Processes
- 11.33 Comprehensive Example