Hi,

this problem is not in myfaces but affects performance especially in
render response phase: 

EL 2.2 introduces method invocation but if you try use it like
rendered="#{bean.getRendered(param)}" there is an unpleasant surprise:
both implementations of BeanELResolver (Glassfish, Tomcat) use this
construction during method invocation:

ExpressionFactory exprFactory = ExpressionFactory.newInstance();

That newInstance() always involves FactoryFinder mechanism, callstack
then looks like :

org.apache.catalina.loader.WebappClassLoader.findResourceInternal
 org.apache.catalina.loader.WebappClassLoader.findResource
 org.apache.catalina.loader.WebappClassLoader.getResourceAsStream
   javax.el.FactoryFinder.find(String, String, Properties)
    javax.el.ExpressionFactory.newInstance(Properties)
     javax.el.ExpressionFactory.newInstance()
      javax.el.BeanELResolver.invokeMethod(Method, Object, Object[])


Always tries to locale factory implementation, that
means /META-INF/services reading! This is not problem in myfaces, but
users don't distinguish between JSF and EL well.

Any ideas? 

Regards,

Martin Kočí

https://uel.dev.java.net/svn/uel/trunk/api/src/main/java/javax/el/BeanELResolver.java
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanELResolver.java



Reply via email to