Good point.

Now I'm going to read some documentation ;)

 -99


Ulrich Stärk wrote:
> 
> Yes it can, but CollectionFactory is internal API (whereas
> CaseInsensitiveMap is not) and I didn't 
> want to rely on it.
> 
> Uli
> 
> 9902468 schrieb:
>> Thanks!
>> 
>> Obviously I should read more than code :)
>> 
>> btw, case insensitive map can be obtained by calling
>> org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap();
>> 
>>  - 99
>> 
>> 
>> Ulrich Stärk wrote:
>>> You don't have to write your own ServletContextSymbolProvider, it
>>> already
>>> comes shipped with 
>>> Tapestry. See here 
>>> http://tapestry.apache.org/tapestry5/apidocs/index.html?org/apache/tapestry5/ioc/services/SymbolProvider.html
>>> You just have to configure it.
>>>
>>> Uli
>>>
>>> 9902468 schrieb:
>>>> Yep, just read through your discussion:
>>>>
>>>> http://www.nabble.com/forum/ViewPost.jtp?post=19547763&framed=y&skin=302
>>>>
>>>> and that would be the intelligent way of doing it :)
>>>>
>>>> I'll code symbol provider when I have time. Hopefully these providers
>>>> can
>>>> be
>>>> included in T5 distribution, as these are highly reusable and add only
>>>> little to none "weight" to the distribution.
>>>>
>>>>  - 99
>>>>
>>>>
>>>> Ulrich Stärk wrote:
>>>>> Why not instantiate a ServletContextSymbolProvider (the ServletContext
>>>>> is
>>>>> available from the 
>>>>> ApplicationGlobals service) and contribute it to the SymbolProvider
>>>>> before
>>>>> ApplicationDefaults and 
>>>>> FactoryDefaults. That way you can directly override
>>>>> tapestry.page-pool.hard-limit and automatically 
>>>>> have all other init parameters as symbols, too.
>>>>>
>>>>> Uli
>>>>>
>>>>> 9902468 schrieb:
>>>>>> I always keep nabble open when I'm at work :)
>>>>>>
>>>>>> These parameters can be transferred to web.xml, so that recompile is
>>>>>> not
>>>>>> needed when changing these parameters:
>>>>>>
>>>>>> public static void
>>>>>> contributeApplicationDefaults(MappedConfiguration<String,
>>>>>> String> configuration, ApplicationGlobals globals) {
>>>>>>
>>>>>>     configuration.add("tapestry.page-pool.hard-limit",
>>>>>> globals.getServletContext().getInitParameter("page_hard_limit"));
>>>>>>
>>>>>> }
>>>>>>
>>>>>> and in web.xml
>>>>>>
>>>>>> <web-app>
>>>>>>     <display-name>Some Tapestry 5 Application</display-name>
>>>>>>     <context-param>
>>>>>>         <!-- The only significant configuration for Tapestry 5, this
>>>>>> informs
>>>>>> Tapestry of where to look for pages, components and mixins. -->
>>>>>>         <param-name>tapestry.app-package</param-name>
>>>>>>         <param-value>fi.hanken.resbuilder.tapestry5</param-value>
>>>>>>     </context-param>
>>>>>>     <context-param>
>>>>>>         <param-name>page_hard_limit</param-name>
>>>>>>         <param-value>60</param-value>
>>>>>>     </context-param>
>>>>>>
>>>>>> This can be used through out every single service and page and
>>>>>> component.
>>>>>> To
>>>>>> access this in a page or component use:
>>>>>>
>>>>>> @Property @Inject @Value("${page_hard_limit}")
>>>>>> private String pageHardLimit;
>>>>>>
>>>>>> Injection can be used in service constructor also (I think) or by
>>>>>> using
>>>>>> buildSomeService method instead of the usual binder.bind
>>>>>>
>>>>>> Of course T5 makes it easy to read these from a file or database or
>>>>>> from
>>>>>> what not, but I have noticed that many admins accept editing web.xml
>>>>>> and
>>>>>> restarting the app ok.
>>>>>>
>>>>>> Hopefully this helps. (And makes it easier to say to admins that just
>>>>>> configure the app according to the load they are experiencing.)
>>>>>>
>>>>>> -99
>>>>>>
>>>>>>
>>>>>> nille hammer wrote:
>>>>>>> Man that was a quick answer! Thanks for that. I am aware of this
>>>>>>> options
>>>>>>> in the configuration. I had not tuned them before, because load is
>>>>>>> not
>>>>>>> my problem. Anyway I have tuned them now and am currently waiting
>>>>>>> for
>>>>>>> the admistrator to deploy the newest war.
>>>>>>>
>>>>>>> According to acces-logs I was the only user accessing the page. So
>>>>>>> as
>>>>>>> far as I understand the mechanism only one instance of index should
>>>>>>> have
>>>>>>> been created and not 20. I think it is an issue with configuration
>>>>>>> in
>>>>>>> production environment. But I have no idea where to take a closer
>>>>>>> look
>>>>>>> (i.e. where to build in log-messages, which of Tomcat's
>>>>>>> configuration
>>>>>>> options to check etc.).
>>>>>>>
>>>>>>> So suggestions are still more than welcome.
>>>>>>>
>>>>>>> Nillehammer
>>>>>>>
>>>>>>> 9902468 schrieb:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Eventually we had to add these to appmodule:
>>>>>>>>
>>>>>>>>         configuration.add("tapestry.page-pool.hard-limit", "60");
>>>>>>>>         configuration.add("tapestry.page-pool.soft-limit", "20");
>>>>>>>>         configuration.add("tapestry.page-pool.soft-wait", "20 ms");
>>>>>>>>
>>>>>>>> as instructed here:
>>>>>>>> http://tapestry.apache.org/tapestry5/guide/conf.html
>>>>>>>>
>>>>>>>> This solved our problems, and you can go up as long as your server
>>>>>>>> has
>>>>>>>> memory. Our problems were only in production, as development stress
>>>>>>>> just
>>>>>>>> isn't enough. (This is why one really should do load testing with
>>>>>>>> jmeter
>>>>>>>> or
>>>>>>>> similar tool.)
>>>>>>>>
>>>>>>>> The defaults could be a bit more? Or considerably less, so that the
>>>>>>>> developer would hit these walls during development and understands
>>>>>>>> to
>>>>>>>> load
>>>>>>>> test / tune the parameters.
>>>>>>>>
>>>>>>>>  - 99
>>>>>>>>
>>>>>>>>
>>>>>>>> nille hammer wrote:
>>>>>>>>> Hi list,
>>>>>>>>>
>>>>>>>>> I am also facing the problem that 9902468 had. I have -according
>>>>>>>>> to
>>>>>>>>> Howard's suggestion- replaced every pageLink with a customPageLink
>>>>>>>>> to
>>>>>>>>> prevent targeted pages from being created unecessarily. The
>>>>>>>>> problem
>>>>>>>>> persists. Trying to load the index-Page of my application with a
>>>>>>>>> browser
>>>>>>>>> I have to wait about two minutes before I get an empty page. In
>>>>>>>>> the
>>>>>>>>> app's log the following Exception appears:
>>>>>>>>>
>>>>>>>>> java.lang.RuntimeException: The page pool for page 'Index' (in
>>>>>>>>> locale
>>>>>>>>> de) has been exausted: there are 20 instances currently being used
>>>>>>>>> and
>>>>>>>>> no more can be created. Try increasing the hard limit (symbol
>>>>>>>>> tapestry.page-pool.hard-limit) to allow additional instances to be
>>>>>>>>> created, or increasing the soft wait (symbol
>>>>>>>>> tapestry.page-pool.soft-wait) to trade away some throughput for
>>>>>>>>> more
>>>>>>>>> efficient use of page instances.
>>>>>>>>>         at
>>>>>>>>> org.apache.tapestry5.internal.services.PagePoolCache.checkout(PagePoolCache.java:199)
>>>>>>>>>         at
>>>>>>>>> org.apache.tapestry5.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:107)
>>>>>>>>>         at
>>>>>>>>> $PagePool_11c76f8cf9a.checkout($PagePool_11c76f8cf9a.java)
>>>>>>>>>         at
>>>>>>>>> org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:43)
>>>>>>>>>         at
>>>>>>>>> $RequestPageCache_11c76f8cf99.get($RequestPageCache_11c76f8cf99.java)
>>>>>>>>>         at
>>>>>>>>> $RequestPageCache_11c76f8cf91.get($RequestPageCache_11c76f8cf91.java)
>>>>>>>>> ...
>>>>>>>>>
>>>>>>>>> In development and in production environment I use Java 6 and
>>>>>>>>> Tomcat
>>>>>>>>> 6.
>>>>>>>>> Tapestry is 5.0.14. The strange thing is that I am only seeing
>>>>>>>>> this
>>>>>>>>> in
>>>>>>>>> production environment.
>>>>>>>>>
>>>>>>>>> Has anyone a suggestion how to track this down? I am pretty stuck
>>>>>>>>> with
>>>>>>>>> this.
>>>>>>>>>
>>>>>>>>> Thanks in advance, nillehammer
>>>>>>>>>
>>>>>>>>> Howard Lewis Ship wrote
>>>>>>>>>> Tapestry is obtaining page instances to see if there is an
>>>>>>>>>> activation
>>>>>>>>>> context for the page.
>>>>>>>>>>
>>>>>>>>>> I expect to optimize this in the future, to check to see if the
>>>>>>>>>> page
>>>>>>>>>> has an event handler for the passivate event.
>>>>>>>>>>
>>>>>>>>>> In the meantime, you could build your own PageLink component that
>>>>>>>>>> generates the link by invoking
>>>>>>>>>> ComponentResources.createPageLink("pagename", true) ... that will
>>>>>>>>>> tell
>>>>>>>>>> Tapestry to generate a link to the page with no activation
>>>>>>>>>> context,
>>>>>>>>>> and the page will NOT be queried for its context, and therefore,
>>>>>>>>>> won't
>>>>>>>>>> need to be attached to the current request.
>>>>>>>>>>
>>>>>>>>>> On Fri, Aug 29, 2008 at 3:58 AM, 9902468
>>>>>>>>>> <[EMAIL PROTECTED]>
>>>>>>>>>> wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> we are experiencing strange hard pool limit reached exceptions.
>>>>>>>>>>> (For
>>>>>>>>>>> the
>>>>>>>>>>> user count that we have.) After debugging a little, it seems
>>>>>>>>>>> that
>>>>>>>>>>> our
>>>>>>>>>>> left
>>>>>>>>>>> menu component, which is full of page links, instantiates not
>>>>>>>>>>> only
>>>>>>>>>>> the
>>>>>>>>>>> page
>>>>>>>>>>> that we are at, but also the ones that are referenced in page
>>>>>>>>>>> link.
>>>>>>>>>>>
>>>>>>>>>>> This can be seen also in that exception page is shown, if one of
>>>>>>>>>>> the
>>>>>>>>>>> pages
>>>>>>>>>>> that are referenced in page links have an error.
>>>>>>>>>>>
>>>>>>>>>>> Is this correct behavior? And should we really use common a
>>>>>>>>>>> href=
>>>>>>>>>>> tags
>>>>>>>>>>> to
>>>>>>>>>>> avoid this? Further more, is it possible to create infinite
>>>>>>>>>>> loop,
>>>>>>>>>>> when
>>>>>>>>>>> page
>>>>>>>>>>> a has page link to page b, which has page link to page a?
>>>>>>>>>>>
>>>>>>>>>>>  - 99
>>>>>>>>>>> --
>>>>>>>>>>> View this message in context:
>>>>>>>>>>> http://www.nabble.com/Page-pool-hard-limit-and-page-instance-usage-tp19217773p19217773.html
>>>>>>>>>>> Sent from the Tapestry - User mailing list archive at
>>>>>>>>>>> Nabble.com.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>
>>>>>>>
>>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Page-pool-hard-limit-and-page-instance-usage-tp19217773p19570378.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to