一种Java EE应用服务器并发处理方法技术

技术编号:2821341 阅读:677 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种Java EE应用服务器并发处理方法,属于软件技术领域。本发明专利技术所述应用服务器包括一个或多个请求处理单元,各个请求事件依次通过所述请求处理单元中的一个或多个进行处理;各个请求处理单元在处理所述请求事件之前查看是否存在处理该请求事件所需的空闲的共享资源,若是,则为当前请求处理单元分配线程并处理所述请求事件,若否,则不为当前请求处理单元分配线程并等待,直至出现所需的空闲的共享资源。和现有技术相比,本发明专利技术方法减少了因共享资源竞争引起的线程资源阻塞,提高了Java EE应用服务器的并发处理能力,同时使得调试和性能分析更加方便,有利于性能瓶颈的定位。

【技术实现步骤摘要】

本专利技术涉及,属于软件
技术背景Java EE (Java Enterprise Environment)是Sun公司提出的基于Java的分布式应用的标 准平台,它通过提供企业计算环境所必需的各种服务,使得部署在Java EE平台上的基于 构件的分布式应用可以实现高可用性、安全性、可扩展性和可靠性等特征,是目前应用最 为广泛的面向Web的应用系统结构规范。它为Web应用的开发、部署、运行和管理提供 一系列的规范和标准。Java EE应用服务器通过容器来支持分层体系结构,容器提供了对Java EE应用组件的 运行时支持。图l显示了基于JavaEE平台的Web应用服务器的基本组成结构,其中Web 容器封装了 Web服务器与表示层逻辑的功能,为JavaEE表示层组件(如Servlet)提供了 运行时环境支持。EJB容器(Enterprise Java Bean Container)封装了业务层功能,为Java EE 业务层组件(EJB)提供运行时环境支持。同时,JavaEE应用服务器还提供了一系列的底 层服务(如Java消息服务、Java连接器体系结构、Java数据库连接服务等)为Web容器 和EJB容器提供一些底层功能支持,使其能够访问企业数据库与企业遗留系统,同时与其 他中间件交互(如消息中间件等)。对Java EE应用服务器而言,它必须能够同时为多个企业客户提供服务,这种并发处 理能力由其并发处理模型通过管理线程资源加以实现。目前的Java EE应用服务器采用的 并发处理模型主要是线程池模型,它为每个客户请求分配一个线程资源完成其处理,在轻 负载的情况下具有较好的性能表现。然而,在Java EE应用服务器中除了线程资源之外还包含大量的共享资源(如数据库 连接、Java消息队列等),它们同样是完成客户请求处理所必须的资源。当JavaEE应用 服务器面临重负载时,共享资源不足会造成线程资源阻塞等待,直到获得相应的共享资源 后才能继续对客户请求的处理,在等待过程中,该线程实际上处于阻塞状态。当负载增大 时,将造成大量处理线程的阻塞,使得JavaEE应用服务器进入饱和状态,无法处理后续的请求,即使该请求并不需要造成线程阻塞的共享资源。可见,采用这种模式在负载较大 时对线程的使用效率较低,从而导致整个应用服务器的效率较低。通过监控共享资源的使用情况指导线程资源的管理能够有效的减少上述线程阻塞,提 高线程资源的利用率,进而提高JavaEE应用服务器的并发处理能力。
技术实现思路
针对上述现有Java EE应用服务器并发处理模型存在的问题和不足,本专利技术的目的是 提供一种共享资源敏感的Java EE应用服务器并发处理方法,提高Java EE应用服务器的 并发处理能力,使其能够同时为更多的企业客户提供服务。在本专利技术方法中,客户请求被 包装为请求事件,通过多个请求处理单元(Request Processing Unit, RPU)依次处理该请 求事件,各个请求处理单元完成请求处理的部分功能,并根据共享资源的使用情况为需要 处理的客户请求分配线程资源。本专利技术方法主要包括以下几个要素请求事件、资源上下文与请求处理单元(如图2 所示)。下面对这些要素作详细介绍(1) 请求事件在本专利技术方法中,请求事件是客户请求的内部表示,是请求处理单元的处理对象。通常情况下,请求事件包含了客户请求的所有信息。例如,在基于本专利技术方法实现的Web 容器中,请求事件包含了客户请求的URL、请求参数值、内部的会话对象引用等内容。(2) 资源上下文资源上下文定义了请求处理单元的共享资源需求,同时规定了对共享资源的一些使用 限制,是请求处理单元分配处理资源的依据。当一个请求事件到达请求处理单元后,假如 系统中仍存在空闲的共享资源并且当前请求处理单元使用的共享资源没有超过预定义的 资源限额,则请求处理单元为该请求事件分配一个处理资源执行请求处理逻辑。对JavaEE应用服务器而言,应用组件由Web应用开发者开发,Web容器无法事先获知 其共享资源需求。因此,资源上下文的定义需要Web应用开发者的参与,通过配置文件的 方式与应用组件一起部署到Web容器。下面给出了一个资源上下文的例子,指明了请求处 理单元Search需要类型为AppConnection的资源,最大使用数量为15。<ResourceContext><RPU〉Search</RPU> <Resources>〈Resource name=,,AppConnection,, max=,,15,,/> </Resources> </ResourceContext>(2)请求处理单元请求处理单元是本专利技术方法的核心组件,它将一系列请求处理步骤封装为请求处理任 务。同时,请求处理单元根据共享资源的使用情况为请求处理任务分配处理资源,完成请 求处理逻辑。下面首先详细介绍了组成请求处理单元的组件,然后给出了请求处理单元的 运行原理。*组成结构组成请求处理单元的组件如图3所示。 一个请求处理单元由输入事件队列(Input Event Queue)、调度器(Scheduler)、资源管理器(Resource Manager)、事件处理器(Event Handler)、 任务管理器(TaskManager)、分发器(Dispatcher)组成,下面将详细介绍每个组件的具 体功能。(1) 输入事件队列(Input Event Queue)。输入事件队列存储了所有当前请求处理单元需要处理的请求事件。在请求处理单元 内部,允许对请求事件的批量处理,这使得事件处理器能够在一个已经获得共享资 源的线程内批量处理事件,减少线程的上下文切换。(2) 事件处理器(Event Handler)。 每个请求处理单元包含一个事件处理器,它封装了当前请求事件处理流程的一个或 多个处理步骤,通常对应一些请求处理组件的处理逻辑,如解析HTTP请求为内部 请求对象。(3) 资源管理器(Resource Manager)。 资源管理器负责管理资源上下文并监控共享资源的使用情况,作为调度器线程创建 处理任务的依据。(4) 任务管理器(Task Manager)。任务管理器负责为请求事件创建处理任务。当请求事件的共享资源需求被满足时, 调度器线程创建一个处理任务并交给任务管理器,由任务管理器为其分配线程资源 以执行事件处理器封装的请求处理逻辑。(5) 分发器(Dispatcher)。 事件分发器负责将处理后的请求事件根据其类型分发到其他请求处理单元的输入 事件队列中,驱动请求处理流程的继续执行。(6) 调度器线程(Scheduler)。调度器线程是请求处理单元的核心,它拥有一个处理资源。它通过资源管理器监控 共享资源的使用情况,并为满足共享资源需求的请求事件创建处理任务交给任务管 理器执行。图4说明了调度器的状态转换图。1) 开始的时候调度器处于空闲状态(idle)。2) 当请求事件到达时,调度器通过资源管理器查看共享资源的使用情况。如果没有空闲的贡献资源,调度器进入资源阻塞状态(Resources blocked)。3) 当共享资源满足后资源管理器唤醒调度器进入本文档来自技高网
...

【技术保护点】
一种Java EE应用服务器并发处理方法,其特征在于,所述应用服务器包括一个或多个请求处理单元,各个请求事件依次通过所述请求处理单元中的一个或多个进行处理; 各个请求处理单元在处理所述请求事件之前查看是否存在处理该请求事件所需的空闲的共享资源,若是,则为当前请求处理单元分配线程并处理所述请求事件,若否,则不为当前请求处理单元分配线程并等待,直至出现所需的空闲的共享资源。

【技术特征摘要】

【专利技术属性】
技术研发人员:李洋张文博钟华魏峻黄涛
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1