Han,
Thanks for your cue.
After more than three hours research and test, I haven't resolve the problem yet. If
my understand is right, what you
suggested is to have the following code frame in the JSP page:
<fmt:bundle basename="org.apache.taglibs.standard.examples.i18n.Resources"> <---- I
had this line at the very
begining of the page
<fmt:message>
greetingMorning
</fmt:message>
</fmt:bundle> <----- at the bottom of the page
The problem doesn't go away with this change.
In regarding of the number of resource files, the memory usage is around 70 m after
the server is up if three files are
there; compare to 20m if only two files. About 450 items are in each file.
I believe we had discussed the selection of two resource implementation before. The
reason I don't use the
ListResourceBundle is that a Java code change is needed, if messages are added (in the
presentation lay).
It will be greatly appreciated if you can elaborate the usage of two tags: setBundle
and bundle to resolve the problem.
Thanks,
Vernon
7/29/2002 6:30:44 PM, Jan Luehe <[EMAIL PROTECTED]> wrote:
>Vernon,
>
>you should be able to avoid unnecessary loading of resource bundles by
>using the <fmt:setBundle> and <fmt:bundle> tags.
>
>If you use <fmt:setBundle> at the beginning of your page, it will
>establish a localization context and store the appropriate resource
>bundle in it. Any subsequent <fmt:message> actions will leverage this
>resource bundle, instead of loading their own.
>
>Alternatively, you may encapsulate your <fmt:message> actions in a
><fmt:bundle>, in which case the <fmt:message> actions will use the
>resource bundle of the localization context established by the
>enclosing <fmt:bundle> action.
>
>Unless I'm mistaken, this should result in loading a *single* resource
>bundle from the 3 resource bundles ("default", "en", and "zh") you
>configured with your application.
>
>Also, have you thought of providing your resource bundles as instances
>of java.util.ListResourceBundle as opposed to property files? I've
>attached org.apache.taglibs.standard.examples.i18n.Resources_de, which
>is used by standard-examples.war. Every call to
>ResourceBundle.getBundle() requesting this resource bundle will still
>create a new instance of this class, but this should be cheaper than
>parsing a properties file. Also note that the resource map
>("contents") is declared as a class variable, so the runtime won't
>create a copy of it for every instance generated.
>
>
>Jan
>
>
>
>> Vernon Wu wrote:
>> >
>> > Peter,
>> >
>> > Thanks for your suggestion.
>> >
>> > Can you clarify the statement: "the data in the resource files are static"?
>> >
>> > In regarding of the five options you mentioned:
>> > >1. use the cache tag, which uses fmt tag
>> > >2. write a custom tag which caches it as someone else mentioned
>> >
>> > The caching mechanism only works when at least portion of data has be
>retrieved early.
>> > In my case, only a small among data, if there is any, has be retrieved
>before the page from the resource file. So these
>> > two approaches might not solve the problem
>> >
>>
>> hmm, if I am reading you correctly, from request to request, the cached
>> data from the resouce files may be limited. Caching wouldn't really
>> help, unless it doesn't expire any loaded data. If that is the case, you
>> might be better off loading all the stuff statically when tomcat starts
>> up and register file events on the resouce files to get dynamic updates.
>>
>> > >3. write a custom tag that extends the fmt tag
>> >
>> > What is the goal of this extension? Is it to refine the fmt tag implemention
>so that it will not eat up the much memory? Or
>> > to have the caching mechanism on?
>>
>> You have several different ways of doing this right. If the default
>> properties/resourcebundle class is too slow, you could write a custom
>> bean that takes advantage of nbio to improve the performance.
>>
>> >
>> > >4. patch fmt tag to cache it and submit the patch to shawn
>> >
>> > I would like to do that once I am free from current project.
>> >
>> > >5. you can write a custom extension to the resource bundle that does the
>> > >caching. that will allow you to use fmt tag as is and have your resource
>> > >extension do the caching
>> >
>> > For a set of large size resource files, this approache also comsumes a lot
>of memory and it will hold the memory during
>> > the life time of the application.
>> >
>> > Please point out if I am in any above statements.
>> >
>> > BTW, the reason of more than 200 items in the resource files is man sets of
>check boxes and pull down lists in the
>> > page. Is any way I can cut short the items in resource file?
>>
>> Another option is you can break your resource files into smaller chunks
>> based on most-to-least used. The nvpair used 80% of the time can be
>> cached and loaded at startup. you could then write a custom tag that
>> first looks at the cache before getting it from the appropriate resource
>> file.
>>
>> I hope that helps.
>>
>> peter
>>
>> --
>> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>
>
>package org.apache.taglibs.standard.examples.i18n;
>
>import java.util.*;
>
>public class Resources_de extends ListResourceBundle {
> private static Object[][] contents;
>
> static {
> contents = new Object[][] {
> { "greetingMorning", "Guten Morgen!" },
> { "greetingEvening", "Guten Abend!" },
> { "serverInfo", "Name/Version des Servlet Containers: {0}, "
> + "Java Version: {1}" },
> { "currentTime", "Heutiges Datum und Uhrzeit: {0}" },
> { "com.acme.labels.cancel", "Abbrechen" },
> { "java.lang.ArithmeticException", "/ durch 0" }
> };
> }
>
> public Object[][] getContents() {
> return contents;
> }
>}
>
>
>--
>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>