Я пытаюсь реализовать загрузку Resource Bundles для приложения JSF из БД по примеру: интернационализация в JSF с записями ResourceBundle, которые загружаются из базы данных
Для теста, который я кодировалgetItSomehow () так же, как создать HashMap и заполнить его ключом "hello_world" и значением "[" + locale + "]" + "hello world"
Пример отлично работает, когда я его разверну на Glassfish3.Но когда я использую WebSphere AS 7, страница jsf отображается правильно только в первый раз.Открывая страницу jsf в других браузерах (с другим выбранным языком), я всегда получаю ответ в локали первого запуска.
Во время отладки я обнаружил разницу в реализации ResourceBundle.java: Glassfish использует этот класс, предоставленный в rt.jar из JDK1.6;но WebSphere имеет этот класс внутри java.util.jar
ResourceBundle (из WebSphere), вызываемый из ApplicationResourceBundle.getResourceBundle (), вызывает handleGetBundle () и, наконец, вызывает my.i18n.DbResourceBundle $ DBControl.newBundle ().Вызванный второй (и далее) раз с другой локалью, он не вызывает моего переопределения, а просто возвращает тот же пакет, созданный для первой локали.
Вопрос: можно ли кодировать интернализуемое веб-приложение jsf, развернутое в WebSphere AS 7.0.07, не копаясь и не взламывая внутренние компоненты AS?
(среда: Windows XP, WebSphere AS 7.0.0.7, jdk1.6.0_24, jsf 2.1.4)