#java #jsp #spring-mvc #websphere-portal
#java #jsp #spring-mvc #websphere-портал
Вопрос:
Я довольно новичок в разработке портлетов, и мне интересно, как сохранить настройки для каждого пользователя. Я использую WebSphere 8.5 Portal Server, Spring 4.3.2 и RAD версии 9.5.
На данный момент я использую PortletPreferences
для хранения данных в моем Controller.java
, как это:
@ActionMapping(params = "action=saveUserPref")
public void saveUserSettings(ActionRequest req, @RequestParam("radio") String color) throws ReadOnlyException, ValidatorException, IOException {
PortletPreferences pref = req.getPreferences();
pref.setValue(accountService.getUsername() "_fontcolor", color);
pref.store();
}
И чтобы получить настройки в моем .jsp
, как это:
<div style="color:<%=renderRequest.getPreferences().getValue(renderRequest.getPortletSession().getAttribute("username") "_fontcolor",
"black")%>;">
Я читал в некоторых сообщениях, что этот метод работает, но это не самый чистый способ сохранения пользовательских настроек, потому что, если у вас большое количество пользователей, это будет очень медленно.
Прямо сейчас я ищу быстрый способ сохранить и получить настройки даже при большом количестве пользователей. Каковы наилучшие практические решения в реальном мире?
Ответ №1:
Я никогда не видел, чтобы это было проблемой для производительности даже в некоторых пользовательских диапазонах 100 тыс. Настройки портлета следует использовать для настроек, специфичных для портлета, если они должны быть общими для более чем одного портлета, лучшее место для их хранения — в хранилище пользователей, например ldap. Если вы используете ldap portal, он позаботится о кешировании за вас. Вы также можете использовать базы данных look aside как часть портала и сохранять пользовательские атрибуты в БД, и они поступают как часть пользовательского объекта из PUMA.
С настройками портлета я бы рекомендовал кэшировать их, чтобы вам не приходилось каждый раз переходить на уровень портала.
В конце, однако, настройки, специфичные для портлета, сохранить в настройках портлета, специфичных для пользователя, поместить в хранилище пользователей, например ldap, посмотреть в сторону или что-то подобное, например, служба портлетов, которая использует свою собственную базу данных.