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中国
相关推荐
-
避免PortletPreference性能干扰的原因
新到portlet团队的应用程序开发人员对各种可用的新概念非常兴奋,因为这样就可以使开发过程变得容易些。
-
尊重servlet API 高效开发portlet
即使是经验软件开发人员跳转到JSR-286 portlet开发时也会心乱如麻,portlet和servlet有什么不同?
-
Portlet开发技能使Java专业人才需求巨增
Portlet机制越来越流行,越来越多的Java开发人员要求学习Portal API,那么它与servlet有什么异同?
-
整合WebSphere Portal 7和Spring 3.0 Portlet MVC(下)
下面的步骤描述如何安装Spring 3 Portlet MVC的应用程序。如果你已经知道如何部署应用程序,请随时跳过此章节。