Как использовать и хранить пользовательские настройки

#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, посмотреть в сторону или что-то подобное, например, служба портлетов, которая использует свою собственную базу данных.