栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Liferay 7共享的会话属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Liferay 7共享的会话属性

凯尔·斯蒂曼(Kyle
Stiemann)最近写了一篇不错的文章,介绍如何在Portlet中使用会话。TL;
DR:您正在使用带有属性前缀为的HttpSession

"LIFERAY_SHARED_"
,但应使用Portlet会话:这是Liferay管理的,HttpSession可能是“模拟的”,例如,它可能不是tomcat管理的对象。


引用他文章中的一种选择:

使用Liferay session.shared.attributes前缀(例如LIFERAY_SHARED_)可在不同应用程序/
WAR中的portlet之间共享一个或多个会话属性。

Liferay根据某些前缀值向所有portlet公开某些会话属性。尽管可以通过portal-
ext.properties配置这些前缀,但我建议使用默认前缀之一:LIFERAY_SHARED_。

例如:

// Portlet AportletRequest.getPortletSession(true)    .setAttribute("LIFERAY_SHARED_" + CONSTANTS.ATTR_NAME, "value",       PortletSession.APPLICATION_SCOPE);// Portlet B (in a different WAR)String attrValue = portletRequest.getPortletSession(true)    .getAttribute("LIFERAY_SHARED_" + CONSTANTS.ATTR_NAME,       PortletSession.APPLICATION_SCOPE);

优点:

  • 仅将必要的属性公开给其他Portlet(而不是公开整个会话)。

缺点:

  • 将会话属性公开给所有portlet。
  • 紧密耦合,而不指示其他portlet可能正在使用此数据。
  • 共享会话数据的非标准方法。

注意强烈建议仅使用基本类型作为会话属性。消除了对自定义序列化和类加载问题的需求。另请注意,

getPortletSession
此处需要带有额外范围参数的变体。

但是
,尽管从技术上讲,这为您的问题提供了答案,但是您还想阅读“会话存储是邪恶的”。

TL; DR:请勿使用上述技术。 而是消除会话的使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号