Hi all,

I changed the lazy loading so that preload="true" is no more needed for components that *must* be loaded at startup time.

First of all, loading classes on a full Cocoon doesn't add that much time (100 ms on my 18 months old PowerBook), whereas initializing all components doubles the manager load time. So lazy loading _is_ useful.

All components that implement the Avalon Startable interface are now initialized at startup. A number of components implement this interface, and I'm not sure all of them really need it.

Components that for sure need to be loaded a startup time:
- cron: QuartzJobScheduler (must start registered jobs)
- hsqldb: ServerImpl (must start the db server)
- ojb: ConnectionFactoryImpl and LoggerImpl (because of the static attributes hack)
- portal: AbstractComponent (so that they're registered as event listeners)

Components that implement Startable but don't need to be loaded at startup time
- core: StoreJanitorImpl
 The janitor is not needed until some store registers itself on it.
- core: DefaultRunnableManager
 The thread pool can be created lazily when the first Runnable is executed.
- axis: SoapServer.
There's no "server" per se, and the soap resquest and response are setup by the SoapReader.

I will remove the Startable interface on these components and move the corresponding code to initialize() and dispose()

Components that are either Startable or have the preload attribute, but which I'm not sure really need to be loaded at startup:
- portal: PortalToolManager
 Why does it need to be preloaded?
- jms: JMSConnectionManagerImpl
Start() creates the connections and topics, but it looks like the component itself doesn't use these connections. So can their creation be deffered?

I would like to have some inputs on the last two components.

Sylvain

--
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director

Reply via email to