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)

相关推荐

  • hot的比较级,形容词比较级双写+er的有哪些

    技术hot的比较级,形容词比较级双写+er的有哪些在重读闭音节(即:辅音+元音+辅音)中hot的比较级,要双写结尾的辅音字母,然后比较级加er,列举如下:bigger,thinner,fatter,hotter,slim

    生活 2021年10月29日
  • Bootstrap中的图片组件和轮廓组件举例分析

    技术Bootstrap中的图片组件和轮廓组件举例分析这篇文章主要介绍“Bootstrap中的图片组件和轮廓组件举例分析”,在日常操作中,相信很多人在Bootstrap中的图片组件和轮廓组件举例分析问题上存在疑惑,小编查阅

    攻略 2021年11月28日
  • sysbench 0.5有什么用

    技术sysbench 0.5有什么用这篇文章主要介绍sysbench 0.5有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 前言 因为在准备做压力测试方面

    攻略 2021年11月7日
  • 怎么使用Oracle数据库的逻辑备份工具

    技术怎么使用Oracle数据库的逻辑备份工具这篇文章主要介绍“怎么使用Oracle数据库的逻辑备份工具”,在日常操作中,相信很多人在怎么使用Oracle数据库的逻辑备份工具问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月5日
  • nebulagraph数据库性能测试(数据库nebulagraph)

    技术如何进行图数据库Nebula Graph 的数据模型和系统架构设计本篇文章为大家展示了如何进行图数据库Nebula Graph 的数据模型和系统架构设计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详

    攻略 2021年12月20日
  • 如何配置Git

    技术如何配置Git这篇文章主要介绍了如何配置Git,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。配置Git1.配置git 用户名和邮箱git config

    攻略 2021年11月21日