处理平台,例如Java企业版(JEE)平台,包括具有多个处理器(3)的JEE簇,所述多个处理器包括用于处理与一个或多个应用会话Si至Sn相关联的事件的资源适配器(11)。每个应用会话Si至Sn包括会话状态(15)和事件队列(17),事件队列(17)包含针对会话S1至Sn中的特定会话要执行的事件的列表。线程池(19)包括一个或多个处理线程t1至tN,用于使得处理器(3)能够并行地执行多个任务。线程池(19)包括任务队列(21),所述任务队列(21)包含处理线程t1至tN要执行的任务。资源适配器(11)包括同步单元(23),用于控制来自线程池的多个线程t1至tN如何处理多个应用会话Si至Sn中的事件。具体地,同步单元(23)配置为使得排队在事件队列(17)中的仅一个事件调度有任务队列(21)中的任务,由此防止并行地执行来自应用会话的特定事件队列的多于一个事件。
【技术实现步骤摘要】
【专利说明】分案说明本申请是申请日为2009年7月28日,申请号为200980160635.5,题为“”的中国专利申请的分案申请。
本专利技术涉及,并且具体地涉及诸如Java企业版(JEE)处理平台之类的电信处理平台中用于同步与应用会话相关联的事件的处理的方法和设备。
技术介绍
在电信网络中,为了提供除常规电话呼叫之外的额外功能,存在许多应用和服务。这些应用和服务通常运行在连接到电信网络的不同服务器上。这些服务器通常运行在与电信网络自身不同的平台上。一种这样的平台是Java企业版(JEE)平台,其是标准Java平台的发展。JEE是针对Java编程语言中的服务器编程的广泛使用的平台。JEE平台与标准Java平台的不同在于其添加了主要基于运行在应用服务器上的模块化组件来部署容错的分布式多层Java软件的功能的库。JEE平台的特征在于其允许多个处理线程并行地运行,由此提高任务执行的吞吐量。尽管JEE平台适合于许多应用,但是如下所述,对于某些电信服务可能是不可行的。电信协议的处理通常要求使用与应用会话相关联的状态机。对于这些状态机,必须一次仅接收一个消息,使得不会破坏状态。因此,JEE平台不提供用于一次一个地处理特定应用会话上的消息的装置。相反,JEE平台通常会启动与要处理的消息一样多的并行线程。图1示出了典型的JEE簇1,包括多个处理器3。处理器3可以是相同的,并且分享JEE簇I的负载。当用作电信处理平台时,每个处理器3通常将包括若干容器,例如Enterprise Java Beans 5 (EJB)、HTTP 服务程序(servlet) 7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的其他资源适配器。图1示出的架构包括线程池19。线程池19包括一个或多个处理线程t N,用于使得处理器3能够并行地执行多任务。线程池19还包括任务队列21,任务队列21包含线程^至t ,要执行的任务的集合。每个处理线程t 1至t N—次执行一个任务。如上面提到的,JEE平台配置为并行地尝试和执行与系统中定义的线程一样多的任务。这在下述情况下可能出现问题:如图1所示的JEE平台被用于处理电信应用和服务,其中当多个线程^至1,并行地执行与应用会话相关联的多个事件时,会话状态变为无效。换言之,应用会话中的事件并发地更新相同的会话状态。确保事件同步的一种方法是使用锁或旗语(semaphore)来防止应用会话中的事件并发地更新相同的会话状态。如此,当一个线程^至tN在处理与特定应用会话相关联的事件时,所有其他线程必须等待直到所述一个线程结束。其缺点在于:使许多线程^至七,等待,这不是对系统资源的最佳使用,并且通常与JEE平台原理相冲突。确保事件同步的另一方法是向每个应用会话仅分配所述多个线程^至^中的一个线程。如此,每个应用会话具有用于处理其事件的专用线程。然而,这样的解决方案具有上述线程池机制的缺点,以及因此违背了支配所有资源(包括线程)必须被管理的重要JEE平台原理。该解决方案还具有以下缺点:使用比所需的线程多得多的线程^至七,,由此资源效率不高。根据上文应该理解,在不损害资源效率的情况下实现事件同步存在问题。
技术实现思路
本专利技术的目的在于提供一种用于以资源高效的方式同步在电信网络中使用的处理平台中的事件处理的方法和设备。根据本专利技术的一个方面,提供了一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,其中所述电信处理平台具有用于并行地处理多个任务的多个处理线程,以及其中所述任务存储在任务队列中。所述方法包括以下步骤:在与特定应用会话相关联的事件队列中存储一个或多个事件,以及向特定应用会话的事件队列中的仅一个事件分配所述任务队列中的任务。本专利技术具有以下优点:避免了并发地处理事件,因为特定应用会话的事件队列中仅一个事件分配有任务。本专利技术还具有以下优点:不需要对现有线程池本身执行任务队列中的任务的处理的方式进行任何修改。在事件队列中存储事件可以包括以下步骤:确定所述事件是否是事件队列中的第一事件,如果是,则向该特定事件分配任务队列中的任务。从事件队列中移除已处理的事件可以包括以下步骤:确定事件队列是否为空,如果不为空,则向事件队列中的另一事件分配任务队列中的任务。该分配任务的步骤可以包括向事件队列中的下一个事件分配任务的步骤。在事件队列中存储事件以及确定所述事件是否是事件队列中的第一事件的步骤可以作为不可分割的动作来执行。这具有避免竞态条件的优点。从事件队列中移除事件以及确定事件队列是否为空的步骤可以作为不可分割的动作来执行。这也具有避免竞态条件的优点。根据本专利技术的一个方面,可以提供锁,以执行所述不可分割的动作。备选地,可以使用原子计数器来执行所述不可分割的动作。该原子计数器具有在相应的存储或移除步骤期间递增或递减的计数值,所述计数值指示事件队列是否为空,或者事件是否是事件队列中的第一事件。所述方法可以用在具有Java企业版(JEE)处理平台的电信处理平台中。根据本专利技术的另一方面,提供了一种在具有用于并行地处理多个任务的多个处理线程的电信处理平台中使用的资源适配器,所述任务存储在任务队列中。所述资源适配器包括一个或多个事件队列。每个事件队列与应用会话相关联,并且适于存储与其对应应用会话相关联的一个或多个事件。所述资源适配器包括:同步单元,用于同步事件队列中的事件的处理,所述同步单元配置为向事件队列中的仅一个事件分配任务队列中的任务。根据本专利技术的另一方面,提供了一种JEE簇,所述JEE簇包括如所附权利要求所述的资源适配器,或者适于执行如所附权利要求所述的方法。本专利技术具有如下优点:有效地使用线程池来处理来自多个队列的事件,不会不必要地阻止线程,而且同时并行处理尽可能多的事件(来自不同应用会话)。此外,本专利技术无死锁和活锁。【附图说明】为了更好地理解本专利技术,以及更清楚地示出如何实现本专利技术,现在将参考作为示例的附图,在附图中:图1示出了已知JEE簇的典型架构;图2示出了具有用于处理应用会话的资源适配器的JEE架构;图3示出了根据本专利技术的实施例的资源适配器;图4示出了根据本专利技术的实施例的方法中执行的步骤;图5示出了根据本专利技术的一个方面的方法中执行的步骤;图6示出了根据本专利技术的另一方面执行的步骤;图7示出了根据本专利技术的另一方面执行的步骤;图8示出了根据本专利技术的另一方面的执行的步骤;以及图9至12提供了根据本专利技术可以如何处理多个事件的示例。【具体实施方式】下面将在JEE平台的上下文中描述的本专利技术。然而,应该理解,本专利技术还可应用于与线程池结合来执行对事件和会话的处理的平台的其他形式,即通过利用事件处理的任何会话框架。此外,尽管本专利技术是在电信环境的上下文中描述的,但是本专利技术还可应用于具有类似问题的其他应用。[00当前第1页1 2 3 4 本文档来自技高网...
【技术保护点】
一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,所述电信处理平台具有用于并行地处理多个任务的多个处理线程,所述任务存储在任务队列中,所述方法包括以下步骤:在与应用会话相关联的事件队列中存储一个或多个事件,以及向所述事件队列中的事件分配任务,使得一次仅向事件队列中的一个事件分配任务;在处理所述事件之后,从事件队列中移除所述事件;以及确定移除了已处理事件的事件队列是否为空,如果不为空,则向所述事件队列中的仅一个其他事件分配任务。
【技术特征摘要】
【专利技术属性】
技术研发人员:弗雷德里克·胡戈·芝瓦尔,
申请(专利权)人:瑞典爱立信有限公司,
类型:发明
国别省市:瑞典;SE
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。