[ 
https://issues.apache.org/jira/browse/MYFACES-2806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Struberg resolved MYFACES-2806.
------------------------------------

    Fix Version/s: 2.0.1
       Resolution: Fixed

> possible bug in shared ClassLoader scenarios
> --------------------------------------------
>
>                 Key: MYFACES-2806
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2806
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.0.0
>            Reporter: Mark Struberg
>            Priority: Critical
>             Fix For: 2.0.1
>
>
> There is some code (mostly checked the facelets part yet) which is not aware 
> of Multi-ClassLoader scenarios like one has in J2EE environments where 
> MyFaces is installed inside the containers SharedClassLoader.
> An example: if you look at MetaRulesetImpl, you will see 
> private final static WeakHashMap<String, MetadataTarget> _metadata = new 
> WeakHashMap<String, MetadataTarget>();
> Assuming that myfaces-impl.jar gets shared between multiple WebApps, this is 
> utterly evil since this map only exists once for all WebApps.
> I found this issue because I got weird ClassCastExceptions in my project 
> which contains 2 WAR files in an EAR and those WAR files both contains 
> primefaces.jar. 
> I first hit a page from webapp1 which loads Watermark.class via webapp1 
> WebAppClassLoader.
> If you access a page from webapp2 after that and this also uses p:watermark, 
> it will find the cached method for Watermark, but this still is the class 
> loaded via the webapp1 ClassLoader. So on evaluating the EL it creates a 
> ClassCastException because WaterMark loaded via ClassLoader of webapp1 !=  
> WaterMark loaded via ClassLoader of webapp2.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to