高效使用PortletSession小技巧

日期: 2013-08-14 作者:Cameron McKenzie翻译:蒋红冰 来源:TechTarget中国 英文

PortletSession有一个有趣的方面,就是在默认的情况下,它的数据实际上是存储的PortletSession中的,而且是本地的,只能访问portlet创建的实例。默认情况下,通过一个portlet实例存储在PortletSession的数据,不能共享给同一门户页面上其它的portlet。如果在同一个门户页面上有四个portlet,如果它们都使用PortletSession对象,那么每一个都将有一个独立的、不可共享的PortletSession命名空间。即使在同一个门户页面有两个相同的portlet实例,那么每一个也将有它自己的、不可共享的PortletSession命名空间。

Servlet API的关系

注意,我们强调每个portlet实例将有自己的PortletSession命名空间,而不是说每个portlet将拥有自己的PortletSession。在幕后,HttpSession的PortletSession piggypbacks来自于Servlet和JSP API。因此,在同一个WAR文件中打包的portlet将会共享一个基本的HttpSession,而其它却不会。

使用getAttribute(String)方法,信息从PortletSession中退出。使用setAttribute(String, Object) 方法,对象可以进入PortletSession中。把对象放到session中的名称必须与把对象拿出的名称一致。拼写错误或不同的字母组合都将会导致返回的对象为空。要一直尽量避免nullpointerexception。

避免会话膨胀

PortletSession还包含一个方法称作removeAttribute(String)。如果在PortletSession你不在需要对一个对象进行存储,那么这个对象需要从会话中移除,从而释放甚至服务器资源。

滥用会话数据是门户服务器或Java EE服务器将会遇到的最重大的性能瓶颈之一。从PortletSession移除不必要的对象,并避免所谓的会话膨胀,这将有助于在运行时避免性能问题。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

翻译

蒋红冰
蒋红冰

TechTarget云计算主编,主要负责云计算和虚拟化网站的内容建设。长期专注于IT前沿技术,对云计算、虚拟化、人工智能、区块链等技术都有了解;对行业趋势、市场动态有一定的洞察。

相关推荐