Details
Description
We have several web applications running, all use icefaces. We put icefaces jars and dependent jars in the global class path of the application server.
If the applications use different phase listeners defined in their faces-config.xml only the one deployed first is used for all web applications.
If the applications use different phase listeners defined in their faces-config.xml only the one deployed first is used for all web applications.
Activity
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
Assignee Priority | P2 |
Ken Fyten
made changes -
Fix Version/s | 1.8.2-RC1 [ 10210 ] |
Deryk Sinotte
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #19052 | Thu Jul 09 14:28:42 MDT 2009 | deryk.sinotte | |
Files Changed | ||||
MODIFY
/icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/core/SwfLifecycleExecutor.java
MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/core/LifecycleExecutor.java MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/parser/JspPageToDocument.java MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/webapp/http/core/JsfLifecycleExecutor.java |
Arran Mccullough
made changes -
Attachment | Case8402Example1.war [ 11825 ] | |
Attachment | Case8402Example2.war [ 11826 ] |
Ken Fyten
made changes -
Fix Version/s | 1.8.2 [ 10190 ] | |
Assignee Priority | P2 | |
Assignee | Deryk Sinotte [ deryk.sinotte ] |
Arran Mccullough
made changes -
Field | Original Value | New Value |
---|---|---|
Salesforce Case | [50070000009JxgH] |
Marcus Abels
created issue -
The issue was related to scoping variables as "static" in the LifecycleExecutor and its subclasses. In storing the JSF LifecycleFactory and our own specific executors (JsfLifecycleExecutor and SwfLifecycleExecutor) statically, it caused the noted problem when the libraries where deployed in a shared location on the app server. Due to classloading complexities, the application would end up with the same instances of the Lifecycle and Executors. Since they are responsible for running the JSF lifecycle (and, in turn, firing events to the PhaseListeners), having them as static would cause the first application to set the values for all applications.
I've changed the logic to remove the static scoping and store the desired executors in the application map. This should be nearly as efficient and allows each application to have it's own proper set of references.