0 0

flex+blazeds+java session自动消毁怎么解决25

系统当中配置SessionListener,session刚被创建 一分钟不到就自动消毁了。(注意是自动消毁的)

直接看代码

web.xml配置

<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<listener>
		<description>系统初始化</description>
		<listener-class>com.zznode.iptvs.core.StartupListener</listener-class>
	</listener>

	<listener>
		<description>FlexSessionListener</description>
		<listener-class>com.zznode.iptvs.core.listener.SessionListener</listener-class>
	</listener>


	<!-- flex session -->
	<listener>
		<listener-class>flex.messaging.HttpFlexSession</listener-class>
	</listener>

	<!-- Flex 配置 -->
	<servlet>
		<servlet-name>Flex</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>Flex</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>


java类SessionListener


public class SessionListener implements HttpSessionListener{
	
	private static final Logger logger = Logger.getLogger(SessionListener.class);

	/**
	 * Session创建
	 */
	public void sessionCreated(HttpSessionEvent arg0) {
		logger.info("flexSession is created and FlexSession id is " + arg0.getSession().getId());
	}

	/**
	 * Session消毁处理
	 */
	public void sessionDestroyed(HttpSessionEvent arg0) {
		HttpSession session = arg0.getSession();
		logger.info("flexSession is destroyed and FlexSession id is " + session.getId());
		SysUserInfo user = (SysUserInfo) session.getAttribute(GlobalSysInfo.USER_FLAG);
		if(user != null){
			logger.info(" userName is " + user.getUsername());
			GlobalSysInfo.removeOnlineMaps(user.getId());
		}
		
		
	}

}



超时校验
import flex.messaging.FlexContext;

public class TimeOutInterceptor {

	public Object before(ProceedingJoinPoint point)	throws Throwable {
		
		SysUserInfo user = (SysUserInfo) FlexContext.getHttpRequest().getSession().getAttribute(GlobalSysInfo.USER_FLAG);
		if(user != null){
			return point.proceed();
		}else{
			throw new ZznodeException(GlobalSysInfo.errorCodeMap.get(SystemConstants.SESSIONOUT));
		}
//		return point.proceed();
	}

}


我登录界面是html,其它页面是flex
现在服务器一会儿就超时。一会就超时。这个超时时间好像是随机的。有可能十多分钟。有可能是默认的半小时,有的时候甚至一分钟或几秒钟就。
下面是session被创建和销毁的日志
2012-03-13 11:04:52 [http-bio-8008-exec-36]   [INFO] - flexSession is created and FlexSession id is 2285DC5AC212E0EE6C8D32DDD6073B12
2012-03-13 11:05:04 [http-bio-8008-exec-36]   [INFO] - flexSession is destroyed and FlexSession id is 2285DC5AC212E0EE6C8D32DDD6073B12
2012-03-13 11:05:06 [http-bio-8008-exec-36]   [INFO] - flexSession is created and FlexSession id is 3CBBB80C9675E35CBD270209553ED857
2012-03-13 11:11:46 [http-bio-8008-exec-45]   [INFO] - flexSession is created and FlexSession id is 9777A2EACDEC3739C7C35DA4010ADAE1
2012-03-13 11:11:46 [http-bio-8008-exec-45]   [INFO] - flexSession is destroyed and FlexSession id is 9777A2EACDEC3739C7C35DA4010ADAE1
2012-03-13 11:11:51 [http-bio-8008-exec-45]   [INFO] - flexSession is created and FlexSession id is FF55C0EB47DE4527D56A69A53682098B
2012-03-13 11:13:52 [ContainerBackgroundProcessor[StandardEngine[Catalina]]   [INFO] - flexSession is destroyed and FlexSession id is 05ACB7CFE66D28DFCB302A47F8757095
2012-03-13 11:13:52 [ContainerBackgroundProcessor[StandardEngine[Catalina]]   [INFO] -  userName is admin
2012-03-13 11:13:52 [ContainerBackgroundProcessor[StandardEngine[Catalina]]   [INFO] - flexSession is destroyed and FlexSession id is FF55C0EB47DE4527D56A69A53682098B
2012-03-13 11:13:52 [ContainerBackgroundProcessor[StandardEngine[Catalina]]   [INFO] -  userName is admin


注意大家看一下。session 日志。有的session刚被创建就销毁了。而有的又正常。请各位大牛给出原因和解决方式。如果满意的话的我再追加分数
2012年3月13日 13:58

2个答案 按时间排序 按投票排序

0 0

你把你的HttpSessionListener替换成ServletContextListener,然后在实现ServletContextListener里面的 sessionCreated和sessionDestroyed方法里面写你的业务然后,  再来试试

2012年3月29日 08:54
0 0

是不是你的代码里有主动关闭SESSION的地方?

2012年3月13日 23:05

相关推荐

    flex4+spring+blazeds整合技术

    富互联网应用程序(Rich Internet Applications,简称RIA)已经成为一种趋势,而Flex作为Adobe提供的RIA开发框架,结合Spring的优秀企业级服务管理和BlazeDS的数据传输能力,为开发者提供了强大的前后端交互解决方案...

    ssh+flex+blazed

    BlazeDS是Adobe推出的一个开放源代码项目,它允许在Flex客户端与Java服务器之间进行实时双向通信,支持AMF数据格式,提供了数据推送、远程调用等功能。 在这个"ssh+flex+blazed"的集成过程中,我们主要涉及到以下几...

    Flex+spring+hibernate

    Flex SDK中的BlazeDS或LCDS提供AMF支持,使得ActionScript对象可以直接映射为服务器端的Java对象。 2. **Spring配置**:在Spring中,需要配置服务代理(Service Proxy)以便Flex客户端可以调用。这些代理通常基于...

    flex + asp.net web应用开发实战详解 code p2

    2. ** BlazeDS与LiveCycle Data Services**:Adobe提供的BlazeDS和LiveCycle Data Services是用于连接Flex与Java或.NET服务器的中间件。它们支持Remoting和Messaging,使得Flex客户端能够调用服务端方法和接收实时...

    Flex+hibernate+spring整合

    2. ** BlazeDS/LiveCycle Data Services**:Adobe提供的BlazeDS或LiveCycle Data Services作为服务器端组件,为Flex和Spring之间的通信提供支持,允许Flex客户端与Spring服务交互。 3. **Spring-WS/Spring-Remoting...

    Flex+spring+hibernate整合视频part_1

    7. **配置AMF**:为了使Flex能够与Spring服务通信,我们需要配置AMF(Action Message Format)通道,如BlazeDS或LCDS,这使得Flex可以使用二进制格式高效地与服务器交换数据。 8. **测试与调试**:编写Flex前端的UI...

    Myeclipse整合flex4搭建java的Web项目

    Blazeds是一个Java远程控制(Remoting)和Web消息传递(Messaging)技术,它允许后端的Java应用程序与浏览器中的Adobe Flex应用程序进行交互。Blazeds以servlet的形式在Java应用服务器上运行,可兼容任何标准Java...

    Spring MVC+BlzeDS+Flex框架实践:HelloWorld篇

    Spring MVC+BlazeDS+Flex框架实践:HelloWorld篇是一个典型的多层架构示例,它结合了Spring MVC作为后端控制器、BlazeDS作为数据通信中间件,以及Flex作为前端展示技术。本实践旨在帮助开发者了解如何将这些技术集成...

    blazeDS(讲得很详细)

    BlazeDS的主要目的是为Flex、AIR客户端应用提供与Java后端服务进行高效通信的能力。它的核心功能包括AMF协议支持、广播服务以及实时通信功能。 AMF(Action Message Format)协议是BlazeDS的关键特性之一,它允许...

    《BlazeDS开发指南》学习笔记

    BlazeDS,作为Adobe公司的一款免费开源产品,旨在简化企业级应用的开发过程,特别是那些涉及到Flex和Java技术的项目。它源于Adobe的另一款产品LiveCycle Data Services(LCDS)的开源版本,其核心优势在于提供了以下...

    BlazeDs开发应用.pdf

    BlazeDS是一款由Adobe公司推出的免费开源产品,它是Lightweight ColdFusion Data Services (LCDS)的精简版,主要用于连接Flex或AIR客户端与Java服务端应用。BlazeDS提供了AMF(Action Message Format)协议,让...

    《BlazeDS开发指南》.doc

    BlazeDS的主要目的是为Flex和AIR客户端提供与Java服务端之间的高效通信。它提供了多种功能,包括AMF协议支持、广播数据、实时通信等。 在BlazeDS的应用程序结构中,客户端通常由Flex或AIR应用程序构成,它们通过...

    ssh+flex配置

    要使用Flex,你需要在服务器上安装 BlazeDS 或 GraniteDS 这样的AMF服务器,以支持Flex客户端与Java服务端的数据通信。 7. **JAR包**:所有必要的JAR包,如Struts2的核心库、Spring框架、Hibernate库以及Flex所需的...

    flex和hibernate的整合

    Flex通过 BlazeDS 或 LCDS(LiveCycle Data Services) 提供AMF支持,这些服务在Java端部署,作为数据通道,允许Flex客户端与服务器进行数据交互。 2. **服务接口定义**:在Java端,你需要定义一组服务接口,这些...

    IT技术文章示例

    BlazeDS是一个Adobe提供的实时数据和远程调用解决方案,它可以作为Flex和Java之间的桥梁,实现双向数据流和远程过程调用。利用BlazeDS,Flex客户端可以订阅Java服务器上的事件,实时获取更新数据,同时也可以调用...

    基于Flex三种通讯方式的Java配置与整合.docx

    ### 基于Flex三种通讯方式的Java配置与整合 #### 概述 在软件开发领域,特别是Web应用开发中,不同技术栈之间的交互是非常重要的环节。本文将围绕Flex技术与Java Web项目的集成展开,主要介绍如何通过三种不同的...

Global site tag (gtag.js) - Google Analytics