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.

>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,

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

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

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

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

It is the duty of the assembler to honour the declarations made by the 
block developer as to which params and return vals to a service are 
other facades (ie. which mix of pass by value and pass by reference).

Whether the service is remote or not clearly has a bearing on the 
managability from a pheonix point of weiw (unless Phoenix's management 
could be federated too "Can you shut down XYZ please, no? thats OK then, 
thanks for telling me".

Whether the service is remote or not does have a bearing on the tool 
used to achiece inter-sar communication.  Last year we pondered the 
classloader issue.  You were confident there was a solution to multiple 
K/HC, I was doubtful.  This year because of AltRMI, I am quite confident 
that we can support a number of possibilities.  Consider Jo! having 
service API 1.0 and 1.1 in 'current use' and other applications that are 
hard coded against each of those APIs.  With blocks being in SARs at the 
moment and each in a diff classloader there is no problem.  However, to 
share Jo! outside the SAR presents problems if the service classes are 
visible to many sars.  With AltRMI we can lash together SARs and support 
multiple versons of the same tool in the same VM.  Clearly with this 
example we still have a problem in that two instaces of a webserver 
can't serve the same socket.  Bad example perhaps. In short I am 
confident tha the Piped-ObjectStream impl of AltRMI can solve the 
inter-sar issues, and the Socket-ObjectStream version can solve the 
federated pheonix dependancys.  The current limitation of AltRMI is that 
it likes things to be both pass by value and pass by reference.  The 
former must be serializable and there are many noteworth example of 
broken serialzed impls in the JDK.  There are also many things that ae 
not serializable becase they themselves are not so much objects as streams.

We should begin to recommend separation of Jars for interface and impl. 
 Sam, you listening? As a head honcho figure, could you carry that into 
other projects (particularly those that I have overstayed my welcome in ;-)

Phew!

- Paul



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

Reply via email to