У нас есть веб-приложение, которое включает создание некоторых тяжелых служебных объектов (с точки зрения производительности памяти). Его может использоваться на любом уровне приложения . Эти служебные объекты являются специфическими для пользователя. Поэтому в идеале должно происходить создание этих объектов, когда пользователь входит в систему, кэширование их «где-то» и их повторное использование там, где это необходимо.
доступные опции сейчас - это Сессия, Приложение. Но они доступны не для всех уровней. Один из способов - передать их следующим уровням. Но это будет нарушать подход разделения интересов , и другие уровни должны будут знать о веб-уровне.
Другой подход - использовать статический служебный класс для кэширования этих объектов. Что-то вроде
MyUtilObject myObject = MyUtilCache.getMyUtilObject(userName);
Внутренне, подкрепленный чем-то вроде HashMap (и, возможно, мягкой ссылкой). Эти объекты будут очищены при выходе пользователя из системы или истечении сеанса.
Вот что мы используем
JBoss, Struts1.2, Spring. Все ярусы включены на одном компьютере (за один раз).
Пожалуйста, поделитесь своими мыслями / подходами по этому поводу.