У меня есть сервер приложений Apache Tomcat, версия 8.5.30, и на нем настроено 2 веб-приложения.
Эти приложения имеют Spring Framework 5, и у каждого есть свой собственный ReloadableResourceBundleMessageSource, потому что я использую интернационализациюmessages (i18n).
Когда я запускаю Apache и загружаю один из сайтов, первый открытый сайт загружает свои сообщения в память, а второй открываемый сайт не загружает свои сообщения.Таким образом, это вызывает сообщение об исключении во втором приложении и выдает исключение, например:
Причина: org.springframework.context.NoSuchMessageException: не найдено сообщение под кодом 'menu.login' для локали 'en_US'.
Чтобы попытаться решить эту проблему, я попытался создать два разных источника сообщений, по одному для каждого приложения, но при загрузке сервера приложений было выдано другое исключение:
Вызвано: org.springframework.beans.factory.NoUniqueBeanDefinitionException: Не определен квалифицирующий компонент типа [org.springframework.context.MessageSource]: ожидается один соответствующий компонент, но найден 2: messageSourceA, messageSourceB.
Пример того, как я пытался сделать
AppA в ROOT.war (псевдоним 1)
@Bean
public MessageSource messageSourceA() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath*:messageA", "classpath*:enumaratorA");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
AppB в ROOT.war (псевдоним 2)
@Bean
public MessageSource messageSourceB() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath*:messageB", "classpath*:enumaratorB");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
Пожалуйста, не могли бы вы помочь мне решить эту проблему?Как я могу заставить Apache / Spring понять, что это два разных источника?Какие еще варианты можно сделать?
Заранее спасибо.