2016-10-05 2 views
3

Я довольно новичок в разработке портлета, и мне интересно, как сохранить настройки для каждого пользователя. Я использую сервер WebSphere 8.5 Portal Server, Spring 4.3.2 и RAD v9.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, вы будете заботиться о кешировании для вас. Вы также можете использовать внешние блоки данных в качестве части портала и хранить пользовательские атрибуты в db, и они входят как часть пользовательского объекта из PUMA.

С настройками портлета я бы рекомендовал кэшировать их, чтобы каждый раз вам не приходилось переходить к портальному уровню.

В конце концов, предпочтения, характерные для портлета, сохраняются в настройках портлета, специфичных для пользователя, помещаются в хранилище пользователей, например ldap, в сторону или что-то подобное, например, служба портлета, которая использует свою собственную базу данных.