用于在服务器端程序中处理外部事件的系统和方法

文档序号:6420831阅读:152来源:国知局
专利名称:用于在服务器端程序中处理外部事件的系统和方法
技术领域
本发明涉及软件领域,而更特别地,本发明涉及服务器中的事件处理。
背景技术
Web服务器提供者识别针对响应用户交互的Web页或者动态内容的需求。这种用户交互可包括客户机端和服务器端的处理。客户机端的处理能够用于允许小程序,例如小应用程序(applet),在用户机器的用户浏览器中执行。但是,服务器端程序,通常需要用于比较复杂的任务,例如数据库查找。为了执行这些服务器端的任务,Web服务器能够用作一个在通常为浏览器的客户机程序与例如数据库等的服务器程序之间的接口。
一种用于执行服务器端的处理的方法包括虚拟机的应用。虚拟机可以是一种在被编译的程序执行代码与特定的硬件平台之间的接口。因此,虚拟机可以允许建立能够运行在任意硬件平台上的应用程序,而不必由程序员相对于每一单独的平台重写或重新编译。一个这样的虚拟机就是Java虚拟机,其中可以包括作为兼容的服务器端程序的小服务程序(servlet)。
小服务程序是一个与服务器端的部件无关的协议和平台,它能够应用请求-响应程序执行模式。由小服务程序处理的每个用户请求能够导致在服务器的处理器中的单个线程的应用。因此,与采用公共网关接口(CGI)的实现相比,小服务程序的处理开销是很小的,其中,对于CGI响应的每个用户请求,CGI将初始化一个新的进程。特别地,小服务程序能够以同步方式处理客户机请求,使得当客户机发布一请求时,该客户机必须等待直到小服务程序完成该请求为止。不幸的是,在完成之前,该客户机不能中断或者修改小服务程序中的进程的执行。
例如,客户机能够提交一导致服务器处理大的话音XML(VoiceExtensible Markup Language,即话音扩展标记语言)文本的请求。该服务器能够接收所述客户机请求并且能够利用一小服务程序产生响应。但是,在该小服务程序已被启动后,一“挂起”事件发生,使得所述响应悬而未决。在没有外部事件处理能力的情况下,即使该“挂起”事件向原请求客户机提出所述响应是无意义的,该服务器也将完成所述已启动的话音XML处理。即,该客户机可能必须等待该小服务程序中的一超时事件发生,并且不能外部触发这种事件。因此,能够造成处理时间和服务器资源的不必要的浪费。

发明内容
这里公开的本发明提供了一种用于在虚拟机中的服务器端程序处理外部事件的系统和方法。目前,许多虚拟机采用请求-响应范例执行同步请求处理而没有外部事件处理。本发明能够添加事件处理器,事件分配器和事件监视器至虚拟机中,以便扩展该虚拟机的能力而使其包括外部事件处理。更特别地,事件处理器能够被配置成检测外部事件并且相应地触发事件分配器。一旦被触发,事件分配器就能够广播可由事件监视器自服务器端程序范围内检测的虚拟机事件。然后,响应在每个事件监视器中的每一检测,一规定的动作能够被触发。
本发明的一个方面能够包括一种用于在运行于虚拟机的服务器端程序中处理外部事件的方法。该方法能够包括在所述服务器端程序中开始第一进程。在一个实施例中,第一进程能够由第一线程执行。该方法还能启动第一事件监视器,以响应所述第一进程。在包括第一线程的一个实施例中,事件监视器能够被链接到第一线程。然后,一虚拟机事件能够被广播,以响应一在该虚拟机外部发生的外部事件。该虚拟机事件能够被第一事件监视器检测,从而产生第一程序响应。
例如,在一特定实施例中,HTTP(超文本传输协议)客户机能够提交一外部事件至Web服务器。在该Web服务器中的一虚拟机能够执行一服务器端程序,例如一Java小服务程序。响应该外部事件,一例如线程终止事件等的内部事件能够被广播。该线程终止事件能够被第一事件监视器检测,从而导致第一线程终止。一旦该线程已经终止,则第一事件监视器能够被终止。在另一实施例中,第一线程能够根据完成其被分配的任务而终止。其后,第一事件监视器也能被终止。
在一个实施例中,在第一进程仍在执行的同时,在所述服务器端程序中能够开始第二进程。被与第一进程类似的方式,该第二进程能够引起第二事件监视器的启动,该第二事件监视器能够检测一个或多个虚拟机事件并且产生第二程序响应。该第二进程能够由第二线程执行。特别地,第一事件监视器和第二事件监视器都能够检测单个的虚拟机事件。虽然如此,第一程序响应也能够不同于第二程序响应。而且,特定的虚拟机事件可以由第一事件监视器检测并且不由第二事件监视器检测。
本发明的另一方面能够包括一种用于在虚拟机中配置外部事件处理器的方法。该方法能够调用一服务器端程序,例示一被配置成广播至少一个虚拟机事件的事件分配器,并且在服务器端程序中启动至少一个进程。另外,对于启动的每个进程,一事件监视器能够被启动。该事件监视器能够被配置成检测至少一个虚拟机事件。在一个实施例中,该方法能够接收一个外部事件,并且触发所述事件分配器,使其广播至少一个虚拟机事件,以响应所述外部事件。例如,在一特定实施例中,所述外部事件可以是一程序中断,该中断引起一虚拟机事件的广播,从而导致运行在所述服务器端程序中的每个进程的终止以及所述服务器端程序的终止。特别地,不是所有的事件监视器能够检测的虚拟机事件都必须是由事件分配器广播的虚拟机事件。
本发明的再一个方面能够包括一种用于在服务器端程序中处理外部事件的系统。该系统能够包括一安排在服务器中的虚拟机,以及一安排在所述虚拟机中的事件处理器,该事件处理器被配置成接收至少一个外部事件。在一个实施例中,该服务器可以是一个能够响应HTTP(超文本传输协议)客户机的Web服务器。该系统还能包括一安排在所述虚拟机中的服务器端程序,该服务器端程序被配置成处理至少一个客户机请求。特别地,所述服务器端程序的多个实例能够在所述虚拟机中同时操作。在一具体实施例中,所述服务器端程序可以是一个小服务程序。
该系统还能包括一安排在所述服务器端程序中的事件分配器,该事件分配器被配置成广播至少一个虚拟机事件,以响应由所述事件处理器启动的广播触发器。而且,该系统能够包括至少一个虚拟机事件监视器,其中每个虚拟机事件监视器能够被链接至一根据客户机请求产生的规定的进程。每个虚拟机事件监视器能够检测至少一个虚拟机事件并且相应地对其被链接到的进程起作用。在一个实施例中,所述服务器端程序能够采用面向对象的方法构成。在这样的实施例中,一包容器对象能够包含服务器端程序对象以及事件分配器对象。该事件分配器对象能够包含多个方法,这些方法包括添加虚拟机事件监视器方法,删除虚拟机事件监视器方法和广播虚拟机事件方法。


在附图中给出了一些实施例,这些实施例当然是优选的,但是,应该理解的是,本发明不限于图中示出的确切的装置和手段。
图1是一示意图,描述了根据这里公开的本发明装置的一示例性的服务器端程序。
图2是一流程图,描述了根据这里公开的本发明装置的在服务器端程序实例中处理外部事件的方法。
具体实施例方式
这里公开的本发明提供了一种用于虚拟机(VM)中的服务器端程序处理外部事件的系统和方法。许多常规的服务器端程序,例如小服务程序等,只能同步处理客户机请求,因此,在采取进一步的动作之前,需要所述请求的客户机等待一响应。本发明提供了一种方法,其中一另外的同步的服务器端程序能够响应外部事件。更具体地,一外部事件能够由VM接收。响应该外部事件,一内部事件(VM事件)能够在VM中被广播。该VM事件能够被正在执行的服务器端程序检测,从而产生在所述正在执行的服务器端程序中的规定的动作。
图1是一示意图,描述了一用于根据这里公开的本发明装置的一示例性的服务器端程序的系统100。系统100可以包括服务器135,虚拟机140,事件处理器150,程序实例155,以及事件分配器160。服务器135可以是一被配置成接收和完成来自客户机程序的请求的计算设备。例如,在一个实施例中,服务器135可以是一Web服务器,该Web服务器通过网络130,向例如客户机105和110等请求客户机提供Web页。
虚拟机140可以是一在编译的程序执行代码与特定硬件平台之间的接口,该虚拟机被配置成用作逻辑定义的处理器。因此,虚拟机140可以允许建立能够运行在任意硬件平台上的应用程序,而不必由程序员相对于每一单独的平台重写或重新编译。在一个实施例中,虚拟机140可以是Java虚拟机,该Java虚拟机规定了一指令集,一组寄存器,一堆栈,一废料堆(garbage heap)和一方法区。
程序实例155可以是一配置成在虚拟机140中操作的服务器端程序的例示。一旦被加载和例示,程序实例155就能够处理多个请求。在一个实施例中,由程序实例155处理的每个请求可以是能够执行规定任务的单独的线程。在一其中的服务器端程序是Java小服务程序的特定实施例中,程序实例155可以是一小服务程序实例。程序实例155可以包括线程165和170,事件监视器175和180,以及事件分配器160。特别地,在特定实施例中,用于单个程序的多个程序实例可以在虚拟机140中同时运行。另外,在其它的实施例中,各个不同的程序及其一个或多个实例可以在虚拟机140中同时运行。
线程165和170可以是能够并行操作的执行流。通过在程序实例155中应用线程165和170而不是单独的进程实例,可以获得许多优势。例如,比较线程和单独的进程,线程可以要求实质上较低的负载,可以执行得更快,并且可以利用多个中央处理器(CPU)。在一个实施例中,可以建立线程池,其中每个任务可以利用一可获得的线程。然后,根据任务的完成,线程能够被返回到一“空闲”池中。这样的实施例能够减小与线程的建立和终止相关的开销。在另一实施例中,能够根据需要来建立和终止线程。
事件监视器175和180能够检测在虚拟机140中产生的已定义的事件并且对其起反应。这些VM事件将不同于事件监视器175和180不能检测的外部事件。在一特定实施例中,只要一监视的事件被检测到,事件监视器175和180就能够触发开发者规定的动作。另外,事件监视器175和180可以是嵌入到虚拟机140本身中的逻辑部件。因此,开发者可以利用这些预先建立的事件监视器而没有大范围的开发支出。例如,在一个实施例中,事件监视器175和180可以是Java收听站(listener),该收听站被配置成检测Java虚拟机中的事件,例如超时事件,建立事件,初始化事件和撤消事件,以及属性的增加、删除和修改。在另一实施例中,事件监视器175和180可以分别被链接至特定的线程,例如线程165和170。
事件分配器160可以包含用于添加和删除事件监视器的方法,该事件监视器包括事件监视器175和180,还可以包含用于广播VM事件至一个或多个事件监视器的方法。例如,在一个实施例中,事件分配器160可以广播一VM事件,其中事件监视器175被配置成检测该VM事件。在检测所述被监视的VM事件时,事件监视器175可以终止线程165的执行,其中事件监视器175被链接至线程165。在另一实施例中,事件分配器160可以广播一VM事件,其中事件监视器175和事件监视器180都被配置成检测该VM事件。特别地,事件处理器150可以接收一外部事件,并且相应地触发事件分配器160以便广播一个或多个VM事件。
在一个实施例中,事件处理器150可以保持一外部对内部数据事件的相互对照列表以便于其操作。应该强调的是,单个外部事件能够导致多个VM事件的广播,或者可选择的是,导致非VM事件的广播。例如,在一特定实施例中,具有运行在程序实例155中的多个进程的客户机115能够发送一外部请求以便终止所有的进程。因此,事件处理器150可以触发一用于每个进程的将被广播的VM事件,其中所述每个进程运行在由所述客户机启动的程序实例155中。类似地,在另一实施例中,事件分配器160可以保持执行VM事件与相关事件监视器的相互对照列表,以便保持VM事件和事件监视器之间的适当的关系。
特别地,在一个实施例中,包括事件监视器175和180在内的每一事件监视器,能够检测多个事件并且可以包含只要任一指定的事件发生就触发的可执行代码。另外,有些可由事件监视器检测的事件可以是不由事件分配器160广播的事件。例如,在一特定实施例中,事件监视器175可以包含一进程状态方法,其中只要一进程VM事件被广播,该方法就被触发。
在利用线程池的另一实施例中,只要一线程位于空闲线程区内,一事件监视器就可以被无效。因此,只要线程165完成处理并返回线程池,事件监视器175就可以检测任务完成,并且触发一使其自身无效的事件监视器方法。应该注意的是,由事件监视器175检测的线程完成事件不是被广播的VM事件。
在操作中,客户机105可以经由网络130传送一外部请求115至服务器135。然后,服务器135可以转发请求115至虚拟机140。响应该请求,一服务器端程序可以被虚拟机140加载并且被例示为程序实例155。当程序实例155被初始化时,一相应的事件分配器160也可以被例示。其后,可以产生线程165以响应请求115。而且,事件监视器175能够被例示并链接至新建立的线程165。然后,客户机110可以经由网络130传送外部请求125至服务器135。通过与上面刚刚提及的相似的步骤,一个新的线程,与事件监视器180相关联的线程170能够在程序实例155中被建立。
这里,客户机105可以经由网络130传送外部事件120至服务器135。然后,事件处理器150能够检测外部事件120,并且相应地触发事件分配器160以广播一VM事件。然后,事件分配器160可以广播事件监视器175和180能够检测的指定的VM事件。最后,响应被检测的事件,事件监视器175和180可以执行预先规定的动作。
应该注意的是,前述的例子示出了一种利用外部事件中断的可能的实施例。本发明考虑了许多其它的应用。例如,在另一实施例中,本发明能够与例如一话音识别服务器等的远程服务器资源一起被应用,其中的远程服务器资源被配置成执行复杂任务。由于包括话音识别任务在内的这些任务中的每一个要花费大量执行时间,因此,在每个话音识别任务由远程服务器资源处理时,能够有利于提高服务器135的空闲程度。因此,每个话音识别任务能够被异步地返回到服务器135。从而,话音识别任务的完成可以触发一能够由服务器135处理的话音识别完成事件。
图2是一流程图,描述了根据这里公开的本发明装置的在服务器端程序实例中处理外部中断的方法200。方法200能够在客户机/服务器体系结构的环境中被执行,其中相对于接收和完成的每一任务,线程都被建立和终止。该方法可以开始于步骤202,在该步骤中,服务器能够接收一来自客户机的请求。例如,在一个实施例中,客户机能够通过Web浏览器提交一请求至Web服务器。在步骤204中,该服务器能够接收该请求并且将其转发至一安排在该服务器内部的虚拟机。
在步骤206中,一程序实例能够被例示,以用于处理所述请求。如果该程序实例当前没有被加载在存贮器中,则在例示之前可以出现加载操作。特别地,在步骤208中,此时一事件分配器也能被例示。在步骤210,在用于处理所述请求的程序实例中,一线程可以被初始化。特别地,线程可以是一能够与其它线程并行操作的执行流。
在步骤212中,对于所述线程,可以添加一事件监视器。该事件监视器能够检测在虚拟机中出现的已定义的事件并且对其起反应。事件监视器能够检测的事件包括但不限于初始化,撤消,属性修改,属性添加,无效和超时。例如,事件监视器能够为了线程终止事件而监视线程。特别地,在一个其中的程序实例为小服务程序实例的实施例中,事件监视器可以是一个收听站对象。在步骤214中,在事件监视器已经添加到线程中后,该线程可以开始执行其被分配的任务。
在步骤216中,方法200能够搜索要求处理的其它请求。如果存在其它的请求,则该方法能够进行到步骤218,在步骤218中服务器能够接收来自所述客户机的另一个请求。然后,该方法能够进行到步骤210、212和214,在这些步骤中,对于所述新的请求,一新的线程和事件监视器能够在程序实例中被启动,并且该新的线程能够开始执行。特别地,一给定的程序实例能够同时执行多个线程,而其中的每个线程能够对应一个请求。
如果没有另外的请求,则该方法能够进行到步骤220,在步骤220中,该方法能够检测线程的终止。如果一线程已经终止,则步骤222能够被执行并且其事件监视器能够被删除。明显地,线程能够根据任务的完成而被终止。一旦事件监视器被删除,该方法就能进行到步骤224。
如果没有线程终止,则所述方法能够进行到步骤224。在步骤224中,该方法能够检测外部事件。特别地,外部事件可以涉及当前处理的请求。例如,外部事件可以是一终止用户先前请求的数据库搜索的请求。如果外部事件被检测,则该方法能够进行到步骤226,否则该方法可以进行到步骤228。
在步骤226中,外部事件能够由一事件处理器解释。该事件处理器能够使得事件分配器广播一事件,以响应该外部事件。例如,在一个实施例中,外部事件可以是一进入Web主页的客户机请求。假定同一客户机当前处于等待周期直到一先前的请求被满足为止,则该事件处理器能够确定终止所述先前的客户机请求是合适的。因此,该事件处理器能够使得该事件分配器广播一线程终止事件至所述程序实例。在另一实施例中,该事件处理器能够保持一将外部事件关联到内部事件的列表。该列表能够用于所述虚拟机中,以便跟踪和保持适当的关系。
特别地,与线程相关联的并且被安排在所述程序实例中的各个事件监视器能够检测广播的事件。而且,所述事件分配器能够保持一在事件监视器与相应的线程之间的关联的列表。另外,事件监视器能够被配置成根据一被监视事件的检测而采取指定的动作。而且,在特定实施例中,例如其中的事件监视器被实现为面向对象的类的某些实施例中,这些指定的动作能够被编程并且存储在每个事件监视器中。在一个实施例中,所述指定的动作可以是终止一当前操作的线程。本领域的普通技术人员可以理解的是,由于按另外的方式,每个线程在被终止之前将不必完成执行,因此,通过方法200,服务器资源和客户机响应时间方面的性能都能够被增强。根据完成步骤226,所述方法能够进行到步骤228。
在步骤228中,所述方法能够确定在所述程序实例中是否还有任何线程正在处理。如果还有线程正在处理,则该方法跳转至步骤216并且重复前面详述的步骤。但是,如果没有线程还在处理,则该方法能够进行到其中所述程序实例可以被终止的步骤230。应该注意的是,虽然方法200描述本发明为一系列的步骤,但是,本发明能够是并且经常是一种事件驱动的解决方案,其中,当内部和外部事件产生时,该解决方案响应这些事件。
本发明能够以硬件,软件或者硬件与软件组合的方式实现。本发明能够以集中的方式在一个计算机系统中实现,或者以分布的方式实现,在该分布的方式中,不同部件被散布在几个互联的计算机系统中。适于实现这里描述的方法的任意一种计算机系统和其它装置是合适的。硬件与软件的一种典型组合可以是具有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,该计算机程序控制计算机系统,使得实现这里描述的方法。
本发明还能够被嵌入到一计算机程序产品中,该产品包括允许实现这里描述的方法的所有功能,并且,当被加载到计算机系统中时,该产品能够实现这些方法。在当前的上下文中的计算机程序意味着以任何语言,代码或符号形式的一组指令的任何表达,所述的一组指令想要使得具有信息处理能力的系统直接地,或者在下列两种情况之后,或者在下列两种情况的任一种之后执行特定的功能a)转换至另一种语言,代码或符号;b)以不同的物质形式再现。
在不脱离本发明的精神或其实质特征的情况下,本发明能够以其它形式实施。因此,当指示本发明的范围时,应当参考后面的权利要求,而不是前述的说明书。
权利要求
1.一种用于在运行于虚拟机的服务器端程序中处理外部事件的方法,包括步骤在所述服务器端程序中,开始第一进程;启动第一事件监视器,以响应所述开始步骤;广播一虚拟机事件,以响应一外部事件,其中所述外部事件是一发生在所述虚拟机外部的事件;利用所述第一事件监视器检测所述虚拟机事件;以及调用第一程序响应,以响应所述检测步骤。
2.如权利要求1的方法,其中所述开始步骤还包括初始化第一线程的步骤,其中所述第一进程由所述第一线程执行,并且其中,所述启动步骤还包括链接所述第一事件监视器至所述第一线程的步骤,以及其中,在所述调用步骤中的所述第一程序响应对所述第一线程起作用。
3.如权利要求2的方法,还包括步骤完成所述第一线程的执行;响应所述完成步骤,释放所述第一线程;以及响应所述释放步骤,撤消所述第一事件监视器。
4. 如权利要求1的方法,还包括步骤在所述服务器端程序中,开始第二进程;启动第二事件监视器,以响应开始所述第二进程的所述开始步骤;利用所述第二事件监视器检测所述虚拟机事件;以及调用第二程序响应,以响应利用所述第二事件监视器的所述检测步骤。
5.如权利要求4的方法,其中所述第一程序响应不同于所述第二程序响应。
6.如权利要求4的方法,其中开始所述第二进程的所述开始步骤还包括初始化第二线程的步骤,其中所述第二进程由所述第二线程执行,并且其中,启动所述第二事件监视器的所述启动步骤还包括链接所述第二事件监视器至所述第二线程的步骤,以及其中,在所述调用步骤中的所述第二程序响应对所述第二线程起作用。
7.如权利要求6的方法,其中所述虚拟机事件由所述第一事件监视器检测,并且其中,所述虚拟机事件由所述第二事件监视器检测。
8.如权利要求6的方法,其中所述虚拟机事件由所述第一事件监视器检测,并且其中,所述虚拟机事件不由所述第二事件监视器检测。
9.如权利要求1的方法,其中所述虚拟机被安排在一Web服务器中,并且至少一个利用所述服务器端程序的客户机是超文本传输协议的客户机。
10.如权利要求1的方法,其中所述服务器端程序是小服务程序。
11.一种用于在虚拟机中配置外部事件处理器的方法,包括步骤调用一服务器端程序;在所述服务器端程序中例示一事件分配器,该事件分配器被配置成广播至少一个虚拟机事件;在所述服务器端程序中启动至少一个进程;以及对于所述至少一个进程中的每一个进程,启动一事件监视器,该事件监视器被配置成检测至少一个虚拟机事件并且相应地对所述进程起作用,其中所述进程触发了启动所述事件监视器的所述启动步骤。
12.如权利要求11的方法,其中所述至少一个虚拟机事件中的至少一部分不被所述事件分配器广播,其中每个所述事件监视器被配置成检测所述至少一个虚拟机事件。
13.如权利要求11的方法,还包括步骤接收一个外部事件;以及触发所述事件分配器,使其广播至少一个虚拟机事件,以响应所述外部事件。
14.如权利要求13的方法,其中所述外部事件是一程序中断事件,其中所述方法还包括步骤终止运行在所述服务器端程序中的所述至少一个进程中的每一个进程;以及终止所述服务器端程序。
15.一种用于在服务器端程序中处理外部事件的系统,包括一安排在服务器中的虚拟机;一安排在所述虚拟机中的事件处理器,该事件处理器被配置成接受至少一个外部事件;一安排在所述虚拟机中的服务器端程序,该服务器端程序被配置成处理至少一个客户机请求;一安排在所述服务器端程序中的事件分配器,该事件分配器被配置成广播至少一个虚拟机事件,以响应由所述事件处理器启动的广播触发器;以及至少一个虚拟机事件监视器,其中每个虚拟机事件监视器被链接至一根据所述至少一个客户机请求中的一个请求产生的指定的进程,并且其中每个虚拟机事件监视器能够检测至少一个虚拟机事件并且相应地对所述指定的进程起作用。
16.如权利要求15的系统,其中所述服务器是一Web服务器,并且所述至少一个客户机请求包括到至少一个超文本传输协议的请求。
17.如权利要求15的系统,其中所述服务器端程序的多个实例能够在所述虚拟机中同时操作。
18.如权利要求15的系统,其中所述服务器端程序能够采用面向对象的方法构成,其中包括一包容器对象,该包容器对象包含服务器端程序对象和事件分配器对象。
19.如权利要求18的系统,其中所述该事件分配器包括一个或多个方法,所述方法包括添加虚拟机事件监视器方法;删除虚拟机事件监视器方法;以及广播虚拟机事件方法。
20.如权利要求15的系统,其中所述服务器端程序是小服务程序。
21.一种机器可读的存储器,其上存储有一计算机程序,该程序具有多个代码段,可由一机器执行的所述代码段用于使得该机器执行下列步骤在所述服务器端程序中,开始第一进程;启动第一事件监视器,以响应所述开始步骤;广播一虚拟机事件,以响应一外部事件,该外部事件是一发生在所述虚拟机外部的事件;利用所述第一事件监视器检测所述虚拟机事件;以及调用第一程序响应,以响应所述检测步骤。
22.如权利要求21的机器可读的存储器,其中所述开始步骤还包括初始化第一线程的步骤,其中所述第一进程由所述第一线程执行,并且其中,所述启动步骤还包括链接所述第一事件监视器至所述第一线程的步骤,以及其中,在所述调用步骤中的所述第一程序响应对所述第一线程起作用。
23.如权利要求22的机器可读的存储器,还包括步骤完成所述第一线程的执行;响应所述完成步骤,释放所述第一线程;以及响应所述释放步骤,撤消所述第一事件监视器。
24.如权利要求21的机器可读的存储器,还包括步骤在所述服务器端程序中,开始第二进程;启动第二事件监视器,以响应开始所述第二进程的所述开始步骤;利用所述第二事件监视器检测所述虚拟机事件;以及调用第二程序响应,以响应利用所述第二事件监视器的所述检测步骤。
25.如权利要求24的机器可读的存储器,其中所述第一程序响应不同于所述第二程序响应。
26.如权利要求24的机器可读的存储器,其中开始所述第二进程的所述开始步骤还包括初始化第二线程的步骤,其中所述第二进程由所述第二线程执行,并且其中,启动所述第二事件监视器的所述启动步骤还包括链接所述第二事件监视器至所述第二线程的步骤,以及其中,在所述调用步骤中的所述第二程序响应对所述第二线程起作用。
27.如权利要求26的机器可读的存储器,其中所述虚拟机事件由所述第一事件监视器检测,并且其中,所述虚拟机事件由所述第二事件监视器检测。
28.如权利要求26的机器可读的存储器,其中所述虚拟机事件由所述第一事件监视器检测,并且其中,所述虚拟机事件不由所述第二事件监视器检测。
29.如权利要求21的机器可读的存储器,其中所述虚拟机被安排在一Web服务器中,并且至少一个利用所述服务器端程序的客户机是超文本传输协议的客户机。
30.如权利要求21的机器可读的存储器,其中所述服务器端程序是小服务程序。
31.一种机器可读的存储器,其上存储有一计算机程序,该程序具有多个代码段,可由一机器执行的所述代码段用于使得该机器执行下列步骤调用一服务器端程序;在所述服务器端程序中例示一事件分配器,该事件分配器被配置成广播至少一个虚拟机事件;在所述服务器端程序中启动至少一个进程;以及对于所述至少一个进程中的每一个进程,启动一事件监视器,该事件监视器被配置成检测至少一个虚拟机事件并且相应地对所述进程起作用,其中所述进程触发了启动所述事件监视器的所述启动步骤。
32.如权利要求31的机器可读的存储器,其中所述至少一个虚拟机事件中的至少一部分不被所述事件分配器广播,其中每个所述事件监视器被配置成检测所述至少一个虚拟机事件。
33.如权利要求31的机器可读的存储器,还包括步骤接收一外部事件;以及触发所述事件分配器,使其广播至少一个虚拟机事件,以响应所述外部事件。
34.如权利要求33的机器可读的存储器,其中所述外部事件是一程序中断事件,其中所述方法还包括步骤终止运行在所述服务器端程序中的所述至少一个进程中的每一个进程;以及终止所述服务器端程序。
全文摘要
一种用于在运行于虚拟机的服务器端程序中处理外部事件的方法,可以包括在该服务器端程序中开始第一进程和相应地启动第一事件监视器。该方法能够广播一虚拟机事件,以响应一外部事件,该外部事件是一发生在所述虚拟机外部的事件。所述第一事件监视器能够检测所述虚拟机事件并且调用第一程序响应。
文档编号G06F9/46GK1506810SQ20031011697
公开日2004年6月23日 申请日期2003年12月3日 优先权日2002年12月9日
发明者V·S·穆尔, W·L·努斯比克尔, V S 穆尔, 努斯比克尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1