Flex session超时处理的解决方案

 Flex中实现session的一个类是FlexContext类,他将session保存在服务端。Flex客户端的每次RPC请求到服务端接口,都需要做session有效性验证,如果验证session失效,则需要按照一点的规则返回失败信息给Flex客户端,以提示客户端如何处理session失效后的流程。

简单例子:

1、web.xml中需要配置session的超时时间

<!-- 配置session超时时间(分钟) -->

<session-config>

    <session-timeout>3</session-timeout>   

  </session-config>


2、JAVA 服务器端RPC服务接口内的session验证代码:session中的"userName"应该由统一登录入口登录成功后保存的值。

//FlexSession是基于HttpSession创建,session也是共享的,如果session超时,则下次请求会重新创建新的session

FlexSession flexSession = FlexContext.getFlexSession();

if(null != flexSession && null != flexSession.getAttribute("userName"))

{

System.out.println("--> message: " + flexSession.toString() + ", name:" + flexSession.getAttribute("userName"));

}

else

{

//利用抛出异常,向客户端发送错误响应,客户端需要监听FaultEvent事件,进行后续处理

throw new Exception("Session失效");

}


3、Flex客户端接受服务器响应的处理流程:

protected function button1_clickHandler(event:MouseEvent):void

{

//自己封装过的获取remote对象的方式,监听FaultEvent事件,接受服务器抛出来的异常

this.remote.getOperation("createDataSet").addEventListener(FaultEvent.FAULT, faultHandler);

this.remote.createDataSet("", "", "", "", "", "");

}


/**

* 处理服务器响应异常时的流程

**/ 

private function faultHandler(event:FaultEvent):void

{

var errorMessage:ErrorMessage = event.message as ErrorMessage;  

if(errorMessage && errorMessage.rootCause)

{  

var errorStr:String = errorMessage.rootCause.message;  

//简单的验证方式

if(errorStr.indexOf("Session失效") != -1)

{  

Alert.show("Session失效,重新登录!");  

}  

}  

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值