https://issues.apache.org/bugzilla/show_bug.cgi?id=55282

Volker <volker.malz...@cor.fja.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |---

--- Comment #8 from Volker <volker.malz...@cor.fja.com> ---
I have found the reason for adding com.sun.faces.config.ConfigureListener a
second time: Tomcat 7.0.41 contained following method in class
org.apache.catalina.core.StandardContext:

public void addApplicationListener(String listener)

This method checks that the same listener isn't added twice:

...
for (int i = 0; i < applicationListeners.length; i++) {
  if (listener.equals(applicationListeners[i])) {
    log.info(sm.getString("standardContext.duplicateListener",listener));
    return;
  }
  ...


In Tomcat 7.0.42 the type of instance variable applicationListeners was changed
from String[] to ApplicationListener[] and the method signature was changed to

public void addApplicationListener(ApplicationListener listener) 

But the check "listener.equals(applicationListeners[i])" in the fow loop wasn't
adjusted --> now it doesn't compares the fq class names of the listeners but
calls Object.equals() because class ApplicationListener doesn't overwrite
equals() method.

The solution would be to overwrite equals() and hashCode() method in
org.apache.catalina.deploy.ApplicationListener.

I have checked current Tomcat version 8.0.8 and the issue is still present
there. I would help much to fix it in Tomcat 7 and 8 releases.


(In reply to Oleksii from comment #6)
> I have encountered the same problem when used a workoaround solution for a
> SEAM project (https://issues.jboss.org/browse/JBSEAM-4401). I need the
> ConfigureListener to be invoked before the SeamListener.
> 
> During debugging I found that the com.sun.faces.config.ConfigureListener is
> added twice in org.apache.catalina.core.StandardContext.
> 
> The first instance is added because it is described in the web.xml.
> 
> The second instance is added by a JarScanner because the listener is
> described in jsf-impl.jar/META-INF/jsf_core.tld. My jsf-impl has an
> Implementation-Version: 2.1.7-SNAPSHOT.
> 
> I have no idea how to avoid the situation yet.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to