日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
HttpSession方法在FlexRemoteObject中的使用

本文和大家重點討論一下Flex Remote Object中直接使用HttpSession的方法,在面向服務(wù)的架構(gòu)中(Service Oriented Architecture),我們可以用Remote Object來作為Service Facade,利用應(yīng)用服務(wù)器提供的persistent service來儲存狀態(tài)信息。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站設(shè)計、靖邊網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、靖邊網(wǎng)絡(luò)營銷、靖邊企業(yè)策劃、靖邊品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供靖邊建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

Flex Remote Object中直接使用HttpSession的方法

問題的背景

Flex Remote Object可以是POJO,JavaBean或是EJB。在面向服務(wù)的架構(gòu)中(Service Oriented Architecture),我們可以用Remote Object來作為Service Facade,利用應(yīng)用服務(wù)器提供的persistent service來儲存狀態(tài)信息。

Flex既可以提供stateful或stateless的remote object, 另外還有session servlet讓mxml獲取/和儲存session中的內(nèi)容。這一切聽上去都很***,但是有一個問題,F(xiàn)lex Remote Object本身是無法獲得任何有關(guān)Running Context的信息,也就是說,你無法從你的 Remote Object 中獲得 HttpSession, HttpRequest 和 ServletContext。 所謂的 Flex Session servlet只是讓MXML獲得session的內(nèi)容,而不是直接讓Remote Object獲得session。

Remote Object為什么需要獲得HttpRequest, HttpSession?
既然Flex提供了stateful的remote object為什么還要讓remote object獲得Running Context呢?問題在于Flex中的stateful是基于應(yīng)用服務(wù)器的http session,而且你無法控制AMFGateway建立remote object的過程。打個簡單的比方,我們知道一般的應(yīng)用服務(wù)器中,session的時限只有20分鐘,而在很多系統(tǒng)的登陸過程中卻有選擇保持登陸幾個月的選項。

其具體實現(xiàn)上就是利用cookie來儲存id和password hash,通過控制cookie的存活時間來實現(xiàn)的。而在服務(wù)器端,一旦session過期了,則可以從cookie中獲得id和password hash重新登陸一遍,從而達到自動認(rèn)證用戶的目的。

如果你的Flex Remote Object無法獲得 HttpServletRequest, HttpSession,你就無法實現(xiàn)上述的情況。另外,對于小型的應(yīng)用來說,直接在Remote object中獲得servlet context并利用它來儲存/獲得共享的資源,可以大大降低開發(fā)的復(fù)雜程度。

解決方案

要讓Flex Remote Object獲得HttpSession,HttpRequest和ServletContext并不是一件容易的事情。這里提供了我的一種方法,供大家參考。希望能拋磚引玉,讓大家提出更好,更有效的方案。
這個方法的基本思路是利用JAVA提供的 ThreadLocal Object。當(dāng)服務(wù)器接收到一個HTTP請求后,這個請求的整個處理過程是運行在同一個線程中的。
每個HTTP請求的處理會都運行在各自獨立的線程中。而在Flex中,所有AMF Remote Object 的請求都需要通過 AMF Gateway Servlet,而Remote Object 的建立和調(diào)用恰恰就是運行在這個HTTP請求的線程中。

有了這個原則,我們就可以建立一個Context Object,每當(dāng)請求建立的時候,就可以把這個請求放入 Context 的 ThreadLocal 中,而當(dāng) Remote Object 被AMF Gateway Servlet調(diào)用的時候,就可以通過訪問 Context 的ThreadLoca l來獲得其所對應(yīng)的那個請求。

而截獲發(fā)送到AMF Gateway的請求則可以通過Servlet Filter來實現(xiàn)。廢話不說了,看代碼吧! 
1. 添加以下內(nèi)容到WEB-INF/web.xml中
 

 
 
 
  1.  
  2. AMFSessionFilter  
  3. com.netop.forum.servlets.AMFSessionFilter  
  4.  
  5.  
  6.  
  7. AMFSessionFilter  
  8. AMFGatewayServlet  
  9.    
  10.  

 2. 如何在Flex Remote Object中使用AMFContext

 
 
 
  1. class YouRemoteService  
  2. {  
  3. public void serviceMethod()  
  4. {  
  5. AMFContext context = AMFContext.getCurrentContext();  
  6. HttpSession = context.getSession();  
  7. ServletContext = context.getServletContext();  
  8.  
  9. HttpServletRequest request = context.getRequest();  
  10. HttpServletResponse response = context.getResponse();  
  11.  
  12. context.setSessionAttribute("attr","value");  
  13. context.setContextAttribute("attr","value");  
  14.  
  15. }  
  16. }  
  17.  

網(wǎng)站題目:HttpSession方法在FlexRemoteObject中的使用
URL分享:http://m.5511xx.com/article/cogjsci.html