CORBA and Omega
The CORBA package in the Omega distribution is
somewhat more complete and is known to work with the Orbacus implementation. It provides
both the Dynamic Server Interface (DSI) and the Dynamic Invocation
Interface (DII) I have spoken about. These allow applications to call
methods in remote servers and to provide servers from arbitrary
objects without requiring the compilation of CORBA stubs or skeletons.
Additionally, a tool that converts Java classes to IDL for easy use
with the DSI material is contained in the package which completes the
dynamic mechanism. This is intended to allow existing Java classes to
be instantiated and offered as CORBA servers without having to write
IDL or implement the IDL skeleton directly. The instantiation can
come from processing a CORBA request in another server. The generated
IDL can be written to a file or directly to an Interface Repository.
The DII provides three different classes for invoking
requests. These are one-way, blocking and deferred. These are
explained in the CORBA documentation and are somewhat suggestive of
their behavior.
Interactive Version
The dynamic invocation is done programmatically something like
the following (using the interactive Omega language)
call = new CorbaCall(server, "methodName", new Object[]{arg, arg, arg});
call.result();
We provide syntactic sugar for the user
to allow the same call to be specified
interactively as
server.methodName(arg,arg,arg);
This utilizes the extensibility of the parser, evaluator and
expression classes.
Other Languages/Environments
The approach used in this package works for other interpreted
languages such as S, R, Xlisp. The level of automation will vary for
these languages as they provide more or less structure. Additionally,
the lack of threads in these languages complicates the handling of
CORBA objects as arguments. In these languages, the implementation of
the DSI should be even simpler than the Java one since the evaluators
in these languages will perform the method dispatching rather than
requiring it to be done explicitly in the DSI's invoke()
method.
S Implementation
The code for the S model is somewhat complete. Others are encouraged
to take it and complete it as I am unlikely to get to it.
Duncan Temple Lang
<duncan@research.bell-labs.com>
Last modified: Mon Mar 15 08:54:29 EST 1999