Hi Dennis,

I like Gregg's ideas about *-dl.jar caching, it's obvious Gregg has had to 
overcome serious issues with bandwidth, this is also very relevant to the 
internet.

Why cant the client express a dependency on that associated service's -dl.jar 
file(s)?

The client depends on the Service Interface, not the -dl.jar, what you probably 
meant was Marshalled Objects depend on the -dl.jar during Unmarshalling.

Yours and Patrick's ideas are good, including the codebase Entry idea, as you 
suggest a Service could pre-empt installation of the correct version *-dl.jar 
prior to unmarshalling objects.  That *-dl.jar could have dependency's it 
requires resolved by a frame work too, all prior to any unmarshalling.

Dependency Tree:

          Service Interface
                   |
       ____________|____________
      |                         |
   Client                  Service Proxy  (Service-dl.jar)
                                |
                            [ Remote ]
                                |
                          Service Implementation  (Service.jar)


The Client has no direct relationships with the Service Proxy, if it did, we 
wouldn't be able to swap one service for another.

What makes this issue confusing for many is the Service Interface can find it's 
way into the *-dl.jar, however, in the case of smart proxy's it will usually be 
loaded previously by a parent ClassLoader.  If the Service Interface already 
exists at the client, the dumb proxy (reflective auto generated stub whatever 
you want to call it) doesn't even need a *-dl.jar

EG: River's Service Interfaces are in the jsk-platform.jar

I'd like to encourage developers to package their Service Interface's 
separately from their implementations, I'd like a way of indicating in a jar 
manifest, that the jar archive contains a Service Interface.  Then we could 
create a Directory Service that allow's users to find new ServiceInterfaces and 
lookup implementing Services, a ServiceInterface.jar should probably contain 
the LICENSE and javadoc too, to encourage other developers to implement it.

It makes sense to arrange ClassLoaders in a hierarchy similar to the dependency 
tree, if not utilising a Modular framework like OSGi.

These ideas are all good, lets keep having this discussion.

Regards,

Peter.

Reply via email to