Re: EL method invocation performance
Hi, hi martin, it would be nice to get more details about the juel issues. Christian fixed them promptly in JUEL's svn: http://sourceforge.net/tracker/?func=detailaid=3095122group_id=165179atid=834616 http://sourceforge.net/tracker/?func=detailaid=3031783group_id=165179atid=834616 Back to original topic: JUEL caches the ExpressionFactory instance and thus does not have discussed performance problem. regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/10/19 Martin Koci martin.kocicak.k...@gmail.com Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/ and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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
Re: EL method invocation performance
@fixed juel: great! regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/10/28 Martin Koci martin.kocicak.k...@gmail.com Hi, hi martin, it would be nice to get more details about the juel issues. Christian fixed them promptly in JUEL's svn: http://sourceforge.net/tracker/?func=detailaid=3095122group_id=165179atid=834616 http://sourceforge.net/tracker/?func=detailaid=3031783group_id=165179atid=834616 Back to original topic: JUEL caches the ExpressionFactory instance and thus does not have discussed performance problem. regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/10/19 Martin Koci martin.kocicak.k...@gmail.com Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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
Re: EL method invocation performance
hi martin, it would be nice to get more details about the juel issues. regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/10/19 Martin Koci martin.kocicak.k...@gmail.com Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at
Re: EL method invocation performance
Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Huge +1 - please do so! Regards, Jakob 2010/10/20 Ivan xhh...@gmail.com: Hi, Martin, i committed your patch to geronimo-el-2.2 1.1-SNAPSHOT, and will publish a SNAPSHOT to the repository later, seems I got a slow network acess speed ... Thanks for pointing it out :-) 2010/10/20 Martin Koci martin.kocicak.k...@gmail.com Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/ and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at
Re: EL method invocation performance
Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/ and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at
Re: EL method invocation performance
Hi, Martin, i committed your patch to geronimo-el-2.2 1.1-SNAPSHOT, and will publish a SNAPSHOT to the repository later, seems I got a slow network acess speed ... Thanks for pointing it out :-) 2010/10/20 Martin Koci martin.kocicak.k...@gmail.com Hi, some news about EL method invocations: 1) Geronimo EL API implementation has this problem too: https://issues.apache.org/jira/browse/GERONIMO-5657 2) UEL bug is still open: https://uel.dev.java.net/issues/show_bug.cgi?id=19 3) JUEL doesn't not work for my test cases, for example it doesn't find some public methods so I cannot say if JUEL has this problem now. My today's recommedation (which can change tommorow) is: if you want EL method invocations without file asscess within (without /META-INF/services reading): A) apply GERONIMO-5657 patch to http://svn.apache.org/repos/asf/geronimo/specs/trunk/geronimo-el_2.2_spec/and build this EL-API B) use impl part from uel.dev.java.net as EL-impl or tomcat's EL impl Please note that uel.dev.java.net API suffers from classic leaking classloader problem too - it uses Class instance as key in static Map : see MYFACES-2942 for details. Maybe we should put a warning about these two issues at http://wiki.apache.org/myfaces/HowToEnableEl22 ? Regards, Kocicak Martin Koci píše v St 25. 08. 2010 v 20:52 +0200: Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at -- Ivan
Re: EL method invocation performance
Gang - Kin-man opened the following issue to track this on the GF/UEL side: https://uel.dev.java.net/issues/show_bug.cgi?id=19 Andy
EL method invocation performance
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
Re: EL method invocation performance
How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan
Re: EL method invocation performance
Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at
Re: EL method invocation performance
On Wed, Aug 25, 2010 at 11:10 AM, Jakob Korherr jakob.korh...@gmail.com wrote: If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) +1. I pinged Kin-man as a heads up on this... Andy
Re: EL method invocation performance
Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at
Re: EL method invocation performance
Great! I thought that tomcat and geronimo EL implementation are from same source; But just now I'm looking in geronimo code and expressionFactory instance is cached - I'll definitely try it, thanks! Ivan píše v St 25. 08. 2010 v 22:54 +0800: How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan
Re: EL method invocation performance
Now I'm sure that it is an implementation problem: it was very suspicious that both Tomcat and Glassfish implementations have it - but Geronimo does not have this problem. Andy Schwartz píše v St 25. 08. 2010 v 11:38 -0400: On Wed, Aug 25, 2010 at 11:10 AM, Jakob Korherr jakob.korh...@gmail.com wrote: If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) +1. I pinged Kin-man as a heads up on this... Andy
Re: EL method invocation performance
great, I think Glassfish, Tomcat and JBoss do appreciate a bug report :-) -Matthias On Wed, Aug 25, 2010 at 8:43 PM, Martin Koci martin.k...@aura.cz wrote: Now I'm sure that it is an implementation problem: it was very suspicious that both Tomcat and Glassfish implementations have it - but Geronimo does not have this problem. Andy Schwartz píše v St 25. 08. 2010 v 11:38 -0400: On Wed, Aug 25, 2010 at 11:10 AM, Jakob Korherr jakob.korh...@gmail.com wrote: If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) +1. I pinged Kin-man as a heads up on this... Andy -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf
Re: EL method invocation performance
Hi, I'll try it but not today :) Optimization is my priority task for next few months and certainly I'll compare all four (or more?) EL implementations. Mark Struberg píše v St 25. 08. 2010 v 17:52 +: Martin, could you please give juel a quick try? Would be interested if if also suffers from this problem. You can find a slightly tweaked (bugfixed) version of it on my github page http://github.com/struberg/juel The original is on juel.sourceforge.net LieGrue, strub From: Jakob Korherr jakob.korh...@gmail.com To: MyFaces Development dev@myfaces.apache.org Sent: Wed, August 25, 2010 5:10:09 PM Subject: Re: EL method invocation performance Hi, Does this really have to happen at every method invocation or is this an implementation problem? If it is an implementation problem and can be circumvent in any way, I would contact the Glassfish and Tomcat developers about this ;) Regards, Jakob 2010/8/25 Ivan xhh...@gmail.com How about trying the el api published by Geronimo ? it caches the ExpressionFactory to avoid the search action by default. 2010/8/25 Martin Koci martin.k...@aura.cz 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 -- Ivan -- Jakob Korherr blog: http://www.jakobk.com twitter: http://twitter.com/jakobkorherr work: http://www.irian.at