Re: Is this possible to make a Corba Server!_NEWLINE_!Object without a ORB?
Tuesday, May 15, 2001 02:03 AM
I think that the first part of your question possibly confuses an ORB with an activator.
An activator is a mechanism for keeping track of CORBA servers or servants and normally works by listening for requests directed at a CORBA object, locating this object and passing back details of the object's location, etc., to the client. It will often run as a daemon process on the machine where the CORBA object is located.
The concept of an ORB can be difficult to grasp, as it is both an abstraction and an object in most cases. It might be considered to be a part of a communications layer allowing CORBA clients to talk to CORBA objects. Whenever you create a CORBA object (through compiling and implementing an IDL interface), the CORBA implementation that you are using will create classes which handle communication between your object and the outside world. These classes 'hook into' the communications layer, and may be considered to be part of the ORB insofar as the ORB is an abstraction. As such the answer to your first question would be No - so you do need an ORB to create a server object.
When you talk about running an ORB I take it to mean running a CORBA implementation, such as VisiBroker or OrbixWeb and the interchangeability between these implementations. The answer is, it depends. CORBA is an evolving standard. Most commercial ORB vendors conform to a certain minimum level with this standard. However, there are two qualifications - the standard can be implemented differently from vendor to vendor, and the vendors add 'value' in the sense of extra features, to their individual implementations. The result is that if you have relied on any vendor- or implementation-specific features in your object, it will not be per se functional with a different CORBA implementation, although you may not need to tweak your implementation code too much...
As regards services which need to be run to allow a server object to receive invocations, you have a number of options. Perhaps the most common is to register your object with the Naming Service, and to acess it by performing lookups on that service. Details of how to do so are provided in the programmer's guide for your ORB implementation.
Hope this helps a bit.