At 02:31 AM 6/13/2003, you wrote:
Berin Loritsch wrote_ > > Fortress allows us to do a number of really cool things that are > not available in the ECM. One of them is to no longer require the > accursed "Roles" file. Adding new user components to Cocoon and > having the configuration able to use those components directly > is just as simple as including the new JAR in the classpath. > > Startup times can be optimized as much as possible either by using > asyncronous component startup or by using request based startup. > To top it off, you also have early warning in case there is some > circular component dependency. > Sounds great!
I am not terribly deep on the avalon or ECM stuff now, so excuse my possibly ignorant questions:
- Does Fortress have to search every class in the classpath to find "components" that it may have to fire life cycle events for at startup?
No. It limits it to classes specified in the configuration file. It finds out about the components through meta data in predefined locations--but it doesn't have to read it in until the info is needed.
- I thought I heard that the Component interface is now deprecated - does this mean that it also has to search each of those classes for any of the interfaces which may make it a de facto Component?
Fortress provides a proxy implementation so that all components will now implement Component to work with legacy systems (i.e. components still using ComponentManager instead of ServiceManager). You can use the BCEL generated proxy (still making it more robust) or JDK 1.3 dynamic proxies. Dynamic proxies are 5 times slower than BCEL generated ones. Neither are so slow as to be unusable.
There is an option to use no proxy class, in which case you are on your own as far as security and ensuring all your components can work with each other.
- What is Merlin in comparison to Fortress? IIRC I have seen proposals to move to this in the past. (I have the feeling I am stepping into something on this one - I am truly ignorant).
There are a couple things to consider:
1) Fortress is released, and it was designed to help people migrate from ECM based solutions.
2) Fortress allows you to slowly migrate to solutions where you have default components--which means you can bypass the ServiceSelector step if you only use one DataSourceComponent. Fortress will make sure that components designed for both situations will continue to work.
3) Merlin is not released yet--it is fully functional, and there is alot to like about it, but it is not officially supported yet.
4) Merlin was not designed to help people migrate from ECM based systems like Cocoon. You can consider Fortress to be a stepping stone towards a more compatible future.
I am not dogging Merlin. I am saying that jumping directly to Merlin from ECM is going to be a major culture shock--something that can be avoided.