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 :-).

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?
--
Jean-Sebastien

Reply via email to