cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reinhard Poetz <>
Subject Re: Cocoon Maven plugin - Merging deployer & rcl
Date Thu, 03 May 2007 10:05:02 GMT
Giacomo Pati wrote:
> Reinhard Poetz wrote:
>> Giacomo Pati wrote:
>>> Reinhard Poetz wrote:
>>>> Giacomo Pati wrote:
>>>>> Now this seems to me that some changes with the RCL prevents third
>>>>> party servlet filters to access
>>>>> the ApplicationContext, or am I wrong?
>>>> no, that's my interpretation of the stacktrace too
>>>>> Any pointers?
>>>> The problem is that when the app context gets reloaded, there is a time
>>>> frame, when the context is not available. At the moment I only have a
>>>> vague idea how we can prevent e.g. the acegi filter from accessing a
>>>> (temporarily) non-existing context.
>>>> Maybe we can provide some kind of wrapper for the app context that locks
>>>> the access to the app context in question for the time of
>>>> reinitializiation.
>>> Sounds kinda complicated. Where is would such a thing be located in
>>> the code?
>> I've had some more thoughts about this and I believe that we don't need
>> to go that far. We only have to make sure that all servlets, filters and
>> listeners that we inject are being rewritten so that they get wrapped by
>> their "Reloading*" equivalents, e.g. see the dispatcher servlet:
>>       <servlet>
>>         <servlet-name>DispatcherServlet</servlet-name>
>>         <display-name>DispatcherServlet</display-name>
>>         <description>Cocoon blocks dispatcher</description>
>> <servlet-class></servlet-class>
>>         <init-param>
>>           <param-name>servlet-class</param-name>
>> <param-value>org.apache.cocoon.servletservice.DispatcherServlet</param-value>
>>         </init-param>
>>         <load-on-startup>1</load-on-startup>
>>       </servlet>
>> Carsten added the code that rewrites a web.xml in order to use the
>> shielding stuff, see
>> org.apache.cocoon.maven.deployer.WebApplicationRewriter.shieldWebapp.
>>  It shouldn't be too difficult to use it for our purpose too.
> To be honest, I don't get most of what you're saying. Do you propose to write a wrapper
for each and
> every Filter one intend to use?

No, we already have those wrappers and we need only _one_ of them per type 
(servlet, filters, listeners). See the example above: The DispatcherServlet 
isn't loaded directly. Instead, gets the parameter 
servlet-class with the value of the "wrapped" servlet passed. This way the 
classloader is injected.

I *believe* (though I'm not 100% sure) that the problem you are facing now is 
that your acegi filter isn't wrapped and bypasses the reloading stuff.

Reinhard Pötz           Independent Consultant, Trainer & (IT)-Coach 

{Software Engineering, Open Source, Web Applications, Apache Cocoon}


View raw message