千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Flex Remote Object中直接使用HttpSession的方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有
千家信息网最后更新 2026年11月01日Flex Remote Object中直接使用HttpSession的方法是怎样的

Flex Remote Object中直接使用HttpSession的方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们可以用Remote Object来作为Service Facade,利用应用服务器提供的persistent service来储存状态信息。

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

问题的背景

Flex Remote Object可以是POJO,JavaBean或是EJB。在面向服务的架构中(Service Oriented Architecture),我们可以用Remote Object来作为Service Facade,利用应用服务器提供的persistent service来储存状态信息。

Flex既可以提供stateful或stateless的remote object, 另外还有session servlet让mxml获取/和储存session中的内容。这一切听上去都很***,但是有一个问题,Flex Remote Object本身是无法获得任何有关Running Context的信息,也就是说,你无法从你的 Remote Object 中获得 HttpSession, HttpRequest 和 ServletContext。 所谓的 Flex Session servlet只是让MXML获得session的内容,而不是直接让Remote Object获得session。

Remote Object为什么需要获得HttpRequest, HttpSession?
既然Flex提供了stateful的remote object为什么还要让remote object获得Running Context呢?问题在于Flex中的stateful是基于应用服务器的http session,而且你无法控制AMFGateway建立remote object的过程。打个简单的比方,我们知道一般的应用服务器中,session的时限只有20分钟,而在很多系统的登陆过程中却有选择保持登陆几个月的选项。

其具体实现上就是利用cookie来储存id和password hash,通过控制cookie的存活时间来实现的。而在服务器端,一旦session过期了,则可以从cookie中获得id和password hash重新登陆一遍,从而达到自动认证用户的目的。

如果你的Flex Remote Object无法获得 HttpServletRequest, HttpSession,你就无法实现上述的情况。另外,对于小型的应用来说,直接在Remote object中获得servlet context并利用它来储存/获得共享的资源,可以大大降低开发的复杂程度。

解决方案

要让Flex Remote Object获得HttpSession,HttpRequest和ServletContext并不是一件容易的事情。这里提供了我的一种方法,供大家参考。希望能抛砖引玉,让大家提出更好,更有效的方案。
这个方法的基本思路是利用JAVA提供的 ThreadLocal Object。当服务器接收到一个HTTP请求后,这个请求的整个处理过程是运行在同一个线程中的。
每个HTTP请求的处理会都运行在各自独立的线程中。而在Flex中,所有AMF Remote Object 的请求都需要通过 AMF Gateway Servlet,而Remote Object 的建立和调用恰恰就是运行在这个HTTP请求的线程中。

有了这个原则,我们就可以建立一个Context Object,每当请求建立的时候,就可以把这个请求放入 Context 的 ThreadLocal 中,而当 Remote Object 被AMF Gateway Servlet调用的时候,就可以通过访问 Context 的ThreadLoca l来获得其所对应的那个请求。

而截获发送到AMF Gateway的请求则可以通过Servlet Filter来实现。废话不说了,看代码吧!
1. 添加以下内容到WEB-INF/web.xml中

 AMFSessionFilter  com.netop.forum.servlets.AMFSessionFilter     AMFSessionFilter  AMFGatewayServlet  

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

class YouRemoteService  {  public void serviceMethod()  {  AMFContext context = AMFContext.getCurrentContext();  HttpSession = context.getSession();  ServletContext = context.getServletContext();   HttpServletRequest request = context.getRequest();  HttpServletResponse response = context.getResponse();   context.setSessionAttribute("attr","value");  context.setContextAttribute("attr","value");   }  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

服务 服务器 应用 方法 内容 信息 线程 过程 问题 登陆 运行 可以通过 就是 方案 时候 状态 帮助 控制 复杂 有效 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网高科技 广州万易互联网科技有限公司 北京路客互联网科技有限公司 互联网最新的科技有限公司 互联网科技公司怎么样 安徽鑫晟辉互联网科技 深圳艾佳互联网科技 联恩商钥互联网科技有限公司 青海省互联网新科技 金融科技与互联网金融相同和不同 广州市恰铎互联网科技有限公司 如何创新互联网科技 互联网营销推广黑科技 21世纪互联网科技成就 35岁以上互联网科技行业 互联网领先科技成果宣传视频 互联网科技创新方面的资料 互联网企业和网络科技有限公司 高科技和互联网的现代国家 中关村互联网科技集团 科技互联网项目 金融科技还是互联网 互联网为科技 互联网科技创新企业排名 农村开互联网科技讲堂 互联网科技创新创业项目 东风日产互联网科技公司叫什么 互联网科技创业有什么好项目 互联网 科技节活动 微视频大赛
0