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

技术Flex Remote Object中直接使用HttpSession的方法是怎样的Flex Remote Object中直接使用HttpSession的方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,

如何在FlexObject中直接使用HttpSession,很多新手都不清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

我们可以使用远程对象作为服务门面,并使用应用服务器提供的持久服务来存储状态信息。

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

问题的背景

flexobject可以是POJO、JavaBean或EJB。在面向服务的体系结构中,我们可以使用远程对象作为服务外观,并使用应用服务器提供的持久服务来存储状态信息。

Flex不仅可以提供有状态或无状态的远程对象,还可以为mxml提供会话servlet来获取/存储会话中的内容。这一切听起来很* * *,但是有一个问题,Flex远程对象本身无法获取任何关于Running Context的信息,也就是说,你无法从你的远程对象获取HttpSession、HttpRequest和ServletContext。所谓的灵活会话servlet只让MXML获得会话的内容,而不是让远程对象直接获得会话。

为什么远程需要获取HttpRequest,HttpSession?

既然Flex提供了有状态远程对象,为什么远程对象要得到Running Context?问题是Flex中的有状态是基于应用服务器的http会话的,你无法控制AMFGateway建立远程对象的过程。举一个简单的例子,我们知道在一般的应用服务器中,会话的时间限制只有20分钟,而在许多系统中,有保持登录几个月的选项。

具体来说,是通过使用cookie存储id和密码哈希,并控制cookie的生存期来实现的。在服务器端,一旦会话过期,就可以从cookie中获取id和密码哈希,重新登录,从而达到自动认证用户的目的。

如果你的Flex远程对象不能得到HTTP HTTP HttpServletRequest,HttpSession,你就不能实现上面的情况。此外,对于小型应用程序,直接从Remote对象获取servlet上下文,并使用它来存储/获取共享资源,可以大大降低开发的复杂性。

解决方案

对于Flex远程对象来说,Httprequest和ServletContext并不是容易获得的东西。下面是我的一个方法,供大家参考。希望能成为大家拿出更好更有效的解决方案的好榜样。

这个方法的基本思想是使用JAVA提供的ThreadLocal Object。当服务器收到一个HTTP请求时,请求的整个过程在同一个线程中运行。

每个HTTP请求的处理将在自己独立的线程中运行。在Flex中,AMF远程对象的所有请求都需要通过AMF网关Servlet,远程对象的建立和调用也只是在这个HTTP请求的线程中运行。

根据这个原则,我们可以创建一个上下文对象。无论何时创建请求,我们都可以将其放在上下文的ThreadLocal中。当远程对象被AMF网关Servlet调用时,我们可以访问上下文的线程来获得相应的请求。

通过Servlet过滤器可以实现对发送到AMF网关的请求的拦截。别废话了,读代码!

1.将以下内容添加到web-INF/web.xml中。

Filter Filter-nameafsessionfilter/Filter-name Filter-classcom . netop . forum . servlet . amfsessionfilter/Filter-classfilter Filter-mapping Filter-nameafssession Filter/Filter-nameservlet-nameafgatewayservlet/servlet-name Filter-mapping 2。如何在Flex远程对象中使用AMFContext

classYouRemoteService { publicationservice method(){ AMFContextcontext=amfcontext。getcurrentcontext();HttpSession=上下文。getSession();ServletContext=context。getservletcontext();HttpServletRequestrequest=上下文。getrequest();httpservletresponse响应=上下文。getresponse();语境。setsessionattribute(' attr ',' value ');语境。setcontextattribute(' attr ',' value ');}}看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86563.html

(0)

相关推荐

  • 如何理解Java设计模式的代理模式

    技术如何理解Java设计模式的代理模式这篇文章将为大家详细讲解有关如何理解Java设计模式的代理模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、代理模式定义  为其

    攻略 2021年10月23日
  • 只一行Python代码能实现哪些功能

    技术只一行Python代码能实现哪些功能本篇内容主要讲解“只一行Python代码能实现哪些功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“只一行Python代码能实现哪些功

    攻略 2021年11月20日
  • 第292天学习打卡,知识点回顾 java运行时数据区)

    技术第292天学习打卡,知识点回顾 java运行时数据区) 第292天学习打卡(知识点回顾 java运行时数据区)知识点回顾
    java 运行时数据区程序计数器 :程序计数器(Program Counte

    礼包 2021年10月28日
  • Ch14学习笔记——MySQL数据库系统

    技术Ch14学习笔记——MySQL数据库系统 Ch14学习笔记——MySQL数据库系统Ch14学习笔记——MySQL数据库系统
    14.1 MySQL简介
    MySQL (MySQL2018 )是一个关系数

    礼包 2021年12月13日
  • storm三种运行环境是什么(storm架构的优缺点)

    技术Storm基本架构是什么本篇内容主要讲解“Storm基本架构是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Storm基本架构是什么”吧!目前常用的流式实时计算引擎分

    攻略 2021年12月23日
  • 美的电饭煲怎么用,美的电饭煲怎么正确使用

    技术美的电饭煲怎么用,美的电饭煲怎么正确使用1美的电饭煲怎么用、先用手紧紧的握住压力锅的锅盖手柄,顺时针方向旋转锅盖到压力锅的限位边,向上提起锅盖。2、取出电压力锅的内锅将需要进行烹调的食物和水放入内锅中,但是放进的食物

    生活 2021年10月27日