Hi,

Migrating this thread to the avalon-phoenix-dev list. Will post replys over 
there from now on. For those who are interested you should subscribe over 
there ;)

On Wed, 16 Jan 2002 02:09, Paul Hammant wrote:
> Peter,
>
> >I guess there are are a few real questions that need to be answered before
> > we can get clean inter-application communication. It really depends upon
> > the answers to these questions, how inter-sar communication can be
> > enabled.
> >
> >Q1. Do we need "pass by reference" or can we live with "pass by value"
> >semantics for inter app communication?
>
> We need both.

ok - so it is not a management interface then - more a service interface? ie 
you expect the interfaces exported to be providing you with a service rather 
than just a passive management API?

> >Q2. If Application A depends on Application B then does shutdding down B
> >require the shutting down of A?
>
> Yup dependancies should be honoured in the same way that they are for
> normal blocks.  Phoenix could handle the correct order of stopping apps
> perhaps,

now this is the hard bit ;)

> >Q3. Should you be able to "browse" the services offered by another
> >application or should you only access services that you declare
> > dependencies on and are wired together via an assembly mechanism?
>
> Phase 2?

Actually this is the easiest bit about ;)

> >Q4. Should it matter if applications are on different JVMs or not?
>
> No it should not.  Perhaps Phase 3.

I have actually thought about this and it could work. The problem is that we 
would have to declare some services as "call-by-value" (CBV) and some as not. 
There is no way to transparently do inter-JVM stuff except with an explicit 
RPC interface (ie RMI or presumably AltRMI) and even then they are mainly 
call by value semantics.

ie there is no way that a SocketManager could be in a different JVM. However 
other services (like the one you describe for Jo) would fit in perfectly 
regardless whether it is same JVM or not.

So there is 3 cases I can think of.

* Pure CBV - doesn't matter which JVM you are in
* exchanging of non-portable resources (ie FileDescriptors, Sockets, nio 
buffers etc)
* CBV with possible "reference semantics". However this requires very careful 
programming acknowledging you are distributed - ie RMI rules (or AltRMI). 
However this must be explicitly defined by the block developer.

> >Q5. Do services offered by other applications need to be accessed via
> >standard mechanisms or can they be accessed from the somewhat round-about
> >dynamic dispatching APIs ? ie is something like
> >
> >final Object[] args = new Object[] { param1, param2 };
> >Object result = myObject.invoke( "myMethodSignature", args );
>
> You know I'll vote against the above :-)

Then I guess JMX is out ;)

> >So I guess the question comes down to which types of services can and
> > should be exported between applications. I have a few ideas that I
> > sketched out in november but I would like to hear your ideas first.
>
> <plug>
>
> AltRMI could merge straight in to the ComponentManager framework.
...

I would suggest you may start by implementing a AltRMI SystemManager for 
phoenix. You could also implement a JNDI directory to store the services for 
the time being (you can use naming in excalibur and I will help you with that 
if you like). After it is implemented and we can try it out then it may be a 
good idea to see where it goes and stuff. Thoughts?

-- 
Cheers,

Pete

---------------------------------------------
 We shall not cease from exploration, and the 
  end of all our exploring will be to arrive 
 where we started and know the place for the 
        first time -- T.S. Eliot
---------------------------------------------

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to