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
>>> > >>> > >
>>> > >>> >
>>> > >>>
>>> > >
>>> >
>>>
>>
>>
>>