Table of Contents Previous Next


Table of Contents

Oracle
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
The Content of an Object Reference
The Lifetime of an Object Reference
Passing Object Instances
How You Instantiate a CORBA Object at Run Time
Servant Pooling
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
Servant Pooling and Stateless Objects
Stateful Objects and Durable State
Servant Pooling and Stateful Objects
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 an Oracle 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
Exceptions Raised by the Oracle Tuxedo System That Can Be Caught by Application Code
The Oracle Tuxedo System’s Handling of Exceptions Raised by Application Code During the Invocation of Operations on CORBA Objects
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 Oracle 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 Oracle 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
Thread-Per-Request Model
Thread-Per-Object Model
The Thread Pool
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
Considerations for Client Applications
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 Oracle 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 Oracle Tuxedo System
User-defined Exceptions
Defining the Exception
Throwing the Exception
Wrapping an Oracle Tuxedo Service in a CORBA Object
Overview of Wrapping an Oracle Tuxedo Service
Designing the Object That Wraps the Oracle Tuxedo Service
Creating the Buffer in Which to Encapsulate Oracle Tuxedo Service Calls
Implementing the Operations That Send Messages to and from the Oracle 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
Sending Requests to the Teller Object
Exception Handling
Setting Transaction Policies on the Interfaces in the Wrapper Sample Application
Configuring the University and Billing Server Applications
Scaling an Oracle Tuxedo CORBA Server Application
Overview of the Scalability Features Available in the Oracle Tuxedo System
Scaling an Oracle 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

Copyright © 1994, 2017, Oracle and/or its affiliates. All rights reserved.