One comment inline.
Simon
Jean-Sebastien Delfino wrote:
Raymond Feng wrote:
Please see my comments inline.
Thanks,
Raymond
--------------------------------------------------
From: "Wojtek Janiszewski" <[EMAIL PROTECTED]>
Sent: Thursday, May 22, 2008 3:21 AM
To: <tuscany-dev@ws.apache.org>
Subject: Re: GSoC Project - CORBA Support for Apache Tuscany
Hello Tuscany Community!
I've spent last days considering project details and made some
prototypes which were mainly verifying CORBA API in JDK. I'd like
also to begin coding shortly - I'd like to start implementing
reference binding implementation for CORBA objects. I've listed some
assumptions/doubts:
1. Original time schedule was to start work with "Implementation of
interface-corba-idl module.". I was told to start with CORBA
bindings, I just wanted to make sure that these modules
implementation schedule can be swapped.
I think the CORA IDL support can be a 2nd step. We can invoke/expose
CORBA services using java interfaces.
2. I'll implement service/reference bindings using CORBA Dynamic
Invocation Interface (DII) API. Standard JDK CORBA support *should*
be enough, if no, there are other CORBA implementations, such as JacORB.
Standard JDK APIs should be good enough. There is an Apache CORBA
project at: http://cwiki.apache.org/YOKO/.
3. Where should parameters ORBInitialHost and ORBInitialPort be
passed to application? They shouldn't be configured global for
application, because every binding can use different ORB, so I assume
it should be configured per binding. Which attributes for
binding.corba shall I use?
They should be configured at the <binding.corba>.
4. In CORBA we can register objects under unique name, or obtain
remote objects as references from other CORBA objects. In binding
configuration user should point remote objects name, which is
registered in name service. Again, I think it should be configured
per binding, so which attribute for binding.corba shall I use?
That should be derived from the URI of the binding.
5. CORBA objects obtained from binding will be dynamically enhanced
by, lets call it, DII Corba Invoker (DCI), and attached to matching
Java interface, so Tuscany user can use it. DCI will be responsible
for creating request, based on operation name, operation arguments
and return type. Every other CORBA object, obtained in any way (from
binding, as a result of any other CORBA objects operation) will be
also enhanced/attached as above.
Yes. The corba reference binding invoker is responsible to bridge the
invocations between SCA and CORBA.
6. If CORBA objects operation argument is object reference, then user
should provide object which was previously obtained from binding or
other CORBA object. User cannot use users-side object as an argument.
Yes. Let's don't worry object reference too much at this point. We are
in the SOA world instead of distributed object :-).
This is OK if we are exposing a SCA service via CORBA. If we are using
SCA to invoke existing CORBA services that expect object references
to be passed, we will need to come up with an approach for handling them.
I'd suggest that we start first with exposing SCA services via CORBA
as this seems to be the simplest and most useful form of integration.
Simon
I hope I described my thoughts clearly, I'll appreciate any comments,
especially pointing out things I'm wrong or missing.
Thanks,
Wojtek
I took a look at binding-corba/.../CorbaServiceBindingProvider in trunk.
At the moment the ORB setup is in the start method of the provider (and
there's no cleanup in the stop method). I'm not quite sure how this is
going to work with multiple services sharing the same ORB.
I'm thinking that we'll need the following to support multiple services:
- A host-corba implementation (similar to host-ejb, host-rmi or
host-http) to setup/tear the ORB when the Tuscany runtime starts/stops,
independent of the registration of particular services with the ORB.
- Logic in that host-corba to set up the ORB in a lazy fashion when the
first Corba service is registered.
- Only keep the ORB servant creation and naming bind/unbind in the
service provider class.
Makes sense?