Distributed Development Using CORBA

Duration: 3 days
Type: intermediate


This course introduces Java programmers to CORBA development. Delegates create distributed applications written in Java and then access them through both Java and C++ clients. The process of writing IDL is explained in detail, as are the mappings from IDL to Java and C++.

By default the course uses the ORB supplied with the Sun JDK and the Eclipse IDE. Other configurations can be supported on request.


Delegates should have several years Java coding experience, understand the principles of good OO design and be familiar with UML class and sequence diagrams. Previous experience in distributed computing (RPC, DCOM, RMI or Remoting) is advantageous but not essential.

List of Modules


The need for distributed architectures
How CORBA emerged from UNIX RPC
The role of an Object Request Broker (ORB)
Network protocols used by ORB's (GIOP and IIOP)
Common terminology used in distributed systems
How IDL supports clients written in many languages
Introducing CORBA Services (Naming and Trading)

CORBA and Java

Java as the ideal middleware language
Examples of ORB's written in Java
Support for CORBA within the JVM
How Enterprise JavaBeans use CORBA

Working with Interface Definition Language (IDL)

Creating and reopening modules
Adding interfaces to modules
Data types defined within IDL
Forward declarations of interfaces
Adding attributes to interfaces
Adding operations to interfaces
Deriving one interface from another
Marking operations as asynchronous
Declaring exceptions thrown by operations
Supplying extra context information
Mappings between IDL and Java
Mappings between IDL and C++

Creating a Basic CORBA Server

Creating and initializing an ORB
Instantiating server side objects
Connecting objects to the ORB
Starting a request handling loop

Creating a CORBA Client

Creating a client side ORB
Understanding client side proxies
Operations supported by all proxies
Recovering references from strings
Making copies of references
Creating and using nil references
Invoking operations on the server
Coping with system and user exceptions

The Portable Object Adapter

The responsibilities of a POA
References, identifiers and servants
Services offered by the root POA
Creating a hierarchy of portable adapters
Dynamically creating a portable adapter
Policies that can be used with a POA
Persistent verses transient objects
Creating CORBA objects without servers
Explicitly registering servants with the POA
Dynamically supplying servants via managers
Providing a default servant for detached objects
Deactivating objects and closing the ORB

The OMG Naming Service

The purpose of the Naming Service
Finding an initial naming context
Adding bindings to the naming tree
Creating trees of contexts and bindings
Iterating over a naming context