This content has been marked as final.
Show 4 replies
-
1. Re: Seam and non-Seam application classloader issues
egore911 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 issues
egore911 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 issues
egore911 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 issues
egore911 Jul 23, 2010 7:05 AM (in response to egore911)I reported a bug at https://jira.jboss.org/browse/JBSEAM-4678