CN1302409C - 爪哇小服务程序和http客户机间异步消息接发的系统和方法 - Google Patents

爪哇小服务程序和http客户机间异步消息接发的系统和方法 Download PDF

Info

Publication number
CN1302409C
CN1302409C CNB028229932A CN02822993A CN1302409C CN 1302409 C CN1302409 C CN 1302409C CN B028229932 A CNB028229932 A CN B028229932A CN 02822993 A CN02822993 A CN 02822993A CN 1302409 C CN1302409 C CN 1302409C
Authority
CN
China
Prior art keywords
servlet
response
request
client computer
http
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CNB028229932A
Other languages
English (en)
Other versions
CN1639703A (zh
Inventor
亚当·梅辛杰
萨姆·普拉拉
戴夫·布朗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
BEA Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEA Systems Inc filed Critical BEA Systems Inc
Publication of CN1639703A publication Critical patent/CN1639703A/zh
Application granted granted Critical
Publication of CN1302409C publication Critical patent/CN1302409C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Abstract

在使用小服务程序的传统服务器中,当把请求调度给线程时调用适当的小服务程序的服务方法。当该服务方法返回时,发送响应。在可以发送响应之前必须发生异步事件的情况下,这不是最佳的,因为运行该小服务程序的线程必须阻塞到该事件发生为止。本发明提供了这种请求(510)的异步处理。在一个实施例中,本发明提供了小服务程序API的扩展,其允许服务器方法(514)返回(516),从而在准备好发送请求之前释放线程。这样,当异步事件在以后(520)发生时,可以完成和发送响应(518,522,524)。

Description

爪哇小服务程序和HTTP客户机间异步消息接发的系统和方法
版权通知
本专利文献的部分公开内容包含受到版权保护的内容。当其在专利商标局专利文件或记录中出现时,版权所有人不反对任何人影印复制该专利文献或该专利公开,否则无论如何都保留所有版权。
优先权声明
本申请要求享受2001年10月5日提交的申请号为60/327,530的临时专利申请“SYSTEM FOR APPLICATION SERVER MESSAGING WITHASYNCHRONOUS QUEUES(用于与异步队列进行消息接发的应用服务器的系统)”的优先权,通过引用将该申请合并于此。
技术领域
本发明总的涉及应用和事务服务器,特别涉及用于支持消息排队和具有多重执行队列的线程的系统。
交叉引用
本申请涉及2001年10月5日提交的申请号为60/327,543的临时申请“SYSTEM FOR APPLICATION SERVER MESSAGING WITH MULTIPLEDISPATCH POOLS(用于与多重调度池进行消息接发的应用服务器的系统)”和2002年10月3日提交的申请号为 10/264,439、发明人为Adam Messinger和Don Ferguson的实用新型专利申请“SYSTEM FOR APPLICATION SERVERMESSAGING WITH MULTIPLE DISPATCH POOLS(用于与多重调度池进行消息接发的应用服务器的系统)”,通过引用将这两个申请都合并于此。
背景技术
Java 2平台企业版(J2EE)规范定义了一种用于开发多层企业应用程序的现行标准。J2EE提供了一种设计、开发、组装以及调配(deployment)企业应用程序的基于组件的途径,其既减小了成本,又允许集中设计和实现。J2EE平台为开发者提供了多层分布式应用模型、重新使用组件的能力、统一的安全模型以及灵活的事务控制。其不但可以提供能比以前更快地进行销售的革新的用户解决方案,而且所得到的独立于平台的、基于组件的J2EE解决方案并不受任何一个厂商的产品和应用程序接口(API)的约束。
J2EE规范定义了下述种类的组件:应用客户机组件;企业Java豆(EJB,Enterprise JavaBean);小服务程序(servlet)和Java服务器页面(JSP)(也称为网络组件);以及小程序(applet)。多层分布式应用模型意味着根据功能将应用逻辑划分为多个组件,而多个不同的应用组件可以组成同一个或不同服务器上的J2EE应用程序。应用组件实际安装在哪里取决于该应用组件属于多层J2EE环境中的哪一层。图1中描绘了这些层。如其中所示,应用服务器层104用于开发EJB容器和/或诸如servlet、JSP、以及html页面的显示(presentation)容器114。而这些又用作客户机层102与后端层106之间的接口,其中在客户机层102调配客户机108和客户机应用程序,而后断层106用于容纳诸如企业资源计划(ERP)系统的企业或遗留(legacy)应用程序。
客户机层——其可以是浏览器、基于Java的程序或其它客户机层内运行的网络激活编程环境,既可在公司防火墙之内也可在公司防火墙之外。
应用服务器层——通常这一层容纳显示逻辑和业务逻辑的组合,以支持客户机请求。显示逻辑通过JSP页面和显示HTML页面的servlet支持,而业务逻辑通过远程方法调用(RMI)对象和EJB112支持。EJB依赖于事务、生命周期、状态管理、资源共享、安全性等的容器环境,其一起组成豆(bean)执行的运行时间环境。
后端层——这一般是现有应用程序和数据存储的组合。由于其可能包括诸如企业资源计划(ERP)、主机事务处理、数据库系统以及其它遗留信息系统的系统,所以其也被称为企业信息系统(EIS)层。
由于J2EE应用程序的组件分离地、并且经常在不同的器件上运行,所以需要有客户机和应用服务器层代码查找并引用其它代码和资源的方式。客户机和应用程序代码可以例如使用Java命名和目录接口(JNDI)116来查找用户定义的诸如企业豆的对象,以及诸如Java数据库连接器(JDBC)数据资源对象的位置和消息连接的环境条目,而所述位置又用于查找后端层中的资源。
可以在调配时间在网络和企业豆组件上配置诸如安全性和事务管理的应用程序行为。这一调配时间特征使应用逻辑与可能随组装而改变的配置设置分离开来。J2EE安全模型让开发者配置网络或企业豆组件,使得仅由授权用户访问系统资源。例如,网络组件可以配置为提示输入用户名和密码。企业豆组件可以配置为只有特定组中的人员才可以调用其方法中的某些种类。或者,servlet组件可以配置为其一些方法可以被每个人访问,而一些方法仅被一个组织中某些有特权的人访问。相同的servlet组件可以对另一个环境配置为所有方法都可以被每个人访问,或者所有方法都只能被选定的少数人访问。
一些应用服务器,例如BEA系统公司,San Jose,California的WebLogic服务器产品,使用访问控制表(ACL)机制,其允许对服务器上运行的组件的利用进行精细控制。利用ACL,开发者可以在Java方法级定义哪个用户或哪组用户可以或不可以执行什么。这一ACL机制覆盖了在应用服务器上运行的任何内容,除了在EJB规范中定义了其自身的访问控制机制的EJB之外。安全领域允许管理员从现有授权或授权系统中引入信息到ACL。
Java Servlet
servlet是扩展网络服务器的功能性的程序。servlet接收来自客户机的请求,动态产生响应(可能查询数据库以满足该请求),然后向客户机发送包含HTML或XML文件的响应。servlet与CGI类似,但是因为servlet使用Java类和流,所以通常更容易编写。因为servlet被编译为Java字节代码,并且在运行时间servlet实例保持在存储器中,所以其执行更快,每个客户机请求产生一个新线程。servlet使得以动态方式产生数据给HTTP响应流更加容易。每个客户机请求作为新连接执行,因此请求之间的流控制并不容易。为此,会话管理维持特定客户机在请求间的状态。在一些应用服务器中,servlet使用HTTP会话对象来保存其在方法请求之间的状态。为了排除故障,这一对象可以在集群的环境中复制。
Java服务器页面
JSP页面是基于文本的、用于开发servlet的显示中心(presentation-centric)方式。JSP页面提供servlet的所有优点,当其与JavaBean类合并时,提供一种使内容和显示逻辑保持分离的容易的方式。JSP页面和servlet都比公共网关接口(CGI)更理想,这是因为其是独立于平台的,并且使用较少的开销。JSP页面可以与JavaBean类一同使用,来定义用于建立由具有相似外观和感觉的页面组成的网站的网络模板。JavaBean类执行数据呈现(rendering),因此模板中没有Java代码。这意味着模板可以由HTML编辑器维持。使用JSP页面的、简单的基于网络的应用程序可以用于使用自定义标记或小脚本(scriptlet)取代JavaBean类来将内容绑定到应用逻辑上。自定义标记被插入标记库中,而标记库被引入到JSP页面中。scriptlet是直接嵌入JSP页面的小Java代码段。
Java消息接发服务(JMS)
JMS是用于支持Java程序之间的消息交换的J2EE机制。即Java如何支持异步通信,其中发送者和接收者不需要彼此了解,因此可以独立操作。JMS当前支持两种消息接发模型:
点对点——其基于消息队列。在这种模型中,消息产生者将消息发送到队列中。消息用户可以将其自身附在队列上以倾听消息。当消息到达队列时,用户将其从队列中取出,并对其响应。消息可以仅发送到一个队列,并仅由一个用户使用。用户具有过滤消息以指定其想要的确切消息类型的选项。
出版和定购——其允许产生者向一个主题、并向该主题的所有注册用户发送消息,以检索这些消息。在这种情况下,许多用户可以接收相同的消息。
现有Servlet API的一个问题是完全同步的编程模型。在将请求调度到特定的线程之后,调用适当的servlet的服务()方法。当该服务()方法返回时,发送响应。这是一种简单的编程模型,其适于许多类型的工作,但是在发送响应之前必须发生异步事件的情况下不是最优的,因为运行servlet的线程必须阻塞到该事件发生为止。
发明内容
本发明提供了一种用于异步穿线的系统和方法,其允许服务()方法在准备好发送请求之前返回(从而允许释放线程)。这样,当以后发生异步事件时,可以完成和发送响应。这一机制的示例使用是结合servlet使用JMS。
根据本发明,当执行servlet时开始该过程。servlet建立部分响应,但是通常需要更多数据来完成该响应。在servlet等待的同时,其将请求数据的JMS消息排入队列,并在包含所需数据的JMS消息到达时,将响应对象设置在可能发现其的地方旁边。在这一点上,servlet可以返回,但是还不会发送响应。在稍后的时间点,当数据经由例如JMS到达时,检索对应的响应对象。然后可以产生剩余的响应。当响应完成时,可以将其明确地发送给客户机。
这一特征还可以通过使用JSP标记库而获得。利用标记,JSP页面创作者指定什么工作应在异步时间之前进行,而哪个工作应该在异步事件之后进行。这一特征与JSP上下文机制结合,以确保其在异步事件之后恢复,并且不受干扰地继续处理。
本发明提供一种用于在爪哇小服务程序和HTTP客户机之间进行异步消息接发的系统,包括:服务器,包括小服务程序容器、小服务程序和小服务程序响应处理器,其中小服务程序容器包括HTTP接口,其从HTTP客户机接收请求,并向HTTP客户机发送响应,并且其中小服务程序容器将来自HTTP客户机的请求发送到小服务程序,然后其中所述小服务程序承担处理所述请求的任务,包括:从小服务程序容器接收请求,并通过所述小服务程序响应处理器立即返回部分响应的数据,以解除小服务响应处理器对完整响应的等待,设置将在后续响应中使用的响应代码,释放所述响应处理器以交替处理来自所述HTTP客户机或其它HTTP客户机的后续请求,和接着通过查找所请求的信息、重新设置响应代码、经由所述小服务程序响应处理器向所述HTTP服务器发送信息来处理初始的请求。
本发明还提供一种用于在爪哇小服务程序和HTTP客户机之间进行异步消息接发的方法,包括以下步骤:从HTTP客户机接收访问包含在小服务程序容器中的小服务程序的请求;以及异步响应所述请求,包括步骤:在小服务程序处从小服务程序容器接收请求,并通过所述小服务程序响应处理器立即返回部分响应的数据,以解除小服务响应处理器对完整响应的等待,设置将在后续响应中使用的响应代码,释放所述响应处理器以交替处理来自所述HTTP客户机或其它HTTP客户机的后续请求,和接着通过查找所请求的信息、重新设置响应代码、经由所述小服务程序响应处理器向所述HTTP客户机发送信息来处理初始的请求。
附图说明
图1展示了可以利用本发明的J2EE兼容体系结构。
图2展示了根据本发明实施例的具有异步线程池的穿线策略。
图3展示了同步穿线处理的图。
图4展示了使用传统方法处理的单个HTTP请求的生命周期。
图5展示了使用异步消息接发处理的单个HTTP请求的生命周期。
图6展示了使用传统方法处理的多个HTTP请求的生命周期。
图7展示了使用异步消息接发处理的多个HTTP请求的生命周期。
具体实施方式
经过广泛地描述,本发明提供了一种允许异步穿线的系统和方法。本发明可以并入允许经由应用程序接口(API)访问servlet的应用服务器系统,或并入受益于异步穿线的其它系统中。
典型的Servlet API是完全同步的。在将请求调度给线程之后,调用适当的servlet的服务()方法。当该服务()方法返回时,发送响应。这种简单的编程模型适于许多类型的工作,但是在发送响应之前必须发生异步事件的情况下不是最优的,因为运行servlet的线程必须阻塞到该事件发生为止。
在一个实施例中,本发明提供了Servlet API的扩展,其允许服务()方法在准备好发送请求之前返回(从而允许释放线程)。这样,当以后发生异步事件时,可以完成和发送响应。这一机制的一个示例使用是结合servlet使用JMS。
在这一实施例中,当执行servlet时,其建立部分响应,但是通常需要更多数据来完成该响应。servelt将请求数据的JMS消息排入队列,并在包含所需数据的JMS消息到达时,将响应对象设置在可能发现其的地方旁边。在这一点上,servlet可以返回,但是还不会发送响应。稍后,当请求的数据经由JMS到达时,检索响应对象。然后可以产生剩余的响应。当完成时,可以明确地发送给客户机。
本发明主要设计用于应用、事务以及消息接发服务器,例如BEA系统公司提供的WebLogic系列产品。典型服务器设计的核心是穿线模型,即分配线程执行工作请求的策略。当servlet请求到达服务器时,将其调度给线程。这一线程负责执行被请求的servlet。服务器采用使用两个线程池、即异步池(通常称为读取线程)和同步池(称为执行线程)的穿线模型。池的这种组合允许开发者或管理员有效地给请求设定优先级,同时容许执行阻塞操作的用户代码。
图2展示了根据本发明实施例的穿线策略机制206。异步线程池208等待用于异步读取结果的异步输入机制202(多路复用器(muxer))变得可用。一旦有结果可用,来自池中的线程查看消息,并通过进行适当的回叫来调度该消息。调度回叫通常将要求由同步线程池进行后面处理的请求排入队列。然而,某些非阻塞的有优先级的请求在回叫中被直接服务。通过积极地接受输入,在低优先级的请求212运行的同时,高优先级的请求214不等待被读取。由于这些线程应该从不阻塞,所以通常其数量较少,可能每个CPU只有一个。
同步线程池210等待请求的队列204。一旦有请求可用,来自池中的线程从队列中取出请求,对其进行处理,并发出结果216。在处理请求的同时,线程可以执行代码,例如发出结果,这导致线程阻塞。所以,应该调节线程数,以使得每个CPU中总有一个线程处于可运行状态。在2001年10月5日提交的申请号为60/327,543、发明人为Adam Messinger、题为“SYSTEM FORAPPLICATION SERVER MESSAGING WITH MULTIPLE DISPATCH POOLS(用于与多重调度池进行消息接发的应用服务器的系统)”的临时申请和2002年10月3日提交的申请号为 10/264,439、发明人为Adam Messinger和DonFerguson、题为“SYSTEM FOR APPLICATION SERVER MES SAGING WITHMULTIPLE DISPATCH POOLS(用于与多重调度池进行消息接发的应用服务器的系统)”的实用新型专利申请中更详细的描述了该调度策略。
图3展示了传统同步消息响应机制。如图中所示,将来自客户机应用程序302的请求,例如网络浏览器应用程序,经由servlet 304发送到应用服务器。该请求可以是超文本传输协议(http)请求306的形式,对此客户机通常期望超文本标记语言(html)响应308。在同步模型中,线程执行servlet,然后当servlet的执行完成时立即向客户机发送响应。这一方案的问题在于在servlet的整个执行中消耗了执行线程。如果servlet正在执行可能因等待其它数据而阻塞的任务,则这可以表示服务器资源的浪费。
图4图解了客户机访问服务器资源的典型系统生命周期。如图4所示,HTTP客户机402访问servlet 408,其通常在远程网络服务器上运行。对本领域技术人员而言显而易见的是,尽管这里为了说明目的示出了HTTP客户机,但是本发明不限于此,而是可以使用其它类型的客户机应用程序。如图4中的生命周期图所示,HTTP客户经由servlet容器404访问servlet。servlet容器负责接收HTTP请求410,并将其传送给servlet 408进行处理。处理这一HTTP请求的许多操作在servlet响应级406发生。如图4所示,随着时间沿页面垂直地增加,该过程以由响应处理器406处理的对servlet的:init(初始化)调用412继续。然后servlet容器将:service(服务)请求414传送给servlet以例如检索或更新数据。这样的系统典型地用于电子商务环境,其中客户机应用程序设计为检索目录列表,例如搜索飞行时间的结果等。servlet通常通过将输出416写到servlet响应处理器中来响应请求。经常为了缓冲和优化的目的而需要这一步骤。当servlet容器随后请求将响应返回到客户机时,其向响应处理器发送:send(发送)请求418,而响应处理器向servlet容器返回:sendresponse(发送响应)420。然后将该响应作为HTTP响应422发送给客户机。
图5图解了可以根据本发明的实施例使用的类似生命周期。如图5所示,再次使用HTTP客户机502访问远程服务器、服务器资源或servlet 508。HTTP请求510由向servlet响应处理器506发布:init请求512的servlet容器504处理。然而此时,当:service请求514被发送到servlet处理时,servlet立即返回516到响应处理器。这一即时返回释放了响应处理器以处理随后的请求,因为其不需要为了处理那些请求而等待servlet积极地返回数据。在一段时间t520之后,当servlet具有要返回给该请求的适当的数据时,其向响应处理器发送:send信号518,然后响应处理器向servlet容器发送:send response 522。和前面一样,后续的HTTP响应524被发送到客户机。
作为上述过程的一部分,servlet设置响应代码,直到其具有其它内容要发送,这有效地负责远离容器级的响应,并将其至于servlet级。在实践中,可以将servlet等待发布:send响应的时间量定义为某个任意量,或者可以作为异步消息的结果执行,例如作为接收指示已有信息可用于发送给客户机的JMS消息的结果。这种类型的处理在例如用户在等待搜索结果时通常经历延迟时间的电子商务网站中很有用。当根据本发明执行处理时,不是只具有冻结的屏幕,而是用户可以接收一些项目信息,而随着servlet发现适当的数据并将其返回,其它项目被一件一件地返回。同时,servlet响应处理器可用于处理其它客户机请求。立即返回的数据的类型以及以后返回的类型可以由开发者指定。
图6和图7更详细地图解了本发明的操作,因为其可以应用来服务多个请求。如图6所示,当未使用异步消息接发时,必须以按顺序的方式处理来自客户机的后续请求。因此,例如在图6中,在处理来自客户机B 403的第二个HTTP请求430之前,来自客户机A的第一个HTTP请求410由servlet容器404和servlet响应处理器406处理,并被完全处理。总体的结果是花费两倍时间来处理来自两个客户机的HTTP请求。如果不以这种按顺序的方式处理请求,则非常有可能有一个或多个请求会产生对其它请求的积压(backlog),使得用户将经历处理的延迟。
图7图解了根据本发明实施例的机制的生命周期,其中使用异步消息接发,以异步方式来处理来自单个客户机的多个请求和/或来自多个客户机的请求,从而可以在不同的线程中运行处理。如图7所示,第一HTTP客户机A 502和第二HTTP客户机B 503使用上述机制来访问servlet资源508。根据这一实施例,当在servlet容器接收到第一个HTTP请求A 510时,由响应处理器使用:initA调用512来进行处理,然后将其作为:service请求514传送到servlet508。Servlet立即返回516到servlet响应处理器,其然后释放响应处理器以处理其它请求。如图7所示,第二个HTTP请求B作为:init B调用532由servlet响应处理器立即处理,并作为:service请求534传送给servlet以进行处理。Servlet再次立即返回536。以这种方式交织消息减少了处理两个请求的总时间,并允许servlet在有信息变得可用时或者如果有信息变得可用,将信息返回给客户机。例如,如图7所示,当servlet发现响应请求A所需的消息时,其向servlet容器返回:send response A信号522,以作为HTTP响应A524发送到客户机。第二个:send response B信号542和HTTP响应B 544以相同的方式进行处理。
实现
在支持网络上文件的异步发送的平台上,文件servlet可以由快速文件servlet取代。这种类型的servlet的实现要求加入对servlet的异步响应,下面将对此进行描述。
同步和异步响应
当来自远程客户机的servlet请求被服务时,经常需要响应。这一响应可以是同步的,即其由处理该请求的同一个线程发送,或者是异步的,即其以后在不同的线程中发送。这一分析是从服务器的角度进行的。从客户机的角度来说,哪种类型的响应可以或不可以因等待而阻塞取决于如何进行远程请求。
当前大多数请求是以同步方式处理的。当servlet请求被服务时,在服务线程可以移到另一个请求之前,必须完成所有处理。这一同步模型是由RMI和servlet规范所规定的。传统上这样做的原因是写入异步代码非常困难,从而易于出错。
有一些情况下,以异步方式响应请求的能力对节约线程非常有益。在服务器需要对外部资源进行一次或多次长运行请求或服务器需要在处理请求的同时等待一些条件的情况下,通常是这样的。这种情况的一个例子是从当前为空的JMS队列中出列的客户机请求。在同步模型中,为请求服务的线程阻塞,直到队列中有要返回客户机的消息。在异步模型中,线程可以将该请求放在一边,而继续为其它请求进行服务。当消息被放入队列中时,可以发现该请求,并且将响应发送给客户机。本发明允许服务器支持对RMI和servlet请求的异步响应。
Servelet
特定的servlet可以在其调配描述符中声明为异步。当异步servlet的服务方法返回时,不再对那个请求采取行动。servlet负责在某处存储该请求,从而在发生其它行为之后,该请求可以被检索,并发送响应。在此点上,必须对将要涌向流中的请求调用特定的发送()方法,将该请求记入日志,并且如果其保持有效连接,则用多路复用器登记界面以接收更多数据。创建以下执行是重要的,即确保资源通过使长运行请求超时而适当被释放,由此释放资源以进行无用数据收集和其它清除。
JSP
还可以通过使用JSP标记库以相似的方式支持异步模型。这些标记库由http开发者/页面创作者用来指定网页中哪个部分应在异步事件之前执行而哪个部分应在异步事件之后执行。标记库使得创作者能够访问应该在异步事件发生和JSP页面执行应该恢复时被通知到的对象。
当使用标记库时,页面的执行上下文可以在登记异步事件之前自动存储。以这种方式,有可能使JSP创作者隐藏许多异步编程的细节。JSP不需要关心状态维持。任何标准范围(页面、请求、会话或应用程序)中存储的状态将按其使用同步JSP时采用的方式继续工作。
前面对本发明的描述是为了说明和描述的目的而提供的。其并不打算穷尽,或将本发明限定为所公开的精确形式。显然,许多修改和变更对本领域技术人员是显而易见的。选用和描述实施例是为了最佳地说明本发明的原理及其实践应用,从而使本领域技术人员能够明白本发明适用于预想的特定用途的不同的实施例和各种修改。期望本发明的范围由所附权利要求及其等价物限定。

Claims (20)

1.用于在爪哇小服务程序和HTTP客户机之间进行异步消息接发的系统,包括:
服务器,包括小服务程序容器、小服务程序和小服务程序响应处理器,其中小服务程序容器包括HTTP接口,其从HTTP客户机接收请求,并向HTTP客户机发送响应,并且其中小服务程序容器将来自HTTP客户机的请求发送到小服务程序,然后其中所述小服务程序承担处理所述请求的任务,包括:
从小服务程序容器接收请求,并通过所述小服务程序响应处理器立即返回部分响应的数据,以解除小服务响应处理器对完整响应的等待,
设置将在后续响应中使用的响应代码,
释放所述响应处理器以交替处理来自所述HTTP客户机或其它HTTP客户机的后续请求,和
接着通过查找所请求的信息、重新设置响应代码、经由所述小服务程序响应处理器向所述HTTP服务器发送信息来处理初始的请求。
2.如权利要求1所述的系统,其中所述小服务程序的后续响应由响应命令触发,以发送额外的响应数据。
3.如权利要求2所述的系统,其中所述响应命令是JMS消息。
4.如权利要求1所述的系统,其中小服务程序和小服务程序响应处理器的机能经由JSP标记库对用户公开。
5.如权利要求4所述的系统,其中所述JSP标记库用于指示哪个HTTP响应数据应该立即返回,而哪个响应数据应该以后返回。
6.如权利要求4所述的系统,还包括对JSP执行上下文的支持。
7.如权利要求1所述的系统,其中所述系统包括所述HTTP接口的扩展,该扩展允许服务()方法返回,并允许在准备发送所述响应之前释放该服务()方法的线程处理。
8.如权利要求1所述的系统,进一步包括爪哇接发消息服务,其中在执行小服务程序时,该小服务程序建立一部分响应、对请求数据的JMS消息进行排队、创建响应对象来作为所述响应代码,该响应代码以后会在包含所请求数据的另一条JMS消息到达时被检索。
9.如权利要求1所述的系统,其中所述系统设置何时发送后续响应的时间段t,在该时间段t之后所述小服务程序将发送信号发送到所述响应处理器,然后该响应处理器将发送响应信号发送到小服务程序容器,以便将该响应发送到所述客户机。
10.如权利要求1所述的系统,其中所述系统用于在搜索功能内向网页用户提供信息,并且其中所述系统向用户显示屏提供部分项目的信息,而随着所述小服务程序找到合适的数据并返回该数据,其它项目的信息被相继返回给用户显示屏。
11.一种用于在爪哇小服务程序和HTTP客户机之间进行异步消息接发的方法,包括以下步骤:
从HTTP客户机接收访问包含在小服务程序容器中的小服务程序的请求;以及
异步响应所述请求,包括步骤:
在小服务程序处从小服务程序容器接收请求,并通过所述小服务程序响应处理器立即返回部分响应的数据,以解除小服务响应处理器对完整响应的等待,
设置将在后续响应中使用的响应代码,
释放所述响应处理器以交替处理来自所述HTTP客户机或其它HTTP客户机的后续请求,和
接着通过查找所请求的信息、重新设置响应代码、经由所述小服务程序响应处理器向所述HTTP客户机发送信息来处理初始的请求。
12.如权利要求11所述的方法,其中所述小服务程序的后续响应由响应命令触发,以发送额外的响应数据。
13.如权利要求12所述的方法,其中所述响应命令是JMS消息。
14.如权利要求11所述的方法,其中小服务程序和小服务程序响应处理器的机能经由JSP标记库对用户公开。
15.如权利要求14所述的方法,其中所述JSP标记库用于指示哪个HTTP响应数据应该立即返回,而哪个响应数据应该以后返回。
16.如权利要求14所述的方法,还包括对JSP执行上下文的支持。
17.如权利要求11所述的方法,还包括提供所述HTTP接口的扩展,该扩展允许服务()方法返回,并允许在准备发送所述响应之前释放该服务()方法的线程处理。
18.如权利要求11所述的方法,进一步包括使用爪哇接发消息服务,包括在执行小服务程序时,建立一部分响应、对请求数据的JMS消息进行排队、创建响应对象来作为所述响应代码,该响应代码以后会在包含所请求数据的另一条JMS消息到达时被检索。
19.如权利要求11所述的方法,还包括设置何时发送后续响应的时间段t,在该时间段t之后由所述小服务程序将发送信号发送到所述响应处理器,然后该响应处理器将发送响应信号发送到小服务程序容器,以便将该响应发送到所述客户机。
20.如权利要求11所述的方法,其中所述方法用于在搜索功能内向网页用户提供信息,并且其中所述系统向用户显示屏提供部分项目的信息,而随着所述小服务程序找到合适的数据并返回该数据,其它项目的信息被相继返回给用户显示屏。
CNB028229932A 2001-10-05 2002-10-04 爪哇小服务程序和http客户机间异步消息接发的系统和方法 Expired - Lifetime CN1302409C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US32753001P 2001-10-05 2001-10-05
US60/327,530 2001-10-05
US10/264,973 2002-10-03
US10/264,973 US7003570B2 (en) 2001-10-05 2002-10-03 System for integrating java servlets with asynchronous messages

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN 200710002134 Division CN1976349A (zh) 2001-10-05 2002-10-04 爪哇小服务程序和http客户机间异步消息接发的系统和方法

Publications (2)

Publication Number Publication Date
CN1639703A CN1639703A (zh) 2005-07-13
CN1302409C true CN1302409C (zh) 2007-02-28

Family

ID=26950863

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028229932A Expired - Lifetime CN1302409C (zh) 2001-10-05 2002-10-04 爪哇小服务程序和http客户机间异步消息接发的系统和方法

Country Status (6)

Country Link
US (2) US7003570B2 (zh)
EP (1) EP1438674B1 (zh)
JP (1) JP2005505831A (zh)
CN (1) CN1302409C (zh)
AU (1) AU2002362656B9 (zh)
WO (1) WO2003032181A1 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617273B2 (en) * 2002-11-15 2009-11-10 Sun Microsystems, Inc. Method and apparatus for providing a unified component architecture for client-side and server-side components
US7617278B1 (en) 2003-01-29 2009-11-10 Adobe Systems Incorporated Client controllable server-side playlists
US7246356B1 (en) * 2003-01-29 2007-07-17 Adobe Systems Incorporated Method and system for facilitating comunications between an interactive multimedia client and an interactive multimedia communication server
US7272658B1 (en) 2003-02-13 2007-09-18 Adobe Systems Incorporated Real-time priority-based media communication
US7287256B1 (en) 2003-03-28 2007-10-23 Adobe Systems Incorporated Shared persistent objects
US20040225724A1 (en) * 2003-05-08 2004-11-11 Gregory Pavlik RPC type SOAP service access via taglibs for dynamic web content
WO2004114581A2 (en) * 2003-06-17 2004-12-29 Bytemobile, Inc. Method and system for dynamic interleaving
JP4709481B2 (ja) * 2003-07-31 2011-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ、情報処理方法およびプログラム
US7761878B2 (en) * 2003-11-19 2010-07-20 Nexaweb Technologies, Inc System and method for stateful web-based computing
US7849459B2 (en) * 2004-11-04 2010-12-07 International Business Machines Corporation Deploying java applications in resource constrained environments
US7552198B2 (en) * 2005-01-20 2009-06-23 International Business Machines Corporation Method, system, and program product for providing access to J2EE application servers from non-J2EE application clients
US8429655B2 (en) * 2005-04-29 2013-04-23 Microsoft Corporation System and method for asynchronous processing in page lifecycle
JP5025116B2 (ja) * 2005-10-25 2012-09-12 キヤノン株式会社 情報処理装置及びその制御方法ならびにプログラム
US8161159B1 (en) 2005-10-31 2012-04-17 Adobe Systems Incorporated Network configuration with smart edge servers
US7945615B1 (en) 2005-10-31 2011-05-17 Adobe Systems Incorporated Distributed shared persistent objects
US20080127234A1 (en) * 2006-09-19 2008-05-29 International Business Machines Corporation Methods, systems, and computer program products for a remote request dispatcher extension framework for container based programming models
US20080071922A1 (en) * 2006-09-19 2008-03-20 International Business Machines Corporation Methods, systems, and computer program products to transparently dispatch requests to remote resources in a multiple application server environment
US8611378B2 (en) * 2007-05-29 2013-12-17 Red Hat, Inc. Message handling multiplexer
US7921227B2 (en) * 2007-05-30 2011-04-05 Red Hat, Inc. Concurrent stack
US7992153B2 (en) * 2007-05-30 2011-08-02 Red Hat, Inc. Queuing for thread pools using number of bytes
US7733863B2 (en) * 2007-05-30 2010-06-08 Red Hat, Inc. Out of band messages
US8505028B2 (en) * 2007-05-30 2013-08-06 Red Hat, Inc. Flow control protocol
US8032587B2 (en) * 2007-08-28 2011-10-04 International Business Machines Corporation Method and apparatus for client-side aggregation of asynchronous fragmented requests
US8185610B2 (en) * 2007-12-04 2012-05-22 International Business Machines Corporation Method for client-side aggregation of asynchronous, context-sensitive request operations for java server pages (JSP)
US8073962B2 (en) * 2008-03-03 2011-12-06 Oracle International Corporation Queued transaction processing
US8849753B2 (en) * 2008-05-20 2014-09-30 Microsoft Corporation Automating asynchronous programming in single threaded systems
CN101621532B (zh) * 2008-06-30 2012-09-05 中兴通讯股份有限公司 一种使用线程池实现超文本传输协议应用的方法
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8949344B2 (en) * 2008-09-15 2015-02-03 Microsoft Corporation Asynchronous queued messaging for web applications
US20100114898A1 (en) * 2008-10-06 2010-05-06 Teradata Us, Inc. Publication services
US8051287B2 (en) 2008-10-15 2011-11-01 Adobe Systems Incorporated Imparting real-time priority-based network communications in an encrypted communication session
US8386562B2 (en) 2009-07-01 2013-02-26 International Business Machines Corporation Method, apparatus and computer program product for processing responses to a web page
US8166191B1 (en) 2009-08-17 2012-04-24 Adobe Systems Incorporated Hint based media content streaming
US8412841B1 (en) 2009-08-17 2013-04-02 Adobe Systems Incorporated Media content streaming using stream message fragments
JP2011096045A (ja) * 2009-10-30 2011-05-12 Hitachi Ltd 計算機、計算機システム、及び、アプリケーション実行方法
US8296411B2 (en) 2010-03-01 2012-10-23 International Business Machines Corporation Programmatically determining an execution mode for a request dispatch utilizing historic metrics
US8903847B2 (en) * 2010-03-05 2014-12-02 International Business Machines Corporation Digital media voice tags in social networks
US8364794B2 (en) * 2010-03-11 2013-01-29 International Business Machines Corporation Admission control framework method and system
US9880860B2 (en) * 2010-05-05 2018-01-30 Microsoft Technology Licensing, Llc Automatic return to synchronization context for asynchronous computations
US20120246238A1 (en) * 2011-03-21 2012-09-27 International Business Machines Corporation Asynchronous messaging tags
US20120244842A1 (en) 2011-03-21 2012-09-27 International Business Machines Corporation Data Session Synchronization With Phone Numbers
US8688090B2 (en) 2011-03-21 2014-04-01 International Business Machines Corporation Data session preferences
US9189304B2 (en) * 2011-09-09 2015-11-17 Oracle International Corporation System and method for providing a dynamic invocation and service interface for use in a middleware or other environment
US8954555B2 (en) * 2011-10-27 2015-02-10 International Business Machines Corporation Using push notifications to reduce open browser connections
CN105094988A (zh) * 2015-08-13 2015-11-25 深圳市金蝶中间件有限公司 基于http请求的数据处理方法和装置
CN109639767A (zh) * 2018-11-20 2019-04-16 中国人民解放军总医院 一种业务网关数据处理方法、装置、设备
CN113242312B (zh) * 2021-05-26 2022-10-25 西安热工研究院有限公司 一种电力实时数据传输中间件及异步数据访问的方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2149445A1 (en) 1994-07-27 1996-01-28 Aziza Bushra Faruqi Separation and transmission control method and apparatus for a microkernal data processing system
US6006247A (en) * 1995-03-21 1999-12-21 International Business Machines Corporation Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
GB2305270A (en) * 1995-09-15 1997-04-02 Ibm Bridge for a client-server environment
GB2313524A (en) * 1996-05-24 1997-11-26 Ibm Providing communications links in a computer network
US5928323A (en) 1996-05-30 1999-07-27 Sun Microsystems, Inc. Apparatus and method for dynamically generating information with server-side software objects
US6192389B1 (en) * 1997-03-28 2001-02-20 International Business Machines Corporation Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system
US5987454A (en) 1997-06-09 1999-11-16 Hobbs; Allen Method and apparatus for selectively augmenting retrieved text, numbers, maps, charts, still pictures and/or graphics, moving pictures and/or graphics and audio information from a network resource
CA2220578A1 (en) * 1997-11-10 1999-05-10 Northern Telecom Limited Distributed service network
US6859451B1 (en) * 1998-04-21 2005-02-22 Nortel Networks Limited Server for handling multimodal information
US6189033B1 (en) * 1998-07-16 2001-02-13 Hewlett-Packard Company Method and system for providing performance guarantees for a data service system of a data access network system
US6304906B1 (en) * 1998-08-06 2001-10-16 Hewlett-Packard Company Method and systems for allowing data service system to provide class-based services to its users
US6480865B1 (en) 1998-10-05 2002-11-12 International Business Machines Corporation Facility for adding dynamism to an extensible markup language
US6279030B1 (en) * 1998-11-12 2001-08-21 International Business Machines Corporation Dynamic JAVA™ class selection and download based on changeable attributes
US6401126B1 (en) * 1999-03-10 2002-06-04 Microsoft Corporation File server system and method for scheduling data streams according to a distributed scheduling policy
US6691208B2 (en) * 1999-03-12 2004-02-10 Diva Systems Corp. Queuing architecture including a plurality of queues and associated method for controlling admission for disk access requests for video content
US6292792B1 (en) 1999-03-26 2001-09-18 Intelligent Learning Systems, Inc. System and method for dynamic knowledge generation and distribution
US6701438B1 (en) * 1999-06-14 2004-03-02 Sun Microsystems, Inc. Methods and apparatus for providing customizable security and logging protocols in a servlet engine
US6031747A (en) 1999-08-02 2000-02-29 Lockheed Martin Missiles & Space Company Interleaved synchronous flyback converter with high efficiency over a wide operating load range
US6880126B1 (en) * 1999-08-03 2005-04-12 International Business Machines Corporation Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data
US6718516B1 (en) * 1999-09-30 2004-04-06 International Business Machines Corporation Method for verifying context between multiple related XML tags in document object model (DOM)
US6732330B1 (en) * 1999-09-30 2004-05-04 International Business Machines Corporation Scripting language blocks to support multiple scripting languages in a single web page
US6516337B1 (en) * 1999-10-14 2003-02-04 Arcessa, Inc. Sending to a central indexing site meta data or signatures from objects on a computer network
US6321265B1 (en) * 1999-11-02 2001-11-20 Altavista Company System and method for enforcing politeness while scheduling downloads in a web crawler
US6779152B1 (en) * 1999-12-07 2004-08-17 International Business Machines Corporation Method for rotating a dynamic HTML table
US20020046286A1 (en) * 1999-12-13 2002-04-18 Caldwell R. Russell Attribute and application synchronization in distributed network environment
US6421673B1 (en) * 1999-12-13 2002-07-16 Novient, Inc. Method for mapping applications and or attributes in a distributed network environment
US6442550B1 (en) * 1999-12-14 2002-08-27 International Business Machines Corporation System and method in a collaborative data processing environment for customizing the quality of service on a per-client basis
US20010047385A1 (en) * 1999-12-30 2001-11-29 Jeffrey Tuatini Passthru to shared service funtionality
EP1117220A1 (en) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Method and system for protocol conversion
AU2001229464A1 (en) * 2000-01-14 2001-07-24 Saba Software, Inc. Method and apparatus for a web content platform
US7702995B2 (en) * 2000-04-24 2010-04-20 TVWorks, LLC. Method and system for transforming content for execution on multiple platforms
US6327628B1 (en) * 2000-05-19 2001-12-04 Epicentric, Inc. Portal server that provides a customizable user Interface for access to computer networks
US6763520B1 (en) * 2000-08-24 2004-07-13 Cognos Incorporated Fair assignment of processing resources to queued requests
CA2427354A1 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US6910187B2 (en) * 2001-01-23 2005-06-21 Mci, Inc. Graphical user interface for procuring telecommunications services on-line
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
US6948151B2 (en) * 2001-06-29 2005-09-20 International Business Machines Corporation System and method for dynamic packaging of component objects
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US6873984B1 (en) * 2002-02-20 2005-03-29 Oracle International Corporation Data mining recommendation web beans and JSP tag libraries
US7080379B2 (en) * 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue

Also Published As

Publication number Publication date
US7788675B2 (en) 2010-08-31
EP1438674B1 (en) 2018-11-21
AU2002362656A2 (en) 2003-04-22
AU2002362656B9 (en) 2008-06-19
WO2003032181A1 (en) 2003-04-17
US7003570B2 (en) 2006-02-21
US20060168139A1 (en) 2006-07-27
JP2005505831A (ja) 2005-02-24
CN1639703A (zh) 2005-07-13
EP1438674A1 (en) 2004-07-21
US20030084097A1 (en) 2003-05-01
EP1438674A4 (en) 2009-12-30
AU2002362656B2 (en) 2008-05-29

Similar Documents

Publication Publication Date Title
CN1302409C (zh) 爪哇小服务程序和http客户机间异步消息接发的系统和方法
CN100342369C (zh) 用于与多重调度池进行消息接发的应用服务器的系统
JP4028233B2 (ja) サーバ・エージェント・システム
US6859834B1 (en) System and method for enabling application server request failover
US6879995B1 (en) Application server message logging
EP1212680B1 (en) Graceful distribution in application server load balancing
US7882501B1 (en) System and method for enabling dynamic modifed class reloading in an application server environment
US8972998B2 (en) Processing annotation requests using multithreaded constituent task and independent input/output tasks
CN1117333C (zh) 在一个计算机网络中提供通信链路的数据通信系统和方法
AU2002362656A1 (en) System for integrating java servlets with asynchronous messages
EP1213892B1 (en) System and method for implementing a client side HTTP stack
US6697849B1 (en) System and method for caching JavaServer Pages™ responses
US7197749B2 (en) Method and system for executing batch jobs by delegating work to independent service providers
CN1615472A (zh) 在多处理环境中执行进程
CN101821993A (zh) 对使用会话亲缘性的分布式环境中的故障恢复进行处理的方法和系统
JP2005513592A (ja) トランザクション・プロパティー機能を持つトランザクション処理のためのシステムおよび方法
US6532498B1 (en) Method and system for event notification between software application program objects
CN1728700A (zh) 基于struts框架的web电信网管系统及其方法
US20060080273A1 (en) Middleware for externally applied partitioning of applications
CN1701527A (zh) 存储区域网中的异步消息传送
CN1976349A (zh) 爪哇小服务程序和http客户机间异步消息接发的系统和方法
US20070204276A1 (en) Method and apparatus for buffering requests to web services using annotations
Campbell Service oriented database architecture: App server-lite?
CN1940874A (zh) 计算机系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ORACLE INT CORP

Free format text: FORMER OWNER: BEA SYSTEMS CORP.

Effective date: 20110418

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20110418

Address after: California, USA

Patentee after: ORACLE INTERNATIONAL Corp.

Address before: California, USA

Patentee before: BEA SYSTEMS, Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20070228