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 <[email protected]> > 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 <[email protected]> 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 <[email protected]> > > > >> Hi > >> > >> 2010/5/19 Jan-Kees van Andel <[email protected]> > >> > >> 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 <[email protected]> > >>> > >>>> 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 <[email protected]> > >>>> > >>>> 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 <[email protected]> > >>>>> > >>>>> 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 <[email protected]> > >>>>>> > >>>>>> 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 <[email protected]> > >>>>>>> > >>>>>>> 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 >
