This content has been marked as final. 
    
Show                 4 replies
    
- 
        1. Re: Seam and non-Seam application classloader issuesegore911 Jul 22, 2010 11:25 AM (in response to egore911)From what I could find out the SeamPhaseListener (loaded from jboss-seam-2.2.1.CR1.jar!/META-INF/faces-config.xml) always registers itself for any JSF/Facelets application. So I think this listener should check if an application for is a seam application, before doing anything. 
- 
        2. Re: Seam and non-Seam application classloader issuesegore911 Jul 23, 2010 5:16 AM (in response to egore911)From dceeb82672a159acae35d51b502bcff3a24a8c38 Mon Sep 17 00:00:00 2001
 From: Christoph Brill <egore911@...>
 Date: Fri, 23 Jul 2010 11:10:25 +0200
 Subject: [PATCH] Stop the PhaseListener doing work on non-seam applications
 ---
 .../java/org/jboss/seam/jsf/SeamPhaseListener.java | 13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
 diff --git a/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java b/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
 index d13aeea..c4eb5d3 100644
 --- a/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
 +++ b/src/main/java/org/jboss/seam/jsf/SeamPhaseListener.java
 @@ -21,6 +21,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
 +import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import org.jboss.seam.Seam;
 @@ -105,6 +106,12 @@ public class SeamPhaseListener implements PhaseListener
 {
 log.trace( "before phase: " + event.getPhaseId() );
 + // Skip non-seam applications
 + ServletContext servletContext = (ServletContext) event.getFacesContext().getExternalContext().getContext();
 + if (servletContext.getAttribute(Seam.VERSION) == null) {
 + return;
 + }
 +
 FacesLifecycle.setPhaseId( event.getPhaseId() );
 try
 @@ -184,6 +191,12 @@ public class SeamPhaseListener implements PhaseListener
 {
 log.trace( "after phase: " + event.getPhaseId() );
 + // Skip non-seam applications
 + ServletContext servletContext = (ServletContext) event.getFacesContext().getExternalContext().getContext();
 + if (servletContext.getAttribute(Seam.VERSION) == null) {
 + return;
 + }
 +
 try
 {
 raiseEventsAfterPhase(event);
 --
 1.7.0.4
- 
        3. Re: Seam and non-Seam application classloader issuesegore911 Jul 23, 2010 5:18 AM (in response to egore911)The patch provided above against Seam 2.2.1.CR1 stops the phase listener from doing anything on non-seam applications. I patched my local jboss-seam-2.2.1.CR1.jar and it works this way. 
- 
        4. Re: Seam and non-Seam application classloader issuesegore911 Jul 23, 2010 7:05 AM (in response to egore911)I reported a bug at https://jira.jboss.org/browse/JBSEAM-4678 
