Hi

2012/11/30 Mark Struberg <[email protected]>:
>
>
> Well, then the problem is not the number of windows but the number of 
> sessions ;)
>

Ok, good to know that.

> In pure tomcat you can either restrict that or 'offload' them via a 
> configuration. There are SessionManagers which keep n Sessions in memory and 
> if this number gets exceeded the LRU ones will get persisted to the file 
> system. That way it's almost impossible to trash the Sessions in pure tomcat.
>
> I have no clue what GlassFish does to prevent this scenario, but this is for 
> sure not a MyFaces, nor a CDI, nor a CODI problem ;)
>

Yes, I agree with you that is not a problem in MyFaces Core or CODI.

But I have an "academic" doubt about CDI (in this case Weld). In theory,
to enable session failover with Openwebbeans you have to add a file in
src/main/resources called META-INF/openwebbeans/openwebbeans.properties
and put a filter, so when the session is restored from the filesystem,
it will be done correctly, and when the session is persisted, the window
contexts in memory are released.

    <filter>
        <filter-name>OpenWebBeansFailover</filter-name>
        
<filter-class>org.apache.webbeans.web.failover.FailOverFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenWebBeansFailover</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

This works just perfect, but does Weld requires something similar? Sorry, if
this question is trivial, obvious or off the topic.

regards,

Leonardo Uribe

> LieGrue,
> strub
>
>
>
>
>
>>________________________________
>> From: Andreas Kaiser <[email protected]>
>>To: MyFaces Discussion <[email protected]>
>>Sent: Friday, November 30, 2012 10:24 AM
>>Subject: Re: CODI: Exclude windowId from certain pages
>>
>>Hi
>>
>>thanks for all answers. I will try to reduce the number of windows per
>>session.
>>
>>Also i will try to change my stress test script to be a bit more gently to
>>my server ( clean login and logout )
>>
>>BTW. the number of ids is not 500*64 its NumberOfThreadsInJMeter *
>>LoopCount
>>
>>in my case 500 * 200 = 100000 ( * bytesPerHashMapEntry )
>>
>>The windows per session limitation will not work in this scenario because
>>each request gets a new session
>>
>>Regards
>>
>>
>>On Fri, Nov 30, 2012 at 8:26 AM, Leonardo Uribe <[email protected]> wrote:
>>
>>> Anyway, you can only solve the question trying to reduce the param and see
>>> what happens. 500*64 is a big number.
>>> On Nov 30, 2012 2:20 AM, "Mark Struberg" <[email protected]> wrote:
>>>
>>> > No Leo, cannot be a problem!
>>> >
>>> > As Gerhard already explained we only keep a configurable number of
>>> > 'windows' per Session. Once this limit is exceeded the LRU one will get
>>> > destroyed. It's really a non-issue. The problem Andreas faces must be
>>> > another one. Or it's a bug, but this is really well tested imo.
>>> >
>>> > LieGrue,
>>> > strub
>>> >
>>> >
>>> >
>>> >
>>> > ----- Original Message -----
>>> > > From: Leonardo Uribe <[email protected]>
>>> > > To: MyFaces Discussion <[email protected]>
>>> > > Cc:
>>> > > Sent: Friday, November 30, 2012 5:47 AM
>>> > > Subject: Re: CODI: Exclude windowId from certain pages
>>> > >
>>> > > Hi
>>> > >
>>> > > Are you invalidating the session (logout) in some point? Maybe that
>>> > could be
>>> > > related to the problem, because if you keep the session active and
>>> create
>>> > > hundreds of different windows, since the session is not released that
>>> > memory
>>> > > will not be restored and the stress testing will not be accurate (or
>>> > realistic).
>>> > >
>>> > > regards,
>>> > >
>>> > > Leonardo Uribe
>>> > >
>>> > > 2012/11/29 Gerhard Petracek <[email protected]>:
>>> > >>  hi andreas,
>>> > >>
>>> > >>  please have a look at WindowContextConfig - see e.g.
>>> > >>  #isUnknownWindowIdsAllowed and #getMaxWindowContextCount
>>> > >>  -> it shouldn't be an issue (since you can customize the default
>>> > > behaviour).
>>> > >>
>>> > >>  btw:
>>> > >>  we are doing a lot of such tests (without
>>> > windowId=automatedEntryPoint) and
>>> > >>  never saw an issue - but we don't use glassfish ;)
>>> > >>
>>> > >>  regards,
>>> > >>  gerhard
>>> > >>
>>> > >>  http://www.irian.at
>>> > >>
>>> > >>  Your JSF/JavaEE powerhouse -
>>> > >>  JavaEE Consulting, Development and
>>> > >>  Courses in English and German
>>> > >>
>>> > >>  Professional Support for Apache MyFaces
>>> > >>
>>> > >>
>>> > >>
>>> > >>  2012/11/29 Andreas Kaiser <[email protected]>
>>> > >>
>>> > >>>  Hi
>>> > >>>  thanks for the answer
>>> > >>>
>>> > >>>  I will have a look at this.
>>> > >>>  BTW. it seems that the the windowId is a potential security issue.
>>> > >>>
>>> > >>>  For instance call a side with an unknown windowId. CODI will
>>> generate
>>> > a
>>> > > new
>>> > >>>  valid one. Just change the generated one to a new invalid id. CODI
>>> > will
>>> > >>>  generate a new one again. Repeat this until you are out of ids or
>>> the
>>> > >>>  server is out of memory ;-)
>>> > >>>
>>> > >>>  This is whats happend in my application due to stress testing
>>> > >>>
>>> > >>>  Regards
>>> > >>>
>>> > >>>
>>> > >>>  On Thu, Nov 29, 2012 at 11:03 PM, Gerhard Petracek <
>>> > >>>  [email protected]> wrote:
>>> > >>>
>>> > >>>  > hi andreas,
>>> > >>>  >
>>> > >>>  > first of all: welcome @ myfaces!
>>> > >>>  >
>>> > >>>  > there are different approaches - e.g. you can use urls with
>>> > >>>  >   windowId=automatedEntryPoint
>>> > >>>  > (see the javadoc in WindowContextManager)
>>> > >>>  >
>>> > >>>  > regards,
>>> > >>>  > gerhard
>>> > >>>  >
>>> > >>>  > http://www.irian.at
>>> > >>>  >
>>> > >>>  > Your JSF/JavaEE powerhouse -
>>> > >>>  > JavaEE Consulting, Development and
>>> > >>>  > Courses in English and German
>>> > >>>  >
>>> > >>>  > Professional Support for Apache MyFaces
>>> > >>>  >
>>> > >>>  >
>>> > >>>  >
>>> > >>>  > 2012/11/29 Andreas Kaiser <[email protected]>
>>> > >>>  >
>>> > >>>  > > Hi everybody
>>> > >>>  > >
>>> > >>>  > > I have following setup :
>>> > >>>  > >
>>> > >>>  > > Glassfish 3.1.2.2
>>> > >>>  > > Weld
>>> > >>>  > > Java EE6 + JSF + CDI + JPA
>>> > >>>  > > CODI: 1.0.5
>>> > >>>  > >
>>> > >>>  > > My problem:
>>> > >>>  > >
>>> > >>>  > > We use and like the windowId Feature from CODI. But it causes
>>> > > some big
>>> > >>>  > > problems on some pages which are specially created for stress
>>> > > testing.
>>> > >>>  > >
>>> > >>>  > > These pages are accessed from 500+ clients generated from
>>> > > JMeter.
>>> > >>>  > > Every client acts as a own browser.
>>> > >>>  > >
>>> > >>>  > > This pages (RequestScoped) can be accessed without login.
>>> > > Therefore
>>> > >>>  CODI
>>> > >>>  > > generates a new windowId for every client.
>>> > >>>  > >
>>> > >>>  > > The problem is that the JMeter tests run multiple times. Due
>>> > > to this
>>> > >>>  the
>>> > >>>  > > Hashmap in JSFWindowContext.java consums a lot of memory
>>> > > until the
>>> > >>>  > > Glassfish has no space left which leads into a 100 % CPU
>>> > > usage because
>>> > >>>  > the
>>> > >>>  > > garbage collector tries to free a even the last few bytes.
>>> > >>>  > >
>>> > >>>  > > My question is
>>> > >>>  > > 1. Is it possible to create windowIds only a user is logged
>>> > > in
>>> > >>>  > > 2. Is there an option to change the default behavior
>>> > >>>  > > 3. Can i exclude some pages being handled by the codi
>>> > > JSFWindowManager
>>> > >>>  > >
>>> > >>>  > >
>>> > >>>  > >
>>> > >>>  > >
>>> > >>>  > > Regards
>>> > >>>  > >
>>> > >>>  >
>>> > >>>
>>> > >
>>> >
>>>
>>
>>
>>

Reply via email to