我對Flex不是很有經驗,但是因爲這看起來很有趣,而且我不喜歡看到問題沒有得到答案,所以我想我會對它有所暗示。據我所知,Flex會話(HttpFlexSession)和HttpSession是完全獨立的實體。這就是說你應該能夠在它們之間共享數據。
Steven Webster和Alistair McLeod撰寫的書「Developing Rich Clients with Macromedia Flex」中提供了非常相關的免費章節(Chapter 20: Flex Integration with J2EE)。
現在我會引用這個免費的章節!特別值得注意的是:
維護國家
理解到 最大的飛躍做出的是,不再有一個 需要HTTP會話狀態。儘管您在胖客戶端和 服務器之間的請求最終是通過HTTP進行的,但HTTP已經減少爲 傳輸技術,而不是 技術,我們需要將 與之集成。 J2EE開發人員通過在HTTP請求和 響應對象中放置參數 以及通過在HTTP會話中存儲對象來保持 狀態的概念,使得開發人員很舒服 。 ...
...的Flex其實是可以提供訪問 HTTP會話,並允許Flex的 客戶端處理HTTP會話 「只是另一個服務器上的對象。」 但是,根據我們的經驗,使用 HTTP會話應該是一個「難聞的氣味」 ,它標識重構 機會,將您的某些 應用程序狀態轉移到客戶端。
本章稍後將介紹如何爲Flex客戶端訪問配置會話對象。
獲得訪問J2EE會話
Flex的預配置默認的web.xml文件會話的servlet ,這使得 可用於訪問和 可用服務器端Java 對象修改一個 應用程序的J2EE會話。通過將 之一以下的services.mxml在 我們的服務定位遠程對象定義, 我們提供給我們的應用程序 服務,可以得到與在J2EE會話對象集 ,以及刪除從 對象會議:
<mx:Remote object source="servlet" id="sessionObject" />
<mx:Remote object source="@ContextRoot()" id="sessionObject"/>
與任何其他< MX:RemoteObject的> 標籤,會話服務可以使用 結果和故障事件處理程序 處理請求以從 獲取會話中的項目。 web.xml描述符 將會話名稱 servlet定義爲servlet;因此,我們使用 的以下示例之一與J2EE會話中工作 :
sessionObject.session("set","customerID", 700);
sessionObject.session("get", "customerID");
sessionObject.session("remove", "customerID");
這三個例子說明如何 會話服務是用來獲取, 集或刪除項目來自Flex客戶端的J2EE 會話。
所以它似乎是,雖然你可撓曲和後端Java之間的共享會話數據,但是,該建議似乎是,這是一個反模式。
關於安全措施,如果您使用Servlet過濾器來實現IP限制,那麼您的安全性可以應用於您的Web應用程序中的所有資源(無論它是來自Struts還是Flex源)。
對不起,我很欣賞你在答案中所做的工作,但不幸的是,這很不重要。我的問題根本不在於Flex(客戶端),而是關於Struts中(服務器端)需要做什麼。另外我不使用他們在文章中提到的服務器組件。我明確尋找一個基於Struts的解決方案。 – 2010-04-14 15:21:50