I wrote a small avalon compatible container called Pulga (15K). It handles the avalon life cycle and provides an option to the dependency injection strategy used by Avalon (Serviceable) using annotations. Example:
Instead of: public void service(ServiceManager manager) { MyComponent component = (MyComponent) manager.lookup(MyComponent.ROLE); } just use: @Depedency private MyComponent component Of course, implementing Serviceable still works. I dislike ECM/Fortress because they have lots of dependencies. Pulga has a really small set of dependencies and works with conventions to simplify it's configuration file. For example, if you component is: interface: my.package.Component implementation: my.package.impl.ComponentImpl You don't even have to declare it in pulga.xml, which resembles roles.xmland system.xconf.xml. There are lots of other useful conventions too. -- Leandro Rodrigo Saad Cruz CTO - InterBusiness Technologies db.apache.org/ojb guara-framework.sf.net xingu.sf.net On 6/24/06, Peter Courcoux <[EMAIL PROTECTED]> wrote:
Hi Jurgen, I just knew someone was going to ask that. The recommended (Excalibur project) replacement is Fortress. I think it builds a graph of component dependencies and starts them in the right order. It also, I believe, doesn't do much, if any, playing with classloaders. I think that these are the two areas which cause our problems with ECM. I have a Fortress 1.0 service which I wrote a while ago, but If I recall correctly the meta data tools did not play nicely with Java 5 and tagging some of the Fulcrum components was a nightmare because of how they were structured. I think fulcrum security was the problem here. It just seemed like too much work. Maybe the 1.1 release of Fortress fixes the java 5 problem. If so it might be worth looking at. YAAFI is worth looking at. I just don't know if it has been used in a large complex application and if it handles these issues. I have been meaning to look again at this for a long time but haven't got round to it. I think the Coccon project had ECM problems and wrote an enhanced container specifically for Cocoon. This might be worth investigating. Overriding all this is the question of how much traction Avalon has and is it worth the effort. The Avalon project basically self-destructed and has fragmented. I don't know how big a community there is with Avalon knowledge now. I have been trying to avoid making a decision for as long as possible. Personally, I think that the osgi framework looks like it has most following, eclipse runs on the equinox osgi runtime and has the PDE which provides support for developing osgi compliant bundles. There is also Felix at the ASF and other implementations around. I think I'm fed up with Avalon and would rather put extra effort to learn how to use something like equinox. I think it is possible to convert Avalon components to osgi bundles and there is a new embeddable osgi implementation being worked on at the eclipse project at the current time. I am watching this and will be experimenting with it shortly. In short, I'm not sure that Avalon is worth the effort. Not for me anyway. However, there are some options, both Avalon and non-avalon. It really depends on who gets to it first and how they feel about it all. :-) Regards, Peter Jürgen Hoffmann wrote: > Hi Peter, > > Am Samstag, 24. Juni 2006 21:48 schrieb Peter Courcoux: > >>Hi all, >> >>I agree that 2.4 is the way to go. I have several applications including >>some fairly large ones using 2.4-m1 in production > > > great to hear that, makes me move even faster :) > > >>and the only thing I would really like to do is get rid of ECM as >>the Avalon Services Container. There can be problems with this >>with large complex multithreaded applications with lots of components. > > > would you suggest to replace it wiht some other container? If yes which? > > Kind regards > > Juergen -- ------------------------------ Peter Courcoux Telephone : +44 (0)1923 661488 Mobile : 07880 605626 email : [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]