We're testing the View Pooling features of MyFaces 2.2.x on a large 
pre-existing JSF site with very complex and heavy views with lots of composite 
components.  
The performance improvement is frankly amazing - we've gone from GC events 
every few seconds under heavy load to virtually no GC events at all...   Kudos 
to Leonardo for building in this feature!
We've encountered one specific issue - a NullPointerException when using 
oamEnableViewPool="false" to disable pooling for specific views.  We've created 
https://issues.apache.org/jira/browse/MYFACES-3966 for this issue.
We needed to disable pooling for certain views because we noticed issues with 
"static structure" views when using ViewScope.  Our ViewScope beans are 
available in our controller code, but are no longer available during the Render 
Response phase in our xhtml pages - via expression language lookups.     
   - On the very first request to the view (before its placed in the pool), the 
state is applied correctly - but then every subsequent request to the pooled 
view doesn't have the correct view state.   

   - It looks like the view state hasn't been correctly applied on the view 
after its retrieved from the pool.
Ways we've been able to work around this issue:   
   - If we disable view pooling for these views, then the beans are correctly 
available in ViewScope.   

   - We don't see this issue on any of our "dynamic structure" views - in fact, 
if we convert the static structure view to a dynamic structure view (via an 
extra ui:include with EL, etc), then the view state is mapped correctly and the 
viewscope beans are available. There must some pooling state restore logic 
that's missing from static structure logic?    

Has anyone else seen this issue?  Or has anyone implemented view pooling with 
static and dynamic structure views and view scope?
Thanks!Chris Kulinski


Reply via email to