tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Boynes <>
Subject [taglibs] Move to pre-req Java 1.6 for Locale services?
Date Sun, 02 Jan 2011 23:27:06 GMT
In Java6 support was added for LocaleServiceProviders that extend the Locales supported by
the java.text formatters. This causes #46052 as getAvailableLocales() now needs to scan the
entire classpath rather than just return the Locales built in to the JRE. It also means we
cannot continue to cache the returned set of Locales if the taglib is shared between different
applications (for example, in a JavaEE6 environment where the taglibs are supplied by the
container) as it will now vary with context ClassLoader.

The java.text getInstance() methods work around this by not scanning the classpath if a match
is found with one of the built-in providers. We can use this method directly if the context
only requires a single Locale (either because we are using application-specified Locales,
or because the request only specified a single one, or because multiple ones in the request
match the resolution order (e.g. Firefox's "en-us,en"). 

However, where a request specifies multiple Locales with different prefixes, we still need
to perform the matching ourselves as the JRE will *always* match something (at least the ROOT
Locale) but we cannot tell which. If we stick to using the 1.5 level API we will trigger the
uncacheable classpath scan on 1.6 level VMs; however, 1.6 provides the ServiceLoader#loadInstalled()
API which can be used to determine the locales installed in the JRE and hence avoid the application
classpath scan for JRE supplied locales (which are likely to be the most commonly used).

As most users are likely to be running on 1.6 and we've not actually released a version needing
1.5 and Sun's 1.5 is generally end-of-lifed, I'd like to propose solving this with the 1.6
APIs and making it a pre-requisite. Any issue with this?

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message