Если вы уже используете Servlet 3.0, вы можете использовать ServletContext#getClassLoader()
для получения собственного загрузчика классов контекста сервлета:
ServletContext otherContext = servletContext.getContext("/other");
ClassLoader otherClassLoader = otherContext.getClassLoader();
// ...
(если выбрасываетсяисключение безопасности, измените файл политики соответствующим образом)
Затем вы можете передать этот загрузчик классов, например, ResourceBundle#getBundle()
:
ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, otherClassLoader);
// ...
Если это невозможно по различным причинам(например, пока не используете Servlet 3.0 или не хотите возиться с файлами политики (очень разумно ...) и т. д.), тогда лучше всего предоставить каждому веб-приложению свой собственный ServletContextListener
, который загружаетнужный пакет и сохраняет его как атрибут ServletContext
во время метода contextInitialized()
.Таким образом, вы можете просто получить его как атрибут обычным способом.