解決策
PortletSessionの値は、ポートレットおよびユーザー単位でスコープされるべきです。
例えば、 WebFormPortlet.javaの saveDatabase メソッドを見ると、Web Form ポートレットがどのようにデータを保存しているかがわかります。 この後、 ServiceImpl ファイル(ExpandoValueLocalServiceImpl.java、この場合)を参照すると、データベースに値を保存するために永続化クラスがどのように使用されるかがわかります。
final PortletSession psession = request.getPortletSession();
psession.setAttribute(key, value, PortletSession.APPLICATION_SCOPE);
// READ
psession.getAttribute(key, PortletSession.APPLICATION_SCOPE);
キーには LIFERAY_SHARED_ というプレフィックスを使用し、すべてのポートレット(セッションを共有するポートレットとしないポートレット)で変数が使用できるようにします。
ポータルからリソースを取得する必要がある場合は、もうPortletSessionではなく、HttpSessionを使用してください。