2014-01-23 26 views
1

沒有人知道如何共享會話變量並從websphere門戶中的任何portlet中恢復,例如我在一個portlet中設置會話變量(對象),並且想要獲取該變量的值。我怎樣才能做到這一點?。在websphere門戶中共享會話變量

我使用WebSphere Portal 8,和我的IDE是RAD 8.5

問候

回答

1

如果您的portlet在同一Web應用程序部署,您可以使用與適用範圍PortletSession中:portletRequest.getSession ().setAttribute(「name」,「value」,PortletSession.APPLICATION_SCOPE)。

否則,您需要創建自己的共享服務來存儲變量。看起來這篇文章可以幫助您:http://www.ibm.com/developerworks/websphere/library/techarticles/0602_hepper/0602_hepper.html

+0

您好托馬斯,我已經看到了鏈接,但我有問題的版本的門戶網站,因爲有一些類不推薦使用門戶網站8.問候 –

0

如果您希望跨不在同一Web模塊(war文件)中的portlet共享對象/狀態,並且您在WebSphere Portal中,則可以使用WebSphere Application Server稱爲DynaCache的專有服務。它是成熟和常用的。您可以設置不僅跨Portlet共享的Map對象(實際上是同一個JVM中的任何應用程序代碼),還可以設置爲跨JVM共享對象(如在集羣中)。關鍵編程接口:DistributedMap。關於設置一個緩存實例,這裏有一個很好的blog post,這樣你的portlet就可以通過JNDI查看地圖,並且可以像其他任何其他Map<K,V>一樣獲取或放置它。

+0

嗨斯科特非常感謝你,這是非常有益的。 Regards –

+0

Scotth我有一個問題,如果我共享一個對象,所有用戶會話可以看到它會發生什麼?問候 –

+0

Dynacache只是一個大地圖。鑰匙將由您選擇。如果使用會話ID字符串作爲鍵或用戶名(跨所有具有相同ID的登錄名緩存),那麼該地圖將像「超級會話」一樣,並且數據在模塊或jvms中可見。 –