liferay portal6.2中如何配置portlet会话对象生命周期?

How to configure the portlet session object lifecycle in liferay portal6.2?

我的要求是我需要在 portlet 会话中存储用户购物车对象。每当用户将项目添加到购物车时,用户购物车对象应该更新并再次保存到 portlet 会话中。每当用户注销/会话到期时,这些用户购物车对象的详细信息都应保存到数据库中。我能够将对象保存在 portlet 会话中,但是当用户注销/会话过期时,详细信息不会保存到数据库中。我使用 Hook 覆盖 "LogoutPreAction" class。但是在 运行 方法中我无法获取 PortletSession 对象。如何在"MyCustomLogoutPreAction"class的运行方法中获取portlet会话对象?

尝试 Servlet 会话销毁事件。 @see "servlet.session.destroy.events" 属性 在 portal.properties

    #
    # Servlet session destroy event
    #
    servlet.session.destroy.events=

如果您的业务数据必须在 UI 层会话的生命周期内存活,最好将它们与前端会话完全分离。毕竟,不能保证会调用会话销毁事件(例如,在应用服务器关闭甚至崩溃时)。因此,建议在购物车的每次更改时更新数据库,并仅使用用户标识符键入该数据库数据。

这巧妙地使您的业务层保持干净并独立于实际的前端。另外,您不依赖于不能保证永远触发的事件。