Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 64798 invoked from network); 5 Mar 2009 07:21:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 5 Mar 2009 07:21:45 -0000 Received: (qmail 95563 invoked by uid 500); 5 Mar 2009 07:21:44 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 95501 invoked by uid 500); 5 Mar 2009 07:21:44 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 95488 invoked by uid 99); 5 Mar 2009 07:21:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 04 Mar 2009 23:21:44 -0800 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of xhhsld@gmail.com designates 209.85.198.229 as permitted sender) Received: from [209.85.198.229] (HELO rv-out-0506.google.com) (209.85.198.229) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Mar 2009 07:21:38 +0000 Received: by rv-out-0506.google.com with SMTP id g9so1410159rvb.3 for ; Wed, 04 Mar 2009 23:21:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=Ak+xOzyXbZ8dywSpBnMuNxlZnVrEeqwZ15O75LVRpQ4=; b=DG0mwoWtKH+N6F9sX+DZENdeqZbyVYcipd/elftZoUbcqpkIUZv7SE9SWwGqXiXNmO InSGvUW7omZBVMfbJGAvO9DsXsAcMaAu+TVgyNnCatZFiAkUA1luEvbUPH7fU2v4jayI 0iHlbNQO6XgXo8zbJ+RTn04LuBM9r38Acokqw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=Na9+8MToOPmn97wufaGxvTVkzylUw792Ba1f6lm4BvIQtGiHynl8KuWvco+tXswDDt Lxm6W0JXNhDmOPI2DNtqP/rU0FiDTH/aUp2nuU+wbw9zVel4bWlwWGs0F+W3yBIfFHNC eT9bGCTYAIVQ2byrIMKSMO96akDVVrMzMoSnw= MIME-Version: 1.0 Received: by 10.141.116.17 with SMTP id t17mr452401rvm.239.1236237677405; Wed, 04 Mar 2009 23:21:17 -0800 (PST) In-Reply-To: References: Date: Thu, 5 Mar 2009 15:21:17 +0800 Message-ID: <45f744e40903042321g34d6c21dx882e404f56d98a23@mail.gmail.com> Subject: Re: Whence the geronimo kernel? From: Ivan To: dev@geronimo.apache.org Content-Type: multipart/alternative; boundary=000e0cd214d29ea6d804645a03ab X-Virus-Checked: Checked by ClamAV on apache.org --000e0cd214d29ea6d804645a03ab Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit It is a good idea. I encounter some similar issues about the multiparent classloader. From the pom.xml, currently, it is hard to know which jar is in the classpath. The dependies between the configurations are also too complex, I notice that the restart/reload codes in the configurationManager is very very ... Maybe we could replace all the codes in the configurationManager, and just delegate it to the OSGI module/lifecycle layer. Thanks ! 2009/3/5 David Jencks > Geronimo has been around for a while and despite the many good features > gbeans and the geronimo kernel are not catching on big time. I think we > want to consider taking action now to avoid ending up being dragged down by > supporting a dead container. Here are a few thoughts. > > Actual problems with geronimo: > - gbeans are too restrictive. It's too hard to instantiate other peoples > components as gbeans. GBeans don't support common patterns like factory > methods, factory beans, etc etc, and require the component to be > instantiated directly by the gbean framework. > - it's too hard to get the classloaders to work. The most common problem > is a class cast exception due to loading the same jar in two plugins. > NoClassDefFound errors from an optional jar in a child classloader are also > really annoying. > > Really good things about geronimo I haven't seen elsewhere (at least in one > place): > - gbean dependencies work across plugins. Dependencies are a unified > system, not per-plugin. > - gbean dependencies are resolved in the ancestors of a plugin, not server > wide. This means that you can't make a partially specified dependency > ambiguous by deploying additional plugins. I consider this an extremely > important feature for predictability. > - plugin dependencies allow assembly of a server from the explicit > dependencies which are normally the same as the maven dependencies. > > Other projects and specs that have stuff we should look into: > maven. Maven has a lot better infrastructure for dealing with dependency > resolution from partial transitive dependency specification than we do. We > should look into using more of their infrastructure. > osgi. osgi has a lot of similarities to geronimo. The osgi classloading > model is getting a lot of people excited. The import-bundle idea is pretty > much the same as our classloader model where every jar is a plugin. I don't > know if people are really using the allegedly recommended method of > specifying imports and exports and letting the osgi runtime figure out where > they come from; this seems worth investigating to me. Also, we get periodic > inquiries about when we are going to support osgi and the was ce folks get > even more. > osgi blueprint service (rfc 124) This appears to be a simple wiring > framework for a single plugin. IIUC it uses the osgi service registry for > component dependencies between bundles. > xbean-spring. I'd be reluctant to try to implement a blueprint service > that didn't provide the xbean-spring capabilities really well > ee6 dependency injection. EE6 is going to have a pretty sophisticated > dependency injection service which we'll need to support anyway. We should > try to figure out how much of the core we can assemble using it. > > Other great stuff we have: > xbean-reflect, xbean-finder, xbean-spring > > > These ideas have been floating around in my head for a long time and I've > chatted with various people about them occasionally. While more discussion > is certainly needed on everything here I need to do some implementation to > understand much more. So, what I'm planning to do: > > Dave's crazy work plan... > - Try to use the osgi classloader. I think this involves putting the > classloader creation in Configuration into a service. Configurations will > turn into osgi bundles. I'll put the Kernel in the osgi ServiceRegistry so > the Configuration bundle activator should be able to use it to resolve > cross-plugin dependencies. > - try to figure out how maven dependency resolution fits into osgi. > - see if eclipse p2 is relevant for provisioning geronimo repositories > > at this point I think geronimo would be running on osgi, still using > gbeans. > > - look into relaxing the gbean framework so it is more plugin-at-a-time > rather than gbean-at-a-time > - see how that differs from the blueprint service, ee DI, and xbean-spring. > Try to support all of these at once. > > Thoughts? Counter proposals? Anyone interested? > > many thanks > david jencks > > -- Ivan --000e0cd214d29ea6d804645a03ab Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable It is a good idea.
I encounter some similar issues about the multiparent= classloader. From the pom.xml, currently, it is hard to know which jar is = in the classpath. The dependies between the configurations are also too com= plex, I notice that the restart/reload codes in the configurationManager is= very very ...
Maybe we could replace all the codes in the configurationManager, and just = delegate it to the OSGI module/lifecycle layer.
Thanks !


2009/3/5 David Jencks <david_jencks@yahoo.com>
Geronimo has been= around for a while and despite the many good features gbeans and the geron= imo kernel are not catching on big time. =A0I think we want to consider tak= ing action now to avoid ending up being dragged down by supporting a dead c= ontainer. =A0Here are a few thoughts.

Actual problems with geronimo:
- gbeans are too restrictive. =A0It's too hard to instantiate other peo= ples components as gbeans. =A0GBeans don't support common patterns like= factory methods, factory beans, etc etc, and require the component to be i= nstantiated directly by the gbean framework.
- it's too hard to get the classloaders to work. =A0The most common pro= blem is a class cast exception due to loading the same jar in two plugins. = =A0NoClassDefFound errors from an optional jar in a child classloader are a= lso really annoying.

Really good things about geronimo I haven't seen elsewhere (at least in= one place):
- gbean dependencies work across plugins. =A0Dependencies are a unified sys= tem, not per-plugin.
- gbean dependencies are resolved in the ancestors of a plugin, not server = wide. =A0This means that you can't make a partially specified dependenc= y ambiguous by deploying additional plugins. =A0I consider this an extremel= y important feature for predictability.
- plugin dependencies allow assembly of a server from the explicit dependen= cies which are normally the same as the maven dependencies.

Other projects and specs that have stuff we should look into:
maven. =A0Maven has a lot better infrastructure for dealing with dependency= resolution from partial transitive dependency specification than we do. = =A0We should look into using more of their infrastructure.
osgi. osgi has a lot of similarities to geronimo. The osgi classloading mod= el is getting a lot of people excited. =A0The import-bundle idea is pretty = much the same as our classloader model where every jar is a plugin. =A0I do= n't know if people are really using the allegedly recommended method of= specifying imports and exports and letting the osgi runtime figure out whe= re they come from; this seems worth investigating to me. Also, we get perio= dic inquiries about when we are going to support osgi and the was ce folks = get even more.
osgi blueprint service (rfc 124) This appears to be a simple wiring framewo= rk for a single plugin. =A0IIUC it uses the osgi service registry for compo= nent dependencies between bundles.
xbean-spring. =A0I'd be reluctant to try to implement a blueprint servi= ce that didn't provide the xbean-spring capabilities really well
ee6 dependency injection. =A0EE6 is going to have a pretty sophisticated de= pendency injection service which we'll need to support anyway. =A0We sh= ould try to figure out how much of the core we can assemble using it.

Other great stuff we have:
xbean-reflect, xbean-finder, xbean-spring


These ideas have been floating around in my head for a long time and I'= ve chatted with various people about them occasionally. =A0 While more disc= ussion is certainly needed on everything here I need to do some implementat= ion to understand much more. =A0So, what I'm planning to do:

Dave's crazy work plan...
- Try to use the osgi classloader. =A0I think this involves putting the cla= ssloader creation in Configuration into a service. =A0Configurations will t= urn into osgi bundles. =A0I'll put the Kernel in the osgi ServiceRegist= ry so the Configuration bundle activator should be able to use it to resolv= e cross-plugin dependencies.
- try to figure out how maven dependency resolution fits into osgi.
- see if eclipse p2 is relevant for provisioning geronimo repositories

at this point I think geronimo would be running on osgi, still using gbeans= .

- look into relaxing the gbean framework so it is more plugin-at-a-time rat= her than gbean-at-a-time
- see how that differs from the blueprint service, ee DI, and xbean-spring.= =A0Try to support all of these at once.

Thoughts? Counter proposals? =A0Anyone interested?

many thanks
david jencks




--
Ivan
--000e0cd214d29ea6d804645a03ab--