Return-Path: Delivered-To: apmail-incubator-river-dev-archive@minotaur.apache.org Received: (qmail 70847 invoked from network); 19 May 2010 22:59:31 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 19 May 2010 22:59:31 -0000 Received: (qmail 17953 invoked by uid 500); 19 May 2010 22:59:31 -0000 Delivered-To: apmail-incubator-river-dev-archive@incubator.apache.org Received: (qmail 17921 invoked by uid 500); 19 May 2010 22:59:31 -0000 Mailing-List: contact river-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: river-dev@incubator.apache.org Delivered-To: mailing list river-dev@incubator.apache.org Received: (qmail 17913 invoked by uid 99); 19 May 2010 22:59:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 May 2010 22:59:31 +0000 X-ASF-Spam-Status: No, hits=0.7 required=10.0 tests=RCVD_IN_DNSWL_NONE,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [61.9.168.149] (HELO nskntmtas05p.mx.bigpond.com) (61.9.168.149) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 May 2010 22:59:22 +0000 Received: from nskntotgx03p.mx.bigpond.com ([120.152.10.64]) by nskntmtas05p.mx.bigpond.com with ESMTP id <20100519225858.BCN18865.nskntmtas05p.mx.bigpond.com@nskntotgx03p.mx.bigpond.com> for ; Wed, 19 May 2010 22:58:58 +0000 Received: from [10.145.137.12] (really [120.152.10.64]) by nskntotgx03p.mx.bigpond.com with ESMTP id <20100519225857.OMBU1978.nskntotgx03p.mx.bigpond.com@[10.145.137.12]> for ; Wed, 19 May 2010 22:58:57 +0000 Message-ID: <4BF46D30.4010808@zeus.net.au> Date: Thu, 20 May 2010 08:58:56 +1000 From: Peter Firmstone Organization: Zeus Project Services User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) MIME-Version: 1.0 To: river-dev@incubator.apache.org Subject: Re: Codebase service? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-RPD-ScanID: Class unknown; VirusThreatLevel unknown, RefID str=0001.0A090207.4BF46D32.00A1,ss=1,fgs=0 X-Virus-Checked: Checked by ClamAV on apache.org 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.