Table of Contents Previous Next PDF


The Basic Sample Application

The Basic Sample Application
This topic includes the following sections:
Notes:
Technical support for third party CORBA Java ORBs should be provided by their respective vendors. Oracle Tuxedo does not provide any technical support or documentation for third party CORBA Java ORBs.
For an explanation of concepts associated with CORBA applications and a description of the development process for CORBA applications, see Getting Started with Oracle Tuxedo CORBA Applications.
How the Basic Sample Application Works
The Basic sample application allows users to browse for available courses and get details on selected courses. Figure 3‑1 illustrates how the Basic sample application works.
Figure 3‑1 The Basic Sample Application
 
The Basic sample application demonstrates the following features:
The OMG IDL for the Basic Sample Application
The first step in creating client and server applications is to specify all of the CORBA interfaces and their methods using OMG IDL. The Basic sample application implements the following CORBA interfaces:
 
Listing 3‑1 shows the univb.idl file that defines the CORBA interfaces in the Basic sample application. A copy of this file is included in the directory for the Basic sample application.
 
Listing 3‑1 OMG IDL for the Basic Sample Application
module UniversityB
{
    typedef unsigned long CourseNumber;
    typedef sequence<CourseNumber> CourseNumberList;
    struct CourseSynopsis
    {
        CourseNumber course_number;
         string title;
    };
    typedef sequence<CourseSynopsis> CourseSynopsisList;

    interface CourseSynopsisEnumerator
    {
        CourseSynopsisList get_next_n(
              in unsigned long number_to_get,
              out unsigned long number_remaining
          );
           void destroy();
  };
    typedef unsigned short Days;
    const Days MONDAY = 1;
    const Days TUESDAY = 2;
    const Days WEDNESDAY = 4;
    const Days THURSDAY = 8;
    const Days FRIDAY = 16;
  
    struct ClassSchedule
    {
        Days class_days; // bitmask of days
        unsigned short start_hour; // whole hours in military time
        unsigned short duration; // minutes
    };
    struct CourseDetails
    {
        CourseNumber course_number;
        double cost;
        unsigned short number_of_credits;
        ClassSchedule class_schedule;
        unsigned short number_of_seats;
        string title;
        string professor;
        string description;
    };
    typedef sequence<CourseDetails> CourseDetailsList;

    interface Registrar
    {
        CourseSynopsisList
        get_courses_synopsis(
            in string search_criteria,
            in unsigned long number_to_get, // 0 = all
            out unsigned long number_remaining,
            out CourseSynopsisEnumerator rest
        );
    CourseDetailsList get_courses_details(in CourseNumberList
        courses);
    interface RegistrarFactory
    {
        Registrar find_registrar(
        );
    };
};
 
Generating the Client Stubs and the Skeletons
Note:
The interface specification defined in OMG IDL is used by the IDL compiler to generate client stubs for the client application and skeletons for the server application. The client stubs are used by the client application for all operation invocations. You use the skeleton, along with the code you write, to create the server application that implements the CORBA objects. For information about generating and using client stubs and skeletons, see Getting Started with Oracle Tuxedo CORBA Applications.
During the development process, you would use the idl command to compile the OMG IDL file and produce client stubs and skeletons. This task has been automated in the makefile for the Basic sample application. For a description of the idl command, see the Oracle Tuxedo Command Reference.
Writing the Client Application
The CORBA environment in Oracle Tuxedo only supports CORBA C++ types of client applications.
During the development process, you would write client application code that does the following:
Invokes the get_courses_synopsis() and get_courses_details() methods on the Registrar object
C++ versions of the client application code in the Basic sample application are provided. For information about writing client applications, see Getting Started with Oracle Tuxedo CORBA Applications and Creating CORBA Client Applications.
Writing the Server Application
During the development process, you would write the following:
The method implementations for the operations on the Registrar, RegistrarFactory, and CourseSynopsisEnumerator objects.
C++ code for the Server object and the method implementations in the University server application are provided.
During the development process, you use the genicf command to create an Implementation Configuration File (ICF). You then edit the ICF file to define activation and transaction policies for the Registrar, RegistrarFactory, and CourseSynopsisEnumerator objects. For the Basic sample application, the Registrar, RegistrarFactory, and CourseSynopsisEnumerator objects have an activation policy of process and a transaction policy of ignore. An ICF file for the Basic sample application is provided.
For information about writing server applications, see Creating CORBA Server Applications.
Configuring the Basic Sample Application
A key part of any CORBA application is the UBBCONFIG file. Although creating a UBBCONFIG file is the task of the administrator, it is important for programmers to understand that the file exists and how the file is used. When system administrators create a configuration file, they are describing the CORBA application using a set of parameters that the Oracle Tuxedo software interprets to create a runnable application.
There are two forms of the configuration file:
The UBBCONFIG file, an ASCII version of the file, created and modified with any editor. “Setting Up Your Environment” describes setting the required parameters in the UBBCONFIG file used by all University sample applications.
The TUXCONFIG file, a binary version of the UBBCONFIG file created using the tmloadcf command. When the tmloadcf command is executed, the environment variable TUXCONFIG must be set to the name and directory location of the TUXCONFIG file.
For information about the UBBCONFIG file and the tmloadcf command, see Setting Up an Oracle Tuxedo Application and the Oracle Tuxedo Command Reference.
Building the Basic Sample Application
To build the Basic sample application, complete the following steps:
1.
2.
3.
4.
5.
Load the UBBCONFIG file.
6.
The following sections describe these steps.
Note:
Copying the Files for the Basic Sample Application into a Work Directory
The files for the Basic sample application are located in the following directories:
Windows
drive:\TUXDIR\samples\corba\university\basic
UNIX
/usr/TUXDIR/samples/corba/university/basic
In addition, you need to copy the utils directory into your work directory. The utils directory contains files that set up logging, tracing, and access to the University database.
Table 3‑1 lists and describes the files you will use to create the Basic sample application.
 
The OMG IDL that declares the CourseSynopsisEnumerator, Registrar, and RegistrarFactory interfaces.
The C++ source code for method implementations of the CourseSynopsisEnumerator, Registrar, and RegistrarFactory interfaces.
The makefile for the Basic sample application on the UNIX operating system platform.
The makefile for the Basic sample application on the Windows operating system platform.
log.cpp, log.h, log_client.cpp, and log_server.cpp
oradbconn.cpp and oranoconn.cpp
samplesdb.cpp and samplesdb.h
unique_id.cpp and unique_id.h
samplesdbsql.h and samplesdbsql.pc
Changing the Protection on the File for the Basic Sample Application
During the installation of the Oracle Tuxedo software, the sample application files are marked read-only. Before you can edit the files or build the files in the Basic sample application, you need to change the protection of the files you copied into your work directory, as follows:
Windows
prompt>attrib -r drive:\workdirectory\*.*
UNIX
prompt>chmod u+rw /workdirectory/*.*
Setting the Environment Variables
Use the following command to set the environment variables used to build the client and server applications in the Basic sample application:
Windows
prompt>setenvb
UNIX
prompt>/bin/ksh
prompt>. ./setenvb.sh
Initializing the University Database
Use the following command to initialize the University database used with the Basic sample application:
Windows
prompt>nmake -f makefileb.nt initdb
UNIX
prompt>make -f makefileb.mk initdb
Loading the UBBCONFIG File
Use the following command to load the UBBCONFIG file:
Windows
prompt>tmloadcf -y ubb_b.nt
UNIX
prompt>tmloadcf -y ubb_b.mk
Compiling the Basic Sample Application
During the development process, you would use the buildobjclient and buildobjserver commands to build the client and server applications. However, for the Basic sample application, this step has been done for you.
The directory for the Basic sample application contains a makefile that builds the client and server sample applications.
Use the following commands to build the CORBA C++ client and server application in the Basic sample application:
Windows
prompt>nmake -f makefileb.nt
UNIX
prompt>make -f makefileb.mk
Running the Basic Sample Application
To run the Basic sample application, complete the following steps:
1.
2.
Starting the Server Application
Start the system and sample application server applications in the Basic sample application by entering the following command:
prompt>tmboot -y
This command starts the following server processes:
The Oracle Tuxedo system EventBroker.
The transaction management services, including the NameManager and the FactoryFinder services.
The Interface Repository server process.
The University server process.
The IIOP Listener/Handler process.
Before using another sample application, enter the following command to stop the system and sample application server processes:
prompt>tmshutdown
Starting the CORBA C++ Client Application
Start the CORBA C++ client application in the Basic sample application by entering the following command:
prompt>univb_client
Using the Client Applications in the Basic Sample Application
The following sections briefly explain how to use the client applications that are included in the Basic sample application.
The CORBA C++ Client Application
After starting the CORBA C++ client application, a menu with the following options appears:
<F> Find courses
<A> List all courses
<D> Display course details
<E> Exit
To find courses that match a particular curriculum subject, complete the following steps:
1.
2.
Enter a text string at the Enter search string: prompt. For example, computer. You can enter any combination of uppercase and lowercase letters.
A list of all the courses that match that search string appears.
To list all the courses in the database, complete the following steps:
1.
A list of ten courses appears.
2.
Enter y to continue viewing lists of ten courses or n to return to the Options menu.
To display the details of a particular course, complete the following steps:
1.
2.
Enter a course number followed by -1 at the Course Number prompt. For example:
100011
100039
-1
A summary of that course appears.
To exit the C++ CORBA client application, enter E at the Options prompt.

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