У меня есть несколько классов Singleton в приложении Liferay, которые содержат несколько параметров конфигурации и ServiceLocator с экземплярами WebServices, которые мне нужно использовать.Класс Singleton для совместного использования несколькими портлетами
Я поместил эти классы в банку, которая объявлена как зависимость от всех моих портлетов.
Дело в том, что для инициализации в тезисовских одноэлементных классах я выделил несколько строк журнала, и когда я развертываю свои портлеты, я вижу эти строки несколько раз, один раз для каждого портлета, поскольку каждый портлет имеет свой собственный контекст класса.
Для класса AppConfig это может быть не так уж и важно, но мой ServiceLocator действительно содержит кучу ссылок, которые занимают хорошую память.
Есть ли способ, которым я могу помещать эти ссылки Singleton в какой-то общий контекст в моем Liferay Portal?
Имеет ли каждый портлет свой экземпляр класса загрузчика? – Alexander
Да, они в разном войнах – MichelReap
В этом проблема! Обычно, когда мне приходилось достигать чего-то подобного, мне пришлось помещать JAR, содержащий классы Singleton, в библиотеку загрузчика класса _common_ (In Tomcat: '/common/lib' или что-то в этом роде) вместо того, чтобы упаковывать его в каждую WAR. Проблема в том, что вам также придется поместить все зависимые библиотеки в этот общий каталог lib. Не знаю, как это сделать в Лиферу. Для tomcat см. Эту тему: http://stackoverflow.com/questions/267953/does-tomcat-load-the-same-library-file-into-memory-twice-if-they-are-in-two-web –
Alexander