Skip navigation.

Programming a Tuxedo Application Using COBOL

   Previous Next vertical dots separating previous/next from contents/index/pdf Contents View as PDF   Get Adobe Reader

Introduction to BEA Tuxedo Programming

BEA Tuxedo Distributed Application Programming

Communication Paradigms

BEA Tuxedo Clients

BEA Tuxedo Servers

Basic Server Operation

Servers as Requesters

BEA Tuxedo API: ATMI

Programming Environment

Updating the UBBCONFIG Configuration File

Setting Environment Variables

Defining Equivalent Data Types

Starting and Stopping the Application

Managing Typed Records

Overview of Typed Records

Defining Typed Records

Using a VIEW Typed Record

Setting Environment Variables for a VIEW Typed Record

Creating a View Description File

Executing the VIEW Compiler

Using an FML Typed Record

Setting Environment Variables for an FML Typed Record

Creating a Field Table File

Initializing a Typed Record

Creating an FML Header File

Using an XML Typed Record

Writing Clients

Joining an Application

Using Features of the TPINFDEF-REC Record

Client Naming

Unsolicited Notification Handling

System Access Mode

Resource Manager Association

Client Authentication

Leaving the Application

Building Clients

See Also

Client Process Examples

Writing Servers

BEA Tuxedo System Controlling Program

System-supplied Server and Services

System-supplied Server: AUTHSVR( )

System-supplied Services: TPSVRINIT Routine

Receiving Command-line Options

Opening a Resource Manager

System-supplied Services: TPSVRDONE Routine

Guidelines for Writing Servers

Defining a Service

Terminating a Service Routine

Sending Replies

Invalidating Descriptors

Forwarding Requests

Advertising and Unadvertising Services

Advertising Services

Unadvertising Services

Example: Dynamic Advertising and Unadvertising of a Service

Building Servers

See Also

Writing Request/Response Clients and Servers

Overview of Request/Response Communication

Sending Synchronous Messages

Example: Using the Same Record for Request and Reply Messages

Example: Sending a Synchronous Message with TPSIGRSTRT Set

Example: Sending a Synchronous Message with TPNOTRAN Set

Sending Asynchronous Messages

Sending an Asynchronous Request

Getting an Asynchronous Reply

Setting and Getting Message Priorities

Setting a Message Priority

Getting a Message Priority

Writing Conversational Clients and Servers

Overview of Conversational Communication

Joining an Application

Establishing a Connection

Sending and Receiving Messages

Sending Messages

Receiving Messages

Ending a Conversation

Example: Ending a Simple Conversation

Example: Ending a Hierarchical Conversation

Executing a Disorderly Disconnect

Building Conversational Clients and Servers

Understanding Conversational Communication Events

Writing Event-based Clients and Servers

Overview of Events

Unsolicited Events

Brokered Events

Notification Actions

EventBroker Servers

System-defined Events

Programming Interface for the EventBroker

Defining the Unsolicited Message Handler

Sending Unsolicited Messages

Broadcasting Messages by Name

Broadcasting Messages by Identifier

Checking for Unsolicited Messages

Getting Unsolicited Messages

Subscribing to Events

Unsubscribing from Events

Posting Events

Writing Global Transactions

What Is a Global Transaction?

Starting the Transaction

Terminating the Transaction

Committing the Current Transaction

Prerequisites for a Transaction Commit

Two-phase Commit Protocol

Aborting the Current Transaction

Example: Committing a Transaction in Conversational Mode

Example: Testing for Participant Errors

Implicitly Defining a Global Transaction

Defining Global Transactions for an XA-Compliant Server Group

Testing Whether a Transaction Has Started

See Also

Programming a Multithreaded and Multicontexted ATMI Application

Support for Programming a Multithreaded/Multicontexted ATMI Application

Platform-specific Considerations for Multithreaded/Multicontexted Applications

Planning and Designing a Multithreaded/Multicontexted ATMI Application

What Are Multithreading and Multicontexting?

What Is Multithreading?

What Is Multicontexting?

Licensing a Multithreaded or Multicontexted Application

Advantages and Disadvantages of a Multithreaded/Multicontexted ATMI Application

Advantages of a Multithreaded/Multicontexted ATMI Application

Disadvantages of a Multithreaded/Multicontexted ATMI Application

How Multithreading and Multicontexting Work in a Client

Start-up Phase

Client Threads Join Multiple Contexts

Client Threads Switch to an Existing Context

Work Phase

Service Requests

Replies to Service Requests

Transactions

Unsolicited Messages

Userlog Maintains Thread-specific Information

Completion Phase

How Multithreading and Multicontexting Work in an ATMI Server

Start-up Phase

Work Phase

Server-dispatched Threads Are Used

Application-created Threads Are Used

Bulletin Board Liaison Verifies Sanity of System Processes

System Keeps Statistics on Server Threads

Userlog Maintains Thread-specific Information

Completion Phase

Design Considerations for a Multithreaded and Multicontexted ATMI Application

Environment Requirements

Design Requirements

Is the Task of Your Application Suitable for Multithreading and/or Multicontexting?

How Many Applications and Connections Do You Want?

What Synchronization Issues Need to Be Addressed?

Will You Need to Port Your Application?

Which Threads Model Is Best for You?

Interoperability Restrictions for Workstation Clients

Implementing a Multithreaded/ Multicontexted ATMI Application

Preliminary Guidelines for Programming a Multithreaded/Multicontexted ATMI Application

Prerequisites for a Multithreaded ATMI Application

General Multithreaded Programming Considerations

Concurrency Considerations

Writing Code to Enable Multicontexting in an ATMI Client

Context Attributes

Setting Up Multicontexting at Initialization

Implementing Security for a Multicontexted ATMI Client

Synchronizing Threads Before an ATMI Client Termination

Switching Contexts

Handling Unsolicited Messages

Coding Rules for Transactions in a Multithreaded/Multicontexted ATMI Application

Writing Code to Enable Multicontexting and Multithreading in an ATMI Server

Context Attributes

Coding Rules for a Multicontexted ATMI Server

Initializing and Terminating ATMI Servers and Server Threads

Programming an ATMI Server to Create Threads

Creating Threads

Associating Threads with a Context

Sample Code for Creating an Application Thread in a Multicontexted ATMI Server

Writing a Multithreaded ATMI Client

Coding Rules for a Multithreaded ATMI Client

Initializing an ATMI Client to Multiple Contexts

Context State Changes for an ATMI Client Thread

Getting Replies in a Multithreaded Environment

Using Environment Variables in a Multithreaded and/or Multicontexted Environment

Using Per-context Functions and Data Structures in a Multithreaded ATMI Client

Using Per-process Functions and Data Structures in a Multithreaded ATMI Client

Using Per-thread Functions and Data Structures in a Multithreaded ATMI Client

Sample Code for a Multithreaded ATMI Client

Writing a Multithreaded ATMI Server

Compiling Code for a Multithreaded/Multicontexted ATMI Application

Testing a Multithreaded/Multicontexted ATMI Application

Testing Recommendations for a Multithreaded/Multicontexted ATMI Application

Troubleshooting a Multithreaded/Multicontexted ATMI Application

Improper Use of the TPMULTICONTEXTS Flag to tpinit( )

Calls to tpinit( ) Without TPMULTICONTEXTS

Insufficient Thread Stack Size

Error Handling for a Multithreaded/Multicontexted ATMI Application

Managing Errors

System Errors

Abort Errors

BEA Tuxedo System Errors

Communication Handle Errors

Limit Errors

Invalid Descriptor Errors

Conversational Errors

Duplicate Object Error

General Communication Call Errors

TPESVCFAIL and TPESVCERR Errors

TPEBLOCK and TPGOTSIG Errors

Invalid Argument Errors

No Entry Errors

Operating System Errors

Permission Errors

Protocol Errors

Queuing Error

Release Compatibility Error

Resource Manager Errors

Timeout Errors

Transaction Errors

Typed Record Errors

Application Errors

Handling Errors

Transaction Considerations

Communication Etiquette

Transaction Errors

Non-fatal Transaction Errors

Fatal Transaction Errors

Heuristic Decision Errors

Transaction Timeouts

TPCOMMIT Call

TPNOTRAN

TPRETURN and TPFORWAR Calls

tpterm( ) Function

Resource Managers

Sample Transaction Scenarios

Called Service in Same Transaction as Caller

Called Service in Different Transaction with AUTOTRAN Set

Called Service That Starts a New Explicit Transaction

BEA TUXEDO System-supplied Subroutines

Central Event Log

Log Name

Log Entry Format

Writing to the Event Log

COBOL Language Bindings for the Workstation Component

UNIX Bindings

Writing Client Programs

Building Client Programs

Setting Environment Variables

Microsoft Windows Bindings

Writing Client Programs

Building Client Programs

Building ACCEPT/DISPLAY Clients

 

Skip footer navigation  Back to Top Previous Next