ebook img

See Also PDF

326 Pages·2017·2.05 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview See Also

Oracle® Tuxedo Programming an Oracle Tuxedo ATMI Application Using C 11g Release 1 (11.1.1.3.0) December 2011 Oracle Tuxedo Programming an Oracle Tuxedo ATMI Application Using C, 11g Release 1 (11.1.1.3.0) Copyright © 1996, 2011, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065. This software is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use of this software. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. This software and documentation may provide access to or information on content, products and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services. Contents 1. Introduction to Oracle Tuxedo Programming Oracle Tuxedo Distributed Application Programming. . . . . . . . . . . . . . . . . . . . . . . . . .1-1 Communication Paradigms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2 Oracle Tuxedo Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4 Oracle Tuxedo Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6 Basic Server Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6 Servers as Requesters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8 Oracle Tuxedo API: ATMI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8 2. Managing Typed Buffers Overview of Typed Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1 Allocating a Typed Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7 Putting Data in a Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10 Resizing a Typed Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-12 Checking for Buffer Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-15 Freeing a Typed Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-17 Using a VIEW Typed Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-18 Setting Environment Variables for a VIEW Typed Buffer . . . . . . . . . . . . . . . . . .2-18 Creating a View Description File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-19 Executing the VIEW Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-23 Using an FML Typed Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-25 Setting Environment Variables for an FML Typed Buffer. . . . . . . . . . . . . . . . . . .2-25 Programming an Oracle Tuxedo ATMI Application Using C iii Creating a Field Table File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-25 Creating an FML Header File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27 Using an XML Typed Buffer and the Apache Xerces C++ Parser . . . . . . . . . . . . . . . 2-29 About the XML Typed Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-29 About the Apache Xerces C++ Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-30 XML Parser Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-30 XML Parser Support for ICU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-31 XML Parser Sample Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-31 Xerces Schema Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-31 Converting XML Data To and From FML/FML32 Buffers. . . . . . . . . . . . . . . . . 2-31 Using On-Demand Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-32 Using Automatic Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33 Mapping XML To and From FML/FML32 Field Types. . . . . . . . . . . . . . . . 2-36 Conversion Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-40 Using an MBSTRING Typed Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-42 Multibyte Character Encoding Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-44 Enabling MBSTRING to be Self-describing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-48 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-48 Safe/Unsafe Encoding Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-48 Multibyte Character Support Limitations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-49 Multibyte Character Encoding Support for libiconv. . . . . . . . . . . . . . . . . . . . . . . 2-49 Customizing a Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-51 Defining Your Own Buffer Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-53 Coding Switch Element Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-61 Adding a New Buffer Type to tm_typesw. . . . . . . . . . . . . . . . . . . . . . . . . . . 2-62 Compiling and Linking Your New tm_typesw . . . . . . . . . . . . . . . . . . . . . . . 2-63 Compiling and Linking Your New tm_typesw for a 16-bit Windows Platform . . 2-65 iv Programming an Oracle Tuxedo ATMI Application Using C Data Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-65 3. Programming Environment Updating the UBBCONFIG Configuration File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Setting Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 Including the Required Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 Starting and Stopping the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 4. Writing Clients Joining an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Using Features of the TPINIT Typed Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Client Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Unsolicited Notification Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 System Access Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 Resource Manager Association. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 Client Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 Leaving the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8 Building Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8 See Also. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Client Process Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 5. Writing Servers Oracle Tuxedo System main( ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 System-Supplied Server and Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3 System-Supplied Server: AUTHSVR( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3 System-Supplied Services: tpsvrinit( ) Function. . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4 Receiving Command-line Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4 Opening a Resource Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6 System-Supplied Services: tpsvrdone( ) Function. . . . . . . . . . . . . . . . . . . . . . . . . . 5-7 Programming an Oracle Tuxedo ATMI Application Using C v Guidelines for Writing Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8 Defining a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9 Example: Checking the Buffer Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-13 Example: Checking the Priority of the Service Request. . . . . . . . . . . . . . . . . . . . 5-14 Terminating a Service Routine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16 Sending Replies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16 Invalidating Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-23 Forwarding Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-24 Advertising and Unadvertising Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-28 Advertising Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-28 Unadvertising Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-29 Example: Dynamic Advertising and Unadvertising of a Service. . . . . . . . . . . . . 5-29 Building Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-30 See Also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-32 Using a C++ Compiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-32 Declaring Service Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-32 Using Constructors and Destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-33 6. Writing Request/Response Clients and Servers Overview of Request/Response Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Sending Synchronous Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2 Example: Using the Same Buffer for Request and Reply Messages . . . . . . . . . . . 6-4 Example: Testing for Change in Size of Reply Buffer . . . . . . . . . . . . . . . . . . . . . . 6-5 Example: Sending a Synchronous Message with TPSIGRSTRT Set. . . . . . . . . . . 6-6 Example: Sending a Synchronous Message with TPNOTRAN Set. . . . . . . . . . . . 6-7 Example: Sending a Synchronous Message with TPNOCHANGE Set. . . . . . . . . 6-9 Sending Asynchronous Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11 Sending an Asynchronous Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11 vi Programming an Oracle Tuxedo ATMI Application Using C Example: Sending an Asynchronous Message with TPNOTRAN | TPNOREPLY 6-13 Example: Sending Asynchronous Requests. . . . . . . . . . . . . . . . . . . . . . . . . . 6-14 Getting an Asynchronous Reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-15 Setting and Getting Message Priorities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16 Setting a Message Priority. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16 Getting a Message Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-18 7. Writing Conversational Clients and Servers Overview of Conversational Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 Joining an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3 Establishing a Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3 Sending and Receiving Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 Sending Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 Receiving Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7 Ending a Conversation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8 Example: Ending a Simple Conversation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 Example: Ending a Hierarchical Conversation. . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 Executing a Disorderly Disconnect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 Building Conversational Clients and Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-11 Understanding Conversational Communication Events. . . . . . . . . . . . . . . . . . . . . . . . 7-12 8. Writing Event-based Clients and Servers Overview of Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 Unsolicited Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2 Brokered Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2 Notification Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2 EventBroker Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-3 System-defined Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-4 Programming an Oracle Tuxedo ATMI Application Using C vii Programming Interface for the EventBroker. . . . . . . . . . . . . . . . . . . . . . . . . . 8-4 Defining the Unsolicited Message Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5 Sending Unsolicited Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5 Broadcasting Messages by Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-6 Broadcasting Messages by Identifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-7 Checking for Unsolicited Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8 Subscribing to Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8 Notification via Unsolicited Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-10 Notification via Service Call or Reliable Queue . . . . . . . . . . . . . . . . . . . . . . 8-10 Unsubscribing from Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-11 Posting Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-12 Example of Event Subscription . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-14 9. Writing Global Transactions What Is a Global Transaction?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 Starting the Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-2 Suspending and Resuming a Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-7 Suspending a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8 Resuming a Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8 Example: Suspending and Resuming a Transaction. . . . . . . . . . . . . . . . . . . . . . . . 9-9 Terminating the Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 Committing the Current Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 Prerequisites for a Transaction Commit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10 Two-phase Commit Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-11 Aborting the Current Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-12 Example: Committing a Transaction in Conversational Mode. . . . . . . . . . . . . . . 9-12 Example: Testing for Participant Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-14 Implicitly Defining a Global Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-15 viii Programming an Oracle Tuxedo ATMI Application Using C Implicitly Defining a Transaction in a Service Routine . . . . . . . . . . . . . . . . . . . . 9-15 Defining Global Transactions for an XA-Compliant Server Group. . . . . . . . . . . . . . . 9-16 Testing Whether a Transaction Has Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-16 See Also. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-18 10. Programming a Multithreaded and Multicontexted ATMI Application Support for Programming a Multithreaded/Multicontexted ATMI Application . . . . . 10-2 Platform-specific Considerations for Multithreaded/Multicontexted Applications10-2 Planning and Designing a Multithreaded/Multicontexted ATMI Application. . . . . . . 10-3 What Are Multithreading and Multicontexting?. . . . . . . . . . . . . . . . . . . . . . . . . . 10-3 What Is Multithreading?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-3 What Is Multicontexting?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-5 Auditing a Multithreaded or Multicontexted Application. . . . . . . . . . . . . . . . . . . 10-7 Advantages and Disadvantages of a Multithreaded/Multicontexted ATMI Application 10-7 Advantages of a Multithreaded/Multicontexted ATMI Application . . . . . . . 10-7 Disadvantages of a Multithreaded/Multicontexted ATMI Application . . . . . 10-8 How Multithreading and Multicontexting Work in a Client. . . . . . . . . . . . . . . . . 10-9 Start-up Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9 Work Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 Completion Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 How Multithreading and Multicontexting Work in Server-Dispatched Threads an on ATMI Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-14 Start-up Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-14 Work Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-15 Completion Phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-17 Programming an Oracle Tuxedo ATMI Application Using C ix How Multithreading and Multicontexting Work in Application-Created Threads of an ATMI Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-18 Start-Up Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-18 Work Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-19 Completion Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-19 See Also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-20 Design Considerations for a Multithreaded and Multicontexted ATMI Application. . 10-20 Environment Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-20 Design Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-21 Interoperability Restrictions for Workstation Clients . . . . . . . . . . . . . . . . . 10-23 Implementing a Multithreaded/ Multicontexted ATMI Application. . . . . . . . . . . . . 10-24 Preliminary Guidelines for Programming a Multithreaded/Multicontexted ATMI Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-24 Prerequisites for a Multithreaded ATMI Application . . . . . . . . . . . . . . . . . 10-25 General Multithreaded Programming Considerations. . . . . . . . . . . . . . . . . 10-25 Concurrency Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-25 Writing Code to Enable Multicontexting in an ATMI Client . . . . . . . . . . . . . . . 10-27 Context Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-27 Setting Up Multicontexting at Initialization . . . . . . . . . . . . . . . . . . . . . . . . 10-28 Implementing Security for a Multicontexted ATMI Client. . . . . . . . . . . . . 10-29 Synchronizing Threads Before an ATMI Client Termination . . . . . . . . . . . 10-29 Switching Contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-30 Handling Unsolicited Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-33 Coding Rules for Transactions in a Multithreaded/Multicontexted ATMI Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-33 Writing Code to Enable Server-Dispatched Multicontexting and Multithreading Threads in an ATMI Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-34 x Programming an Oracle Tuxedo ATMI Application Using C

Description:
Programming an Oracle Tuxedo ATMI Application Using C RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Understanding Conversational Communication Events.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.