> From: Marcus Crafter [mailto:[EMAIL PROTECTED]] > > Hi All, > > Hope all is well. I need some advice! :) > > In my quest to avalonize and cocoonize our application, I've > come up against a problem. > > From what I can see, it's not possible to add context key/values to > the cocoon context from a servlet subclass for thread safe components. > > Threadsafe component instances are created by the ECM during > Cocoon's startup in CocoonServlet.init(). If one wants to modify > CocoonServlet.appContext in a servlet subclass (using values > from init-param's, etc) then CocoonServlet.init() has to be > called before the subclass does any work. > > This means, thread safe components that implement Contextualizable > won't be able to find any context values they need. > > What am I trying to do ? Store values in the Cocoon context that are > global across all components. > > I've found several solutions: > > 1. make CocoonServlet.createCocoon() protected, allowing a > subclass to override it, accessing the appContext before the Cocoon > instance is created. > > 2. make it possible to defer the creation of the Cocoon > instance. eg. add an init-param 'create-cocoon-at-startup' which > will specify whether the Cocoon instance will be created in > CocoonServlet.init(), or at first request (or by a subclass). > This allows a subclass to add values to the cocoon context > during subclass.init(). > > 3. incorporate Wolfram Eiserts Avalon scratchpad ContextUtility > class which allows one to specify a <context>..</context> tag > set in cocoon.xconf that automatically populates the Cocoon context > with globals. More info under > http://marc.theaimsgroup.com/?l=avalon-dev&m=101559574528413&w=2 > > 4. any others ?
Here it is: Write another servlet populating context and set startup order in the web.xml so it is initialized before Cocoon servlet. Vadim > I've tried other combinations of solutions (eg. parent component > manager), but they all have other problematic issues. :( > > I've implemented all 3 options, but are wondering what everyone > else thinks or if there is an easier way ? > > Any thoughts ? > > Cheers, > > Marcus > > -- > ..... > ,,$$$$$$$$$, Marcus Crafter > ;$' '$$$$: Computer Systems Engineer > $: $$$$: ManageSoft GmbH > $ o_)$$$: 82-84 Mainzer Landstrasse > ;$, _/\ &&:' 60327 Frankfurt Germany > ' /( &&& > \_&&&&' > &&&&. > &&&&&&&: --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]