2016-10-05 9 views
3

私はポートレットの開発には新しく、ユーザーごとに環境設定を保存する方法を知っています。私は、WebSphere 8.5 Portal Server、Spring 4.3.2、およびRAD v9.5を使用しています。ユーザー設定を使用して保存する方法

@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")%>;"> 

私はこのように私のController.javaにデータを格納するためにPortletPreferencesを使用している時点では

いくつかの記事では、この方法は動作しますが、ユーザーの設定を保存する最もクリーンな方法ではありません。なぜなら、大量のユーザーがあれば、これは非常に遅くなるからです。

現在、私は、大量のユーザーでも設定を保存して取得するための迅速な方法を探しています。現実世界のベストプラクティスソリューションは何ですか?

答えて

1

これは、100kのユーザー範囲の一部であっても、これはパフォーマンス上の問題ではありませんでした。ポートレットのプリファレンスは、ポートレット固有のプリファレンスに使用する必要があります。複数のポートレットで共有する場合は、それらを格納する場所がLDAPなどのユーザー・ストアになります。 ldap portalを使用すると、あなたのためにキャッシュが処理されます。 Look asideデータベースをポータルの一部として使用して、データベース内にユーザ属性を格納することもでき、それらはPUMAのユーザオブジェクトの一部として提供されます。

ポートレットの設定では、毎回ポータル層に行く必要がないようにキャッシュすることをお勧めします。

最後に、ポートレット特有の設定、ポートレット設定への保存、ユーザー固有、ldapのようなユーザー・ストアへの配置、自分自身のデータベースを使用するポートレット・サービスのようなものなどを見てください。

関連する問題