[omniORB] General ORB questions

bjorn rohde jensen bjensen@fastmail.fm
Sun Jan 5 20:18:01 2003


Hi Kai,

> 1. What exactly is omniORB? To run my applications I start omniNames. I thought
 > that the naming service is one of an ORBīs common object services, so 
do I
 > actually start the (omni)ORB by running omniNames? (If this is the 
case, why
 > wasnīt the .exe named omniORB?)

  OmniORB is an implementation of the OMG CORBA specification with C++ 
language bindings, which pretty much amounts to a network abstraction
library/toolkit for C++. OmniORB consists of several core libraries
such as; libomniORB, libomniDynamic and libomnithread, and comes with
an IDL compiler and an implementation of the CORBA name service.
  The core libraries provide the basic CORBA support such as marshalling,
directing incoming invocations to the proper servants if any etc. The
CORBA specs define a lot of (odd) services but only by their interfaces
as described by an official IDL and a description of the service.
  Most of the described services can be implemented as completely 
ordinary CORBA applications, which just happen to expose an interface
specified by the OMG. This is exactly the case with omniNames, it 
depends on the core OmniORB libraries and was linked with stub code
generated by omniidl just like the echo examples.

> 
> 2. I use a Java-Server to bind objects to the naming service. As long as the
 > server application is running, access to the objects from my Java-Client
 > application is quite fast. If I shut down the server app after all 
objects
 > where bound, I still can access them but the performance is 
drastically lower
 > than before. Is there anything I can do about this? I donīt really 
want to have
 > two applications running permanently (the ORB and the server app). I 
thought
 > that the ORB would take care of object activation so that no separate 
server
 > application would be neccessary.
> 

  CORBA object are incarnated/implemented by code residing in the 
address space of a CORBA aware application for as long, as the hosting 
application lives. Shutting down the application hosting a CORBA object
should make it unavailable, so i dont quite understand, what is 
happening in the described case. The SUN ORB's are (in)famed for 
interesting behaviour, but i have not heard about this sort of thing
before, i probably misunderstood something;)
  The ORB runtime does take care of quite a lot of things for you, but 
it is just a library and depends on application logic to tell it, what to
do. CORBA is not like java RMI, where you can pass objects in the form
of bytecode around. CORBA objects are references to interfaces exposed
in a usually different address space, often on a different host and
often incarnated by a servant written in a different language than that
of the client.

  I hope, i have not added to your confusion by all this, and you might 
want to read a couple of books on CORBA for a proper description of
CORBA;)

Yours sincerely,

Bjorn