Bug 47836

Summary: TldConfig keeps an internal list of ApplicationListeners
Product: Tomcat 6 Reporter: Guillaume Sauthier <guillaume.sauthier>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 6.0.20   
Target Milestone: default   
Hardware: All   
OS: All   
Attachments: When the Context is stopped, clears the listeners list

Description Guillaume Sauthier 2009-09-14 07:03:43 UTC
Created attachment 24258 [details]
When the Context is stopped, clears the listeners list

When a WebApp is refreshed, the following warning is displayed:

"StandardContext.addApplicationListener : The listener
"com.sun.faces.config.ConfigureListener" is already configured for this
context. The duplicate definition has been ignored."

This is because the TldConfig instance does not react to a STOP event of the
StandardContext. It should clear the list's content when the WebApp is stopped.

We've encountered this bug with tomcat 6.0.20.
I've checked the Tomcat7 TldConfig code to see if the issue may still be there,
but I'm not sure: there is some code dealing with already registered taglib URI
that may prevent the warning.

So the provided patch is against tomcat6.0.x branch (but should be easy to port
to trunk if there is some interest).

BTW, I've checked the TldLocationsCache source code, but it is not implementing
the LifecycleListener interface, so that patch cannot be applied on that file
...
Comment 1 Mark Thomas 2009-11-23 17:27:47 UTC
I found a handful of places where this was an issue in trunk. I've fixed these and will propose for backport to 6.0.x once I'm sure I have found them all.
Comment 2 Mark Thomas 2009-12-14 15:18:44 UTC
Patch proposed for 6.0.x
Comment 3 Mark Thomas 2009-12-19 18:22:12 UTC
Patch applied to 6.0.x and will be included in 6.0.21 onwards.