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.