BEA Logo BEA BEA Tuxedo Release [Release Number]

  BEA Home  |  Events  |  Solutions  |  Partners  |  Products  |  Services  |  Download  |  Developer Center  |  WebSUPPORT

 

   BEA Tuxedo Doc Home   |   Creating CORBA Server Applications   |   Previous Topic   |   Next Topic   |   Contents   |   Index

Creating CORBA Server Applications

 

This document describes how programmers can implement key features in the BEA Tuxedo® product to design and implement scalable, high-performance, server applications that run in a BEA Tuxedo domain. The examples in Designing and Implementing a Basic CORBA Server Application are based on the sample applications described in the Guide to the CORBA University Sample Applications.

 

CORBA Server Application Concepts

The Entities You Create to Build a CORBA Server Application

The Implementation of the CORBA Objects for Your Server Application

How Interface Definitions Establish the Operations on a CORBA Object

How You Implement the Operations on a CORBA Object

How Client Applications Access and Manipulate Your Application's CORBA Objects

How You Instantiate a CORBA Object at Run Time

The Server Object

Process for Developing CORBA Server Applications

Generating Object References

How Client Applications Find Your Server Application's Factories

Creating an Active Object Reference

Managing Object State

About Object State

Object Activation Policies

Application-controlled Deactivation

Reading and Writing an Object's Data

Available Mechanisms for Reading and Writing an Object's Durable State

Reading State at Object Activation

Reading State Within Individual Operations on an Object

Stateless Objects and Durable State

Stateful Objects and Durable State

Your Responsibilities for Object Deactivation

Avoiding Unnecessary I/O

Sample Activation Walkthrough

Using Design Patterns

Process-Entity Design Pattern

List-Enumerator Design Pattern

 

Steps for Creating a BEA Tuxedo CORBA Server Application

Summary of the CORBA Server Application Development Process

Step 1: Compile the OMG IDL File for the Server Application

Using the IDL Compiler

Generating the Skeleton and Implementation Files

Generating Tie Classes

Step 2: Write the Methods That Implement Each Interface's Operations

The Implementation File Generated by the IDL Compiler

Implementing a Factory

Step 3: Create the Server Object

Initializing the Server Application

Writing the Code That Creates and Registers a Factory

Creating Servants

Releasing the Server Application

Step 4: Define the In-memory Behavior of Objects

Specifying Object Activation and Transaction Policies in the ICF File

Step 5: Compile and Link the Server Application

Step 6: Deploy the Server Application

Development and Debugging Tips

Use of CORBA Exceptions and the User Log

Client Application View of Exceptions

Server Application View of Exceptions

Detecting Error Conditions in the Callback Methods

Common Pitfalls of OMG IDL Interface Versioning and Modification

Caveat for State Handling in Tobj_ServantBase::deactivate_object()

Servant Pooling

How Servant Pooling Works

How You Implement Servant Pooling

Delegation-based Interface Implementation

About Tie Classes in the BEA Tuxedo System

When to Use Tie Classes

How to Create Tie Classes in a CORBA Application

 

Designing and Implementing a Basic CORBA Server Application

How the Basic University Sample Application Works

The Basic University Sample Application OMG IDL

Application Startup

Browsing Course Synopses

Browsing Course Details

Design Considerations for the University Server Application

Design Considerations for Generating Object References

Design Considerations for Managing Object State

The RegistrarFactory Object

The Registrar Object

The CourseSynopsisEnumerator Object

Basic University Sample Application ICF File

Design Considerations for Handling Durable State Information

The Registrar Object

The CourseSynopsisEnumerator Object

Using the University Database

How the Basic Sample Application Applies Design Patterns

Process-Entity Design Pattern

List-Enumerator Design Pattern

Additional Performance Efficiencies Built into the BEA Tuxedo System

Preactivating an Object with State

How You Preactivate an Object with State

Usage Notes for Preactivated Objects

 

Creating Multithreaded CORBA Server Applications

Overview

Introduction

Requirements, Goals, and Concepts

Threading Models

Reentrant Servants

The Current Object

Mechanisms for Supporting Multithreaded CORBA Servers

Context Services

Classes and Methods in the TP Framework

Capabilities in the Build Commands

Tools for Administration

Running Single-threaded Server Applications in a Multithreaded System

Developing and Building Multithreaded CORBA Server Applications

Using the buildobjserver Command

Platform-specific Thread Libraries

Specifying Multithreaded Support

Specifying an Alternate Server Class

Using the buildobjclient Command

Creating Non-reentrant Servants

Creating Reentrant Servants

Building and Running the Multithreaded Simpapp Sample Application

About the Simpapp Multithreaded Sample

How the Sample Application Works

OMG IDL Code for the Simpapp Multithreaded Sample Application

How to Build and Run the Sample Application

Setting the TUXDIR Environment Variable

Verifying the TUXDIR Environment Variable

Changing the Setting of the Environment Variable

Creating a Working Directory for the Sample Application

Checking Permissions on All the Files

Executing the runme Command

Running the Sample Application Step-by-Step

Shutting Down the Sample Application

Multithreaded CORBA Server Application Administration

Specifying Thread Pool Size

MAXDISPATCHTHREADS

MINDISPATCHTHREADS

Specifying a Threading Model

Specifying the Number of Active Objects

Sample UBBCONFIG File

 

Security and CORBA Server Applications

Overview of Security and CORBA Server Applications

Design Considerations for the University Server Application

How the Security University Sample Application Works

Design Considerations for Returning Student Details to the Client Application

 

Integrating Transactions into a CORBA Server Application

Overview of Transactions in the BEA Tuxedo System

Designing and Implementing Transactions in a CORBA Server Application

How the Transactions University Sample Application Works

Transactional Model Used by the Transactions University Sample Application

Object State Considerations for the University Server Application

Object Policies Defined for the Registrar Object

Object Policies Defined for the RegistrarFactory Object

Using an XA Resource Manager in the Transactions Sample Application

Configuration Requirements for the Transactions Sample Application

Integrating Transactions in a CORBA Client and Server Application

Making an Object Automatically Transactional

Enabling an Object to Participate in a Transaction

Preventing an Object from Being Invoked While a Transaction Is Scoped

Excluding an Object from an Ongoing Transaction

Assigning Policies

Opening an XA Resource Manager

Closing an XA Resource Manager

Transactions and Object State Management

Delegating Object State Management to an XA Resource Manager

Waiting Until Transaction Work Is Complete Before Writing to the Database

Notes on Using Transactions in the BEA Tuxedo System

User-defined Exceptions

Defining the Exception

Throwing the Exception

 

Wrapping a BEA Tuxedo Service in a CORBA Object

Overview of Wrapping a BEA Tuxedo Service

Designing the Object That Wraps the BEA Tuxedo Service

Creating the Buffer in Which to Encapsulate BEA Tuxedo Service Calls

Implementing the Operations That Send Messages to and from the BEA Tuxedo Service

Restrictions

Design Considerations for the Wrapper Sample Application

How the Wrapper University Sample Application Works

Interface Definitions for the Billing Server Application

Additional Design Considerations for the Wrapper Sample Application

 

Scaling a BEA Tuxedo CORBA Server Application

Overview of the Scalability Features Available in the BEA Tuxedo System

Scaling a BEA Tuxedo Server Application

OMG IDL Changes for the Production Sample Application

Replicating Server Processes and Server Groups

Replicated Server Processes

Replicated Server Groups

Configuring Replicated Server Processes and Groups

Scaling the Application Via Object State Management

Factory-based Routing

How Factory-based Routing Works

Configuring for Factory-based Routing in the UBBCONFIG file

Implementing Factory-based Routing in a Factory

What Happens at Run Time

Additional Design Considerations for the Registrar and Teller Objects

Instantiating the Registrar and Teller Objects

Ensuring That Student Registration Occurs in the Correct Server Group

Ensuring That the Teller Object Is Instantiated in the Correct Server Group

How the Production Server Application Can Be Scaled Further

Choosing Between Stateless and Stateful Objects

When You Want Stateless Objects

When You Want Stateful Objects

 

back to top   next page