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

-- 
View this message in context: 
http://www.nabble.com/Page-pool-hard-limit-and-page-instance-usage-tp19217773p19570234.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