Hi guys, well, yes - I fear so as well.
I wonder if that development switch is used often in other places as well - do we have that same performance problem somewhere else? best regards, Martin On Fri, May 21, 2010 at 6:17 PM, Jakob Korherr <jakob.korh...@gmail.com> wrote: > But this _could_ be a problem, or at least result in weird behavior, so I > think it is the best solution just to remove the code from UIInput... > > Regards, > Jakob > > 2010/5/21 Gerhard Petracek <gerhard.petra...@gmail.com> >> >> yes - that's true! i also told leonardo about it. >> in his e-mail he just skipped it... >> regards, >> gerhard >> >> http://www.irian.at >> >> Your JSF powerhouse - >> JSF Consulting, Development and >> Courses in English and German >> >> Professional Support for Apache MyFaces >> >> >> >> 2010/5/21 Martin Marinschek <mmarinsc...@apache.org> >>> >>> Hi guys, >>> >>> if MyFaces is deployed with the web-app, the static var will reside in >>> a class which is loaded by the context class-loader - so once per app. >>> Problems might only arise if MyFaces is deployed only once for all >>> web-apps - which will seldom be the case, I guess. >>> >>> best regards, >>> >>> Martin >>> >>> On 5/21/10, Jakob Korherr <jakob.korh...@gmail.com> wrote: >>> > So the conclusion is to use a private static boolean on UIInput that >>> > tells >>> > us if we are in Development stage or not. >>> > >>> > Any objections to that? >>> > >>> > Regards, >>> > Jakob >>> > >>> > 2010/5/20 Leonardo Uribe <lu4...@gmail.com> >>> > >>> >> Hi >>> >> >>> >> 2010/5/19 Jan-Kees van Andel <jankeesvanan...@gmail.com> >>> >> >>> >> Sounds plausible, we already do the same thing with the >>> >> ExternalContexts >>> >>> class. >>> >>> >>> >>> It's blazing fast, but the question is: Are we allowed to and do we >>> >>> want >>> >>> to cache the instance? >>> >>> >>> >>> >>> >> In theory yes, because it does not change the behavior expected by the >>> >> spec. >>> >> >>> >> >>> >>> If the spec doesn't dictate otherwise, I'm in favor of caching it. >>> >>> >>> >>> Another idea is to cache it in the ServletContext. It's not as fast >>> >>> as a >>> >>> static final field, but still pretty fast and can be inspected and >>> >>> modified >>> >>> through appserver tooling. >>> >>> >>> >>> >>> >> The problem is from UIInput.setValue() or UIInput.setSubmittedValue() >>> >> we >>> >> don't have access to ServletContext (the only way is through >>> >> FacesContext.getCurrentInstance().getExternalContext(), and we want to >>> >> avoid >>> >> the call to FacesContext.getCurrentInstance() ). >>> >> >>> >> Talking with Gerhard, the conclusion was a static var could do the >>> >> job. Is >>> >> just unrealistic assume someone has a production environment with some >>> >> applications with project stage "production" and others "development" >>> >> (note >>> >> shared variables are "shared" by all applications hosted in a web >>> >> server). >>> >> In the worst case, the applications will continue working. >>> >> >>> >> regards, >>> >> >>> >> Leonardo >>> >> >>> >> >>> >>> Regards, >>> >>> Jan-Kees >>> >>> >>> >>> >>> >>> 2010/5/19 Gerhard Petracek <gerhard.petra...@gmail.com> >>> >>> >>> >>>> we don't have to cache the faces-context. >>> >>>> we can use e.g. an interface with a static final field. >>> >>>> >>> >>>> usage (example): >>> >>>> if(Boolean.TRUE.equals(InternalProjectStage.IS_DEV_MODE)) >>> >>>> { >>> >>>> //... >>> >>>> } >>> >>>> >>> >>>> -> there is just one evaluation. >>> >>>> >>> >>>> regards, >>> >>>> gerhard >>> >>>> >>> >>>> http://www.irian.at >>> >>>> >>> >>>> Your JSF powerhouse - >>> >>>> JSF Consulting, Development and >>> >>>> Courses in English and German >>> >>>> >>> >>>> Professional Support for Apache MyFaces >>> >>>> >>> >>>> >>> >>>> 2010/5/19 Leonardo Uribe <lu4...@gmail.com> >>> >>>> >>> >>>> Hi >>> >>>>> >>> >>>>> The problem in this case is the only place we can store this >>> >>>>> information >>> >>>>> is the component instance itself. So, at least there is one lookup >>> >>>>> per >>> >>>>> component. >>> >>>>> >>> >>>>> If we try to cache facesContext, unfortunately there is not safe >>> >>>>> way to >>> >>>>> clean this reference (portlet case), so there is a risk of use old >>> >>>>> instances >>> >>>>> of this object in this case. >>> >>>>> >>> >>>>> regards, >>> >>>>> >>> >>>>> Leonardo Uribe >>> >>>>> >>> >>>>> 2010/5/19 Gerhard Petracek <gerhard.petra...@gmail.com> >>> >>>>> >>> >>>>> hi, >>> >>>>>> >>> >>>>>> as long as we don't want to change the project stage dynamically, >>> >>>>>> we >>> >>>>>> can just store e.g. a marker as static information. >>> >>>>>> >>> >>>>>> regards, >>> >>>>>> gerhard >>> >>>>>> >>> >>>>>> >>> >>>>>> http://www.irian.at >>> >>>>>> >>> >>>>>> Your JSF powerhouse - >>> >>>>>> JSF Consulting, Development and >>> >>>>>> Courses in English and German >>> >>>>>> >>> >>>>>> Professional Support for Apache MyFaces >>> >>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>>> 2010/5/19 Jakob Korherr <jakob.korh...@gmail.com> >>> >>>>>> >>> >>>>>> Hi Martin, >>> >>>>>>> >>> >>>>>>> Indeed, we have to call FacesContext.getCurrentInstance() >>> >>>>>>> everytime. >>> >>>>>>> >>> >>>>>>> So I guess it will be better to remove the code from UIInput! >>> >>>>>>> >>> >>>>>>> Regards, >>> >>>>>>> Jakob >>> >>>>>>> >>> >>>>>>> 2010/5/19 Martin Marinschek <mmarinsc...@apache.org> >>> >>>>>>> >>> >>>>>>> Hi Jakob, >>> >>>>>>>> >>> >>>>>>>> > The problem with this is that the code on UIInput checks the >>> >>>>>>>> ProjectStage >>> >>>>>>>> > everytime setSubmittedValue() or setValue() are called, which >>> >>>>>>>> > is >>> >>>>>>>> very often >>> >>>>>>>> > and could make MyFaces a bit slower, I guess. If we remove >>> >>>>>>>> > this >>> >>>>>>>> code on >>> >>>>>>>> > UIInput, the debug output will stay mostly the same except for >>> >>>>>>>> > the >>> >>>>>>>> call >>> >>>>>>>> > stack, because this will be gone. >>> >>>>>>>> > >>> >>>>>>>> > The question now is if we should leave it the way it currently >>> >>>>>>>> > is >>> >>>>>>>> (with the >>> >>>>>>>> > code on UIInput and the possibility to display the call stack) >>> >>>>>>>> > or >>> >>>>>>>> if we >>> >>>>>>>> > should remove the code from UIInput (which means no slowdown >>> >>>>>>>> > on >>> >>>>>>>> > setSubmittedValue() and setValue() but loosing the call >>> >>>>>>>> > stack). >>> >>>>>>>> What do you >>> >>>>>>>> > guys think? Any opinions/objections? >>> >>>>>>>> >>> >>>>>>>> for me it is a question how fast this getProjectStage() >>> >>>>>>>> derivation >>> >>>>>>>> is. >>> >>>>>>>> If that means to call FacesContext.getCurrentInstance() all the >>> >>>>>>>> time, >>> >>>>>>>> the impact is considerable (thread-local resolution). In this >>> >>>>>>>> case >>> >>>>>>>> it >>> >>>>>>>> might be better to not have this information... >>> >>>>>>>> >>> >>>>>>>> Martin >>> >>>>>>>> >>> >>>>>>>> > Regards, >>> >>>>>>>> > Jakob >>> >>>>>>>> > >>> >>>>>>>> > -- >>> >>>>>>>> > Jakob Korherr >>> >>>>>>>> > >>> >>>>>>>> > blog: http://www.jakobk.com >>> >>>>>>>> > twitter: http://twitter.com/jakobkorherr >>> >>>>>>>> > work: http://www.irian.at >>> >>>>>>>> > >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> >>> >>>>>>>> -- >>> >>>>>>>> >>> >>>>>>>> http://www.irian.at >>> >>>>>>>> >>> >>>>>>>> Your JSF powerhouse - >>> >>>>>>>> JSF Consulting, Development and >>> >>>>>>>> Courses in English and German >>> >>>>>>>> >>> >>>>>>>> Professional Support for Apache MyFaces >>> >>>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>> >>>>>>> -- >>> >>>>>>> Jakob Korherr >>> >>>>>>> >>> >>>>>>> blog: http://www.jakobk.com >>> >>>>>>> twitter: http://twitter.com/jakobkorherr >>> >>>>>>> work: http://www.irian.at >>> >>>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>> >>> >>>> >>> >>> >>> >> >>> > >>> > >>> > -- >>> > Jakob Korherr >>> > >>> > blog: http://www.jakobk.com >>> > twitter: http://twitter.com/jakobkorherr >>> > work: http://www.irian.at >>> > >>> >>> >>> -- >>> >>> http://www.irian.at >>> >>> Your JSF powerhouse - >>> JSF Consulting, Development and >>> Courses in English and German >>> >>> Professional Support for Apache MyFaces >> > > > > -- > Jakob Korherr > > blog: http://www.jakobk.com > twitter: http://twitter.com/jakobkorherr > work: http://www.irian.at > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces