CN101258494B - 改善客户端-小型服务程序通信的方法和系统 - Google Patents

改善客户端-小型服务程序通信的方法和系统 Download PDF

Info

Publication number
CN101258494B
CN101258494B CN2006800325577A CN200680032557A CN101258494B CN 101258494 B CN101258494 B CN 101258494B CN 2006800325577 A CN2006800325577 A CN 2006800325577A CN 200680032557 A CN200680032557 A CN 200680032557A CN 101258494 B CN101258494 B CN 101258494B
Authority
CN
China
Prior art keywords
servlet
client
request
response
information
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.)
Active
Application number
CN2006800325577A
Other languages
English (en)
Other versions
CN101258494A (zh
Inventor
S·拉斯普尔
Y·塞尔莱特
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101258494A publication Critical patent/CN101258494A/zh
Application granted granted Critical
Publication of CN101258494B publication Critical patent/CN101258494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明提供改善客户端-小型服务程序通信的方法和系统。若服务程序识别初始客户端网络浏览器请求中未包括检索期望信息的缺失信息,则服务程序用初始请求的响应功能自动打开由另一服务程序组件支持的另一通信路径以将缺失信息提供到服务程序,服务程序产生脚本,脚本当在浏览器处执行时检索缺失信息并调用另一服务程序组件;将脚本添加到响应以指示其为局部响应;发送包括脚本的响应到浏览器;暂停服务程序对初始响应的执行直到可得到缺失信息;另一服务程序组件接收缺失信息,缺失信息包含在脚本当在浏览器上执行时创建的新请求中;向服务程序提供缺失信息;服务程序利用缺失信息继续初始响应以检索响应的其余部分并将其提供到浏览器来显示。

Description

改善客户端-小型服务程序通信的方法和系统
技术领域
本申请一般涉及客户端-服务器通信,更具体而言,本发明涉及改善万维网(Web)中客户端-小型服务程序(servlet)通信,而不改变现有通信协议也不改变客户端,本发明尤其涉及提高这样的小型服务程序在小型服务程序识别到在初始客户端网络浏览器请求中没有包括的用于检索期望信息的缺失信息的情况下的灵活性和交互性。
背景技术
术语“客户端-服务器”指的是包括经由通信协议(例如,HTTP)互相通信的客户端和服务器的网络应用构架。
Web指的是一种信息空间,其中感兴趣的项(被称为资源)由被称为统一资源标识符(URI)的全局标识符来标识。Web包括3个标准:指定如何为每个信息页赋予能找到其的唯一“地址”的统一资源定位符(URL);指定客户端和服务器如何互相发送信息的超文本传输协议(HTTP);和超文本置标语言(HTML),一种使得信息能被显示在各种设备上的信息编码方法。
Web工作如下:当打开客户端的网络浏览器(例如,Microsoft的Internet Explorer,Apple的Safari)时,其代表客户端(或使用的计算机)利用超文本传输协议(HTTP)通信,并进行网页请求。一旦发送了请求,客户端的网络浏览器计算机就等待来自服务器的超文本数据流。当服务器获得该请求时,其搜索所请求的文件,并且在该文件存在的情况下,按照请求将其发送给客户端的网络浏览器。
小型服务程序指的是在服务器上运行的程序,其等待来自客户端的网络浏览器的请求,并产生对该请求的响应(例如,动态产生的网页)。
现有技术中的小型服务程序的工作方式如下:
客户端的网络浏览器通过调用其URL而发送HTTP请求到小型服务程序。客户端的网络浏览器不必知道其正在调用小型服务程序。调用小型服务程序就像加载任何其他网页一样,区别在于参数可以在请求中被传递到小型服务程序,并且服务器所发送回的响应不是静态文档、而是动态地产生的。
请求被对小型服务程序进行主机服务的应用服务器分析,并被传递到对应于所要求的URL的小型服务程序。
请求被小型服务程序分析,最终参数被解析和解释,并且动态地产生返回到客户端的网络浏览器的文档(文档内容可以取决于客户端网络浏览器在请求中所传递的最终参数)。
所产生的文档被客户端网络浏览器接收,并被显示或解释(如果其包含一些如JavaScript的可执行脚本)。
小型服务程序已经通过提供用于展示动态内容的强大且可缩放的框架转换了因特网:不是公布内容必须定期更新的静态文档,小型服务程序而是允许客户端网络浏览器附加参数到HTTP请求并基于其请求获得当前信息。如果没有小型服务程序,就不可能创建其中用户通过其客户端网络浏览器与服务器交互的交互式网络应用。
但是,小型服务程序具有一个限制,即在接收到请求之后,它们不能向客户端网络浏览器要求缺失的信息。
通过进入的请求,小型服务程序可以接收能够影响服务器上所采取的操作或服务器所返回的信息的参数的列表。例如,如果在因特网上订购物品,则按下“提交”按钮就将发送包含订购物品列表的请求到服务器。服务器将处理该列表(更新数据库等等),并通常产生列出所选择的所有物品的确认页面。
但是,对于传统的小型服务程序,对于在服务器上处理请求所必需的所有参数必须被包含在客户端网络服务器所发送的初始请求中:如果小型服务程序在处理请求期间发现在初始请求中客户端网络服务器没有提供某附加信息,则没有办法暂停处理,向客户端网络服务器要求缺失的信息,并从中断点恢复处理。这限制了小型服务程序的应用领域:
客户端网络浏览器必须精确地知道小型服务程序需要什么信息。
在其请求中,客户端网络服务器可能需要提供比小型服务程序实际需要的信息更多的信息。
传统的小型服务程序不能处理要求比客户端网络服务器所提供的信息更多的信息的意外情况。如果请求不包含所有必要信息,则处理该问题的传统方法是停止该处理,返回Web页面到客户端网络服务器,其中该Web网页替换原始网页并显示错误消息或者显示要求缺失信息并使用新信息调用相同或另一小型服务程序的新网页。
这并不是处理缺失信息的非常好的方法,因为在一个小型服务程序调用中停止请求处理并在另一小型服务程序调用中继续交易并不是简单的事情。此外,这可能使用户迷惑,因为经常再次显示相同的但具有小注释以通知用户缺失什么信息的页面,这从可用性的观点来看是有问题的。
发明内容
本发明的目的是提供一种在不改变现有通信协议且不改变客户端的情况下改善万维网(Web)中客户端-小型服务程序通信的方法和系统,更具体而言,本发明的目的是在小型服务程序识别到在初始客户端网络浏览器请求中没有包括的用于检索期望信息的缺失信息的情况下提高这样的小型服务程序的灵活性和交互性。
本发明提供了一种在不改变现有通信协议也不改变客户端的情况下改善客户端-小型服务程序通信的方法和系统。
如果初始请求包括用于检索期望信息的所有信息,则当前现有技术中在客户端和小型服务程序之间的单向通信路径保持不变。但是,如果小型服务程序识别到在初始客户端网络浏览器请求中没有包括的用于检索期望信息的缺失信息,则小型服务程序通过利用所述初始HTTP请求的HTTP响应功能,自动地打开另一通信路径以将缺失信息提供给小型服务程序,其中该另一通信路径由另一小型服务程序功能组件支持,并且特征为如下步骤:小型服务程序产生脚本,其中该脚本当在客户端网络浏览器处被执行时,检索缺失信息并调用该另一小型服务程序功能组件;将该脚本附加到所述HTTP响应,指示其作为部分响应;发送包括该脚本的HTTP响应到客户端网络浏览器;小型服务程序暂停初始HTTP响应的执行,直到该缺失信息可用;该另一小型服务程序功能组件接收所述缺失信息,其中该缺失信息被包含在脚本当在客户端网络浏览器上执行期间所创建的新HTTP请求中;向小型服务程序提供该缺失信息;以及通过小型服务程序利用缺失信息以检索所述HTTP响应的其余部分并提供HTTP响应的其余部分给客户端网络浏览器用于显示,继续执行初始HTTP响应。
小型服务程序具有现有技术中所描述的限制的原因源于HTTP协议和网络浏览器/服务器的设计方式:
HTTP是用于客户端网络浏览器和网络服务器之间通信的协议。
通常,HTTP协议允许客户端网络浏览器发送请求到网络服务器(或应用服务器/小型服务程序),以发送某信息到服务器(POST请求)或从服务器获得文档(GET请求)。
与客户端网络浏览器所发送的请求的类型(GET还是POST)无关地,服务器应当总是处理该请求,并返回包含含有返回码(例如指示请求是否能够被成功地处理)的首标以及最终结果文档的响应。当请求成功时,客户端网络浏览器通常利用来自服务器的响应显示服务器所返回的文档,从而替换包含产生请求的元素的链接的原始页面。
如果请求长期运行,则服务器也可以在完成整个文档产生之前定期地发送响应文档的部分。通过这种方法,用户可以阅读文档的开始部分,而不必等待产生并传送整个文档。
这是单向通信:协议仅仅预见了客户端网络浏览器发起的通信。服务器通常没有办法发送请求到客户端网络浏览器。
为了克服这一限制,本发明使用以下事实,即在产生整个响应文档之前,服务器可以发送“局部文档”到客户端网络浏览器;以及该局部文档可以包含在完全传送整个文档之前可以由客户端网络浏览器执行的JavaScript。JavaScript是能够被嵌入HTML页面中并且由客户端网络浏览器解释的语言。
通过本发明,提供了网络客户端和网络服务器之间的双向通信,其工作如下(参见图1):
客户端网络浏览器发送HTTP请求到应用服务器上的主小型服务程序。通过该请求,其能够提供小型服务程序处理该请求所需要某些初始参数;
主小型服务程序接收请求10,提取和解释最终参数并通过在服务器侧采取某些动作而开始处理该请求,从而产生响应文档20;
(到现在为止,这是现有技术的小型服务程序的工作方式)。
在处理请求期间,主小型服务程序发现某信息缺失,并且该信息必须由请求发起者提供30。该信息可以是用户必须输入的某些缺失数据、关于客户端网络浏览器本身或关于在处理请求期间在客户端网络浏览器上所显示的页面中某些其他元素的状态的某些系统信息。其必须是在需要或无需用户交互的情况下能够通过在客户端网络浏览器上执行JavaScript而检索的信息;
主小型服务程序暂停处理请求以及生成响应,并产生JavaScript40,该JavaScript 40当在客户端网络浏览器上运行时进行以下工作:
其检索(或向用户请求)缺失信息;
其调用次小型服务程序以传递附加检索的信息作为参数以及传递请求该信息的小型服务程序所产生的密钥;
主小型服务程序将在前一步骤中所产生的JavaScript附加到部分产生的响应文档,并发送该局部响应到客户端网络浏览器50;
主小型服务程序通过等待来暂停其执行,直到其在其之前已经产生的密钥之下能够找在网络会话中或在共享存储器中找到其所要求的信息60;
同时,客户端网络浏览器开始显示从主小型服务程序所接收的局部文档。如果一些内容已经产生,则其将被显示。嵌入在响应中的JavaScript被执行;
在执行嵌入在局部响应文档中的JavaScript期间,客户端网络浏览器检索主小型服务程序所要求的缺失信息,将该信息和密钥编码到次小型服务程序的URL中,并发送请求到该次URL。其中该信息应当在利用该密钥的情况下被存储;
重要的是注意到,该第二个请求的结果在对主小型服务程序的请求仍然在运行时不应该替换客户端网络浏览器所显示的当前文档以及中断第一个请求。这可以通过将第二请求的结果重新定向到单独帧或到页面的特定元素(图像,嵌入帧)、或者通过使用JavaScript API来程序地打开HTTP请求而被实现;
次小型服务程序接收请求62,在其参数中包含具有要存储在会话64(或与第一小型服务程序共享的存储器)中的信息的密钥/值对。然后,其返回成功码到客户端网络浏览器65。客户端网络浏览器可以忽略次小型服务程序的响应;
主小型服务程序在会话(共享存储器)中检测到已经为其已经产生的密钥存储了值。其提取该值(70;其是处理请求所缺失的信息),将该值从会话/共享存储器中移除,并重新开始处理请求。
处理继续,产生响应文档的其余部分。如果随后在处理请求期间发现更多信息缺失,则可以重复前面的步骤,以顺序地向用户要求更多信息80;和
最后,完成请求,并且客户端网络浏览器接收并显示完整响应文档80。
在本发明的一个优选实施例中,小型服务程序被实现为Java小型服务程序。但是,相同方法可以被用于CGI脚本或驻留在服务器上、并响应于HTTP请求提供动态内容的任何类似小型服务程序的程序。
在本发明的另一优选实施例中,脚本被实现为Java脚本。但是,返回到客户端网络浏览器以检索缺失信息的脚本(JavaScript)可以是能够被嵌入网络页面中并由客户端网络浏览器在正在处理期间(onthe fly)执行的任何语言(Java,Visual Basic等等)。
在本发明的再一优选实施例中,可以创建一般小型服务程序,其从用户接收非常低级别的信息(诸如鼠标或键事件),并对该信息进行复杂处理。客户端网络浏览器仅发送关于用户所产生的鼠标/键事件的信息,而不知道在发送请求时小型服务程序会做什么或其对于该信息是否将进行什么动作。小型服务程序解释该信息,并且当其判断在发生特定事件时必须采取动作时,其可以向客户端网络浏览器要求提供更多关于客户端网络浏览器侧上的事件或一些其他元素的信息,并且根据客户端网络浏览器所返回的信息动态处理该事件。
在本发明的另一进一步的实施例中,以复杂处理路径使用小型服务程序。初始请求包含足够的信息以开始处理。在处理期间,根据参数或服务器从后端系统(数据库等等)中所检索的数据,小型服务程序可以采取不同执行路径。如果在某点上用户必须决定处理应该如何继续,则小型服务程序可以要求客户端网络浏览器提示用户做出决定。该决定可以影响对该请求的进一步处理,而不中断该请求。处理可以在单个交易中运行。
在本发明的另一优选实施例中,附加地提供次小型服务程序。次小型服务程序接收JavaScript所发送的新HTTP请求,并且在当前HTTP会话对象中存储密钥值对。
在本发明的再一优选实施例中,代替使用次小型服务程序,JavaScript可以发送更新HTTP会话的请求到主小型服务程序。但是,在该情况中,主小型服务程序的第二实例会开始(平行于仍然正在产生对主请求的响应并等待缺失值的第一实例)。
在本发明的还一优选实施例中,HTTP协议可以由其他通信协议替代,该其他通信协议的特征在于所述客户端网络浏览器(3)发起请求以从所述小型服务程序(8)检索信息的单向通信路径,以及所述小型服务程序发送至少包含指示所述请求的成功或失败的返回码、并且在存在的情况下还包含所述请求的结果的响应。
附图说明
以下将参考附图以仅仅示例的方式详细地描述本发明的优选实施例:
图1显示了本发明的创新的双向通信路径;
图2A显示了实现创造性双向通信路径的一个优选实施例的客户端-服务器构架,和
图2B显示的时序图描述了给定实例中客户端网络浏览器、主小型服务程序和次小型服务程序之间的通信步骤。
图2A显示了客户端-服务器构架中本发明的一个优选实施例。
具体实施方式
本发明包括客户端1和服务器2侧。客户端1优选地是标准客户端网络浏览器3,其能够发送HTTP请求到网络服务器,并能够显示服务器所返回的HTML文档。客户端网络浏览器3应当能够执行嵌入要显示的文档13中的JavaScript 12。此外,其应当能够在已经传送整个文档3之前显示和执行嵌入服务器所返回的文档13的部分中的JavaScript 12。这是市场上可得到的所有现有客户端网络浏览器3的标准行为。
可选地,服务器返回并在客户端网络浏览器3上显示的文档13的格式不需要必须是HTML文档13。可以使用所有能够由客户端网络浏览器3显示并且能够包含在呈现期间被客户端网络浏览器3解释的脚本元素的文档类型。可以使用的文档的例子:XML,XHTML,SVG(可缩放矢量图形),XUL(XML用户接口语言)等等(尤其是所有类型的XML文档)。嵌入文档中的脚本12可以以除JavaScript之外的其他语言编写。客户端网络浏览器3中的JavaScript 12(或其标准化版本ECMA脚本)的支持是标准的。但是,可以使用能够被嵌入要由网络浏览器3呈现的文档13中的、以及能够在客户端网络浏览器3内执行以检索有关文档13中其他元素或有关客户端网络浏览器3或用户环境的信息的所有类型的脚本或插件程序。例子可以是:Visual Basic脚本,ActiveX组件、Java小程序(applet)、或本地客户端网络浏览器3插件程序。HTTP协议可以由其他通信协议代替,该其他通信协议的特征在于:所述客户端网络浏览器3发起请求以从所述小型服务程序8检索信息的单向通信路径,以及所述小型服务程序8发送至少包含指示所述请求成功或失败的返回码、并且在存在的情况下还包含所述请求的结果的响应。
服务器侧2优选为应用服务器4(例如,诸如WebSphere或Tomcat的J2EE服务器),其优选具有小型服务程序容件6。在本发明的优选实施例中,两个小型服务程序-主小型服务程序8和次小型服务程序10-被安装在该应用服务器4中。
应用服务器4不必是J2EE服务器。可以使用能够动态响应来自客户端网络浏览器3的HTTP请求的任何种类的服务器。可以被用于代替J2EE应用服务器的技术实例有:Microsoft.Net、或能够执行CGI脚本以显示动态内容的简单网络服务器。小型服务程序8、10和小型服务程序容件6可以由诸如ASP、PHP或CGI脚本这样的类似技术替代。
本发明在以其优选实施例实现时工作如下:(参见图2A的箭头):
在客户端侧1,客户端网络浏览器3发送请求到主小型服务程序(1)。主小型服务程序8是响应于初始请求执行对于产生要发送到客户端网络浏览器3的文档-页面13所必需的逻辑的小型服务程序。主小型服务程序8接收该请求,读取随着请求传递的最终参数,并开始产生文档13以将其返回到客户端网络浏览器3。随着请求传递的参数可以影响文档13的产生。本发明并不依赖于主小型服务程序8为了产生响应文档13而使用的逻辑。
在产生响应过程中的某些点处,主小型服务程序8需要客户端网络浏览器3在请求中还没有(作为参数)提供、但可以很容易地通过在客户端网络浏览器3中的客户端侧1上执行JavaScript 12而被检索的附加信息。
主小型服务程序8将JavaScript 12插入其已经开始产生的文档13中。在由客户端网络浏览器3执行时,该脚本12检索缺失信息,发送HTTP请求到次小型服务程序10,其中该请求包含主小型服务程序8所产生的密钥(密钥可以是随机产生的任何唯一字符串)以及在前一步骤中所检索的值作为参数。
一旦脚本12已经被产生并被插入局部响应中,主小型服务程序8就刷新其缓冲器,使得响应文档13的到此时为止已经产生的部分被立刻传送到客户端网络浏览器(2)。到网络浏览器3的通信信道不被关闭。被发送到客户端网络浏览器3的HTTP响应的首标指示响应使用“分块传输编码(chunked transfer coding)”,如HTTP 1.1中所定义的。该编码意味着响应不是在一个片块中到来的,而是在一系列块中到来的,并且客户端网络浏览器3应当等待新内容,直到服务器关闭连接。
一旦部分产生的文档13(包含文档起始部分和检索缺失信息的JavaScript 12的第一块)被传送到客户端网络浏览器3,在等待其余文档的同时,客户端网络浏览器3开始呈现到目前为止已经接收的文档13的部分,并执行被嵌入的脚本12。
该脚本12的执行检索缺失值,并发送另一HTTP请求到次小型服务程序10。该请求含有密钥和在前一步骤(3)中检索的值作为参数。
在第1个HTTP请求的响应正被加载期间发送附加HTTP请求到不同URL的能力对于网络浏览器3来说是通常的行为。如果没有该能力,则在完全加载整个文档之前,客户端网络浏览器3将例如不能显示包含在正被加载的长文档的开始部分中的图像。
次小型服务程序10接收JavaScript 12所发送的HTTP请求,解码在请求的参数中所包括的密钥和值,并将该密钥值对存储在当前HTTP会话对象中(4)。HTTP会话是存储有关一个客户端1与服务器2之间当前会话的信息的对象。每次接收到请求时,会话对象被传递到小型服务程序。如果相同客户端网络浏览器3发送HTTP请求到包含在相同小型服务程序容件6中和相同网络应用中的几个小型服务程序8,则相同会话对象将被传递到不同小型服务程序8。小型服务程序8可以在会话对象中读写值(该值被存储在密钥之下,该密钥随后可以被用来检索该值)。使用HTTP会话是在J2EE中在不同小型服务程序8之间传递值的普通方法。
不使用次小型服务程序10,JavaScript 12可以发送更新HTTP会话的请求到主小型服务程序8。但是在该情况下,主小型服务程序8的第二实例将开始(平行于仍然正在产生对于主请求的响应并等待缺失值的第1实例)。主小型服务程序8然后将需要测试何时接收请求,该请求是否正要求文档或者该请求是否提供处理文档请求(主请求)的小型服务程序的其他实例已经请求的附加信息。技术上,这通过测试随请求传递的参数来实现。如果特定参数被包含在请求中,则主小型服务程序8将知道其应当以包含在请求的其他参数中的密钥/值对来更新HTTP会话。在任何其他情况中,主小型服务程序8应当产生响应文档13。通过这样做,主小型服务程序8根据请求的参数将具有2个不同的逻辑。这与具有2个不同小型服务程序完全相同,每个小型服务程序执行单个逻辑。
次小型服务程序10不需要在HTTP会话中存储第2个请求(JavaScript所发送的请求)所传递的附加值以使主小型服务程序8知道。其他方法可以存储该值在小型服务程序容件6的Java虚拟机的系统属性中,或者使用其他共享存储器机制(根据应用服务器所使用的技术)。另一可能性是使次小型服务程序10存储该值在服务器的本地磁盘上的文件中,并且使主小型服务程序8读取相同文件。
一旦主小型服务程序8在共享存储器中(在HTTP会话中)发现所请求的值,主小型服务程序8就醒来,并继续产生文档13。使用缺失信息,文档现在能够被完全产生,并且文档的其余部分被传送到浏览器(5)-在最后步骤期间,主小型服务程序8已经定期地检查了HTTP会话的内容以查看值是否可得到。每次它检查会话并且值不可得到时,其休眠一小段时间,并且再次检查。
一旦小型服务程序关闭与网络浏览器3的连接(这在小型服务程序的doGet(…)或doPost(…)方法返回时自动执行),客户端网络浏览器就知道整个文档已经被下载了。
小型服务程序8可能需要来自客户端网络浏览器的不止一个附加信息以处理请求。可以通过在处理请求期间重复这里所述的步骤多次、或者通过产生一个在一个HTTP请求中检索和传送所有缺失信息到次小型服务程序10的JavaScript 12来实现多个缺失信息的检索。次小型服务程序10于是必须解码来自JavaScript所发送的辅助请求的多个密钥/值对,并相应地更新HTTP会话。
利用这种方法,在客户端网络浏览器3已经提交其初始请求之后,以及在处理请求期间,小型服务程序可以向客户端网络浏览器3请求附加信息。请求的处理不必像没有使用本发明那样被中止并重新从头开始。
客户端网络浏览器3中和应用服务器4中不需要修改。主小型服务程序8和次小型服务程序10分别是接收HTTP请求并返回单个响应到请求始发者的普通小型服务程序,如HTTP协议中所定义的那样。协议不被修改。客户端网络浏览器3和服务器2之间的所有通信由客户端网络浏览器驱动(如HTTP协议所预见的那样)。
仅仅这两个小型服务程序8、10之间的协作以及小型服务程序能够通过将其响应文档分块并将JavaScript命令嵌入其中来远程控制客户端网络浏览器3这一事实使服务器和客户端网络浏览器之间的双向通信成为可能。
以下,一个简单的实例显示本发明实际上如何工作(参见图2B)。
假设存在从客户端网络浏览器3接收请求并以取决于发送请求的客户端网络浏览器3的一些属性的方式产生一些内容的主小型服务程序8。进一步假设,主小型服务程序8需要知道发送请求的客户端网络浏览器窗口的宽度,并且该信息并没有包括在发送给主小型服务程序8的初始请求中。
客户端网络浏览器窗口的宽度是可以通过在客户端网络浏览器3中执行JavaScript表达“window.outerWidth”而很容易询问的属性。
该示例的主小型服务程序8和次小型服务程序10的源代码在本说明书最后的附录中。注意到,次小型服务程序独立于主小型服务程序的逻辑,并且可以由实现不同逻辑的几个“主”小型服务程序重新使用或共享。
重要的是注意到,该第2个请求的结果-在对于主小型服务程序的请求仍然在运行的同时-不应当替换客户端网络浏览器所显示的当前文档以及中断第1个请求。这可以通过将第二请求的结果重定向到单独帧或页面的特定元素(图像,嵌入帧)、或者通过使用JavaScript API来程序地打开HTTP请求来实现;
次小型服务程序10接收在其参数中包含具有要存储在会话(或与第1个小型服务程序共享的存储器)中的信息的密钥/值对的请求。然后,其返回成功码到网络浏览器3。网络浏览器3可以忽略次小型服务程序10的响应;
主小型服务程序8在会话(共享存储器)中检测到已经为其已经产生的密钥存储了值。其提取该值(该值是处理请求所缺失的信息),将其从会话/共享存储器中移除,并恢复处理该请求;
处理继续,响应文档的其余部分被产生。如果后来在处理请求期间发现有更多的信息缺失,则可以重复前几个步骤,以顺序地向用户要求更多信息。
最后,请求被完成,并且客户端网络浏览器3接收并显示完整响应文档。
图2B显示了根据本发明在该示例中在客户端网络浏览器和2个小型服务程序之间发生的行动和通信。
(1)客户端网络浏览器通过向服务器2发送HTTP GET命令(可选地:也可以使用POST命令)来发送初始请求到主小型服务程序8,从而请求主小型服务程序8的URL。该请求也可以包括在产生响应文档期间主小型服务程序8可能使用的附加参数。在该示例中,没有参数。
(2)主小型服务程序8通过写文档的开始部分直到需要缺失信息的点而开始产生响应文档(客户端网络浏览器的宽度)
<html>
<head>
</head>
<body>
在要求缺失值之前小型服务程序所产生的一些内容<p>,
在这点,为了写文档的其余部分,主小型服务程序8需要缺失信息。其产生在客户端网络浏览器已经将其发送到次主小型服务程序10之后将被用来在HTTP会话中存储和寻找缺失值的唯一密钥,并将JavaScript附加到所产生的内容,其中JavaScript在被客户端网络浏览器执行时将检索该值并将其与密钥一起发送到次小型服务程序10。
这里是脚本在本例中看起来象什么:第2行检索网络浏览器3窗口的宽度,随后的行使网络浏览器3打开HTTP请求到次小型服务程序10,从而将密钥(这里,密钥的随机值是key_112108)和检索值(这里被包含在变量“value”中)作为参数传递。
<script language=″JavaScript″>
var value=window.outerWidth;
var httpReq=new XMLHttpRequest();
httpReq.open(″GET″,″SecondaryServlet?key=key_112108&value=″+value,true);
httpReq.send(null);
</script>
(3)通过刷新主小型服务程序8的缓冲器,局部文档(到目前为止所产生的内容以及检索缺失值的脚本)被发送给客户端网络浏览器3。当执行此时,应用服务器改变HTTP响应的编码为“分块”,这向客户端网络浏览器3表明内容将以几个分块片段被传输。图2显示了此时传输到客户端网络浏览器的文档的内容。
(4)主小型服务程序8暂停其执行,直到其在HTTP会话中发现在其已经在步骤(2)中产生的密钥下存储的值。技术上,其暂停其执行,并以规则的间隔检查该值是否可得到。一旦发现该值,其就恢复其执行。
(5)同时,客户端网络浏览器3已经接收到主小型服务程序8所发送的文档的第1个块。其显示到目前为止包含在文档中的可显示内容,并执行嵌入其中的JavaScript。注意,JavaScript根本不影响文档的内容。
(6)在执行JavaScript时,客户端网络浏览器3检索其窗口的宽度(这里是454个象素),并发送HTTP GET请求到次小型服务程序10。(替换地,也可以使用POST请求)。该请求包含之前产生的密钥(key_112108)和检索的值(454)作为参数。
GET SecondaryServlet?key=key_l12108&value=454,
(7)次小型服务程序10接收该请求,从其参数中解码出密钥和值,并在HTTP会话中将值(454)放在密钥(key_112108)下面。然后,其立刻返回成功码(HTTP码200)(8),
(8)以规则间隔检查HTTP会话中存储在密钥“key_112108”之下的值的主小型服务程序8发现该值。其将该值从会话中移除,并利用其已经检索的值而恢复文档的产生。(在该示例中,值被简单地写入文本中。在更复杂的例子中,其可以被用来实现文档的更复杂的布局)。
文档的第2个分块部分被发送到客户端网络浏览器3:
完成页面的产生:宽度=454
</body>
</html>
(9)文档的第2个分块部分被发送到客户端网络浏览器,并且主小型服务程序8关闭与客户端网络浏览器3的通信信道,从而指示后面没有更多内容。
(10)客户端网络浏览器3显示文档的其余部分。
更详细的执行图解参见图1。
有关该示例的完整源代码,参见本说明书末尾处的附录。
  Appendix:
  Source 1:Main Servlet
  import java.io.*;
  import javax.Servlet.*;
  import javax.Servlet.http.*;
  public class MainServlet extends HttpServlet implements Servlet{
/**
  *URL of the secondary Servlet storing the requested key/valde pairs
  *in the HTTP session
  */
private final static String SECONDARY_SERVLET_URL=″SecondaryServlet″;
/**
*@see javax.Servlet.http.HttpServlet#void
  (javax.Servlet.http.HttpServletRequest,
  javax.Servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req,HttpServletResponse resp)
  throws ServletException,IOException{
  resp.setContentType(″text/html;charset=ISO-8859-4″);
  HttpSession session=req.getSession();
  PrintWriter out=resp.getWriter();
  out.println(″<html>″);
  out.println(″<head>″);
  out.println(″</head>″);
  out.println(″<body>″);
  //Starts the generation of the response
  out.println{
    ″Some content produced by the Servlet oefore the missing value is asked<p>″);
  //(…)
  //at some point during the processing of the answer,
  //the Servlet netices that some information are missing
  //Suspends the generation of the response.
  //Asks the client′s web-browser′s to retrisve the missing value and send it to
  //the server through the secondary Servlet
  //The 3rd parameter is the JavaScript expression retrieving
  //the value when executed in the browser.
  //In this example we ask the client′s web-browser for the width of thebrowser window
  Object value=requestValue(req,resp,″window.outerWidth;″);
  //When this method returns,the local variable″value″contains therequested value
  //Continue the generation of the response
  //(…)
  out.println(″Finish the generation of the page:Width=″+value);
  out.println(″</body>″);
  out.println(″</html>″);
}
/**
  *Generates a unique key that can be used tc store the missing value inthe Web session
  */
private String generateKey(){
  return″key_″+System.currentTimeMillis();
}
/**
  *Requests the client′s web-browser to provide the Servlet a missing value.
  *This methods generates and transmit a JavaScript to be interpreted
  *by the client′s web-browser.This JavaScript retrieves the missing value
  *by executing e JavaScript expression given as parameter,
  *and sends a request to the secondary Servlet that will store
  *the retrieved value in the HTTP session,to that it is accessible
  *for the main Servlet.
  *Note that this method will block and suspend the main Serv1et,until
  *the missing value has been returned by the client′s web-browser.
*
  *@param req The main HTTP request sent by the client′s web-browser to this mainServlet
  *@param resp The HTTP response used by this Servlet to respond to the request
  *@param JavaScriptExpression The JavaScript expression,which when executed
  *in the client′s web-browser,returns the missing information needed by this Servle
  *@return The missing value returned by the client′s web-browser.
  */
private Object requestValue(
  HttpServletRequest req,
  HttpServletResponse resp,
  String JavaScriptExpression)
  throws IOException{
  PrintWriter out=resp.getWriter();
  HttpSession session=req.getSession();
  //Generates a unique key,that wil1 be used to store/retrieve the
  //missing value in the current HTTP session
  String key=generateKey();
  //Starts the generation of a JavaScript that will retrieve
  //the information from the client′s web-browser
  out.println (″<script language=\″JavaScript\″>″);
  //In this example the client′s web-browser will prompt the user to enterthe missing value
  out.println(″var value=″+JavaScriptExpression+″;″);
  //once the value has been retrieved on stored on the client side
  //in a JavaScript variable,transmit tnis value to the server through
  //the secondary Servlet
  //Makes the client′s web-browser open an HTTP request to the secondary Servlet,
  //passing the key and value of the missing information
  out.println(″var httpReq=new XMLHttpRequest();″);
  out.println(
    ″httpReq.open(\″GET\″,\″″
      +S ECONDARY_SERVLET_URL
      +″?key=″
      +key
      +″&value=\″+value,true);″);
  out.println (″httpReq.send(null);″);
out.println(″</script>″);
//Flushes the buffer of the Sorvlet,so that the JavaScript retrieving the
//missing value is transmitted and executed immediately by the client′s
web-browser
resp.flushBuffer();
//Suspends the execution of the main Servlet until a value can be found
//in the HTTP session under the key defined previously
Object value=session.getAttribute(key);
while(value==null){
  try{
    Thread.sleep(100);
  }catch(InterruptedExceptione){
    e.printStackTrace();
  }
  value=session.getAttribute(key);
}
//Now that the value has been extracted,remove its key/value pair from
//the session,to avoid memory leaks and allow the same key to be reused
//several times
session.removeAttribute(key);
return value;
  }
}
Source 2:Secondary servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
  *Secondary Servlet updating the HTTP session with key/value pairs.
  *The key/value pairs to store are contained in the incoming requests
  *under the keys″key″and″value″.
  *For example a request containing the parameters
  *″mySecondaryServletURL?key=myKey&value=myValue″
  *will store the velue″myValue″under the key″myKey″in the HTTP session.
  */
public class SecondaryServlet extends HttpServlet implements Servlet{
  /**
  *@see javax.servlet.http.HttpServlet#void
  (javax.servlet.http.HttpServletRequest,javax.servlet.http.BttpServletResponse)
  */
  public void doGet(HttpServletRequest req,HttpServletResponse resp)
      throws ServletException,IOException{
      //Extracts from the request coming from the browser the key/value pair
      //to store in the HTTP session
      String key=req.getParameter(″key″);
      String value=req.getParameter(″value″);
      if(key!=null){
          //Store this key/value pair in the HTTP session
          req.getSession().setAttribute(key,value);
          }
  }
}

Claims (19)

1.一种在不改变现有通信协议以及客户端的情况下改善客户端-小型服务程序通信的方法,其中所述通信协议的特征在于:客户端发起从小型服务程序检索信息的请求的单向通信路径,以及所述小型服务程序发送至少包含指示所述请求的成功或失败的返回码的响应,并且在存在的情况下还包括所述请求的结果,其中在服务器侧,所述方法的特征在于以下步骤:
如果所述小型服务程序识别到在所述请求中没有包括用于提供完整响应的缺失信息,则通过利用所述请求的响应功能,自动地打开从所述小型服务程序经由所述客户端的网络浏览器到所述小型服务程序的另一通信路径,用于提供所述缺失信息到所述小型服务程序,
其中所述另一通信路径由另一小型服务程序功能组件支持,并且其特征在于以下步骤:
所述小型服务程序产生脚本,其中所述脚本当在客户端的网络浏览器处执行时检索所述缺失信息并调用所述另一小型服务程序功能组件,
将所述脚本附加到所述响应,从而指示其为局部响应,
发送包括所述脚本的响应到客户端的网络浏览器,
暂停所述小型服务程序对所述响应的执行,直到所述缺失信息可用为止,所述另一小型服务程序功能组件接收所述缺失信息,其中所述缺失信息被包含在所述脚本当在所述客户端的网络浏览器上执行期间所创建的新请求中,
提供所述缺失信息到所述小型服务程序,以及
所述小型服务程序利用所述缺失信息继续执行所述响应,以检索所述完整响应的其余部分,并提供所述完整响应的所述其余部分到所述客户端的网络浏览器用于显示。
2.根据权利要求1的方法,其中所述通信协议是HTTP协议。
3.根据权利要求1或2的方法,其中所述另一小型服务程序功能组件被实现为单独的次小型服务程序。
4.根据权利要求3的方法,其中所述次小型服务程序接收所述脚本所发送的新HTTP请求,并将缺失信息存储在所述小型服务程序和所述次小型服务程序这二者所使用的共享存储器中。
5.根据权利要求3的方法,其中所述缺失信息被所述次小型服务程序存储在所述客户端与所述服务器之间的当前HTTP会话对象中,并被传递到所述小型服务程序。
6.根据权利要求1或2的方法,其中所述另一小型服务程序功能组件是所述小型服务程序的一部分,并且所述小型服务程序对所述新请求的接收自动地开始所述小型服务程序的第二实例,并且以所述缺失信息更新当前HTTP会话对象。
7.根据权利要求1或2的方法,其中所述网络浏览器对所述脚本的执行自动地检索缺失信息,或通过附加用户输入来检索缺失信息。
8.根据权利要求1或2的方法,其中所述小型服务程序被实现为Java小型服务程序。
9.根据权利要求1或2的方法,其中所述脚本被实现为Java脚本。
10.根据权利要求1或2的方法,其中所述脚本包含具有由所述小型服务程序所产生的分配的密钥的缺失信息。
11.一种在不改变现有通信协议以及客户端的情况下改善客户端-小型服务程序通信的设备,其中所述通信协议的特征在于:客户端发起从小型服务程序检索信息的请求的单向通信路径,以及所述小型服务程序发送至少包含指示所述请求的成功或失败的返回码的响应,并且在存在的情况下还包括所述请求的结果,其中在服务器侧,所述设备的特征在于包括:
如果所述小型服务程序识别到在所述请求中没有包括用于提供完整响应的缺失信息,则通过利用所述请求的响应功能,自动地打开从所述小型服务程序经由所述客户端的网络浏览器到所述小型服务程序的另一通信路径,用于提供所述缺失信息到所述小型服务程序的装置,其中所述另一通信路径由另一小型服务程序功能组件支持,
由所述小型服务程序产生脚本的装置,其中所述脚本当在客户端的网络浏览器处执行时检索所述缺失信息并调用所述另一小型服务程序功能组件,
将所述脚本附加到所述响应,从而指示其为局部响应的装置,
发送包括所述脚本的响应到客户端的网络浏览器的装置,
暂停所述小型服务程序对所述响应的执行,直到所述缺失信息可用为止的装置,由所述另一小型服务程序功能组件接收所述缺失信息的装置,其中所述缺失信息被包含在所述脚本当在所述客户端的网络浏览器上执行期间所创建的新请求中,
提供所述缺失信息到所述小型服务程序的装置,以及
由所述小型服务程序利用所述缺失信息继续执行所述响应,以检索所述完整响应的其余部分,并提供所述完整响应的所述其余部分到所述客户端网络浏览器用于显示的装置。
12.根据权利要求11的设备,其中所述通信协议是HTTP协议。
13.根据权利要求11或12的设备,其中所述另一小型服务程序功能组件被实现为单独的次小型服务程序。
14.根据权利要求13的设备,其中所述次小型服务程序接收所述脚本所发送的新HTTP请求,并将缺失信息存储在所述小型服务程序和所述次小型服务程序这二者所使用的共享存储器中。
15.根据权利要求13的设备,其中所述缺失信息被所述次小型服务程序存储在所述客户端与服务器之间的当前HTTP会话对象中,并被传递到所述小型服务程序。
16.根据权利要求11或12的设备,其中所述另一小型服务程序功能组件是所述小型服务程序的一部分,并且所述小型服务程序对所述新请求的接收自动地开始所述小型服务程序的第二实例,并且以所述缺失信息更新当前HTTP会话对象。
17.根据权利要求11或12的设备,其中所述网络浏览器对所述脚本的执行自动地检索缺失信息,或通过附加用户输入来检索缺失信息。
18.根据权利要求11或12的设备,其中所述小型服务程序被实现为Java小型服务程序。
19.根据权利要求11或12的设备,其中所述脚本被实现为Java脚本。
CN2006800325577A 2005-09-08 2006-07-26 改善客户端-小型服务程序通信的方法和系统 Active CN101258494B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP05108239 2005-09-08
EP05108239.4 2005-09-08
PCT/EP2006/064658 WO2007028670A1 (en) 2005-09-08 2006-07-26 Method and system for improving client-servlet communication

Publications (2)

Publication Number Publication Date
CN101258494A CN101258494A (zh) 2008-09-03
CN101258494B true CN101258494B (zh) 2010-10-27

Family

ID=35610123

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800325577A Active CN101258494B (zh) 2005-09-08 2006-07-26 改善客户端-小型服务程序通信的方法和系统

Country Status (8)

Country Link
US (2) US8566390B2 (zh)
EP (1) EP1922655B1 (zh)
JP (1) JP4640682B2 (zh)
KR (1) KR100962893B1 (zh)
CN (1) CN101258494B (zh)
AT (1) ATE426856T1 (zh)
DE (1) DE602006005943D1 (zh)
WO (1) WO2007028670A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US8079025B2 (en) * 2007-06-08 2011-12-13 Apple Inc. Asynchronous load of source dependencies
US8127038B2 (en) 2008-03-11 2012-02-28 International Business Machines Corporation Embedded distributed computing solutions
KR101383573B1 (ko) * 2008-08-01 2014-04-09 삼성전자주식회사 화상형성장치 및 그의 웹 정보 제공방법
CN101686245B (zh) * 2008-09-28 2014-06-11 国际商业机器公司 用于隔离超文本传输协议会话的方法和系统
US8949408B2 (en) * 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US8995266B2 (en) 2010-07-07 2015-03-31 Cisco Technology, Inc. Performing path-oriented systems management
US8838781B2 (en) * 2010-07-15 2014-09-16 Cisco Technology, Inc. Continuous autonomous monitoring of systems along a path
US8555083B1 (en) * 2010-07-22 2013-10-08 Symantec Corporation Systems and methods for protecting against unauthorized access of encrypted data during power-management modes
US8909697B2 (en) * 2010-11-29 2014-12-09 Hughes Network Systems, Llc Computer networking system and method with javascript execution for pre-fetching content from dynamically-generated URL and javascript injection to modify date or random number calculation
US20120197971A1 (en) * 2011-02-01 2012-08-02 Shiarng Llc Enhanced web-browsing system and method
US9021109B1 (en) * 2012-01-23 2015-04-28 Amazon Technologies, Inc. Controlling requests through message headers
US9525754B1 (en) * 2012-09-28 2016-12-20 EMC IP Holding Company LLC Task-based approach to execution, monitoring and execution control of actions
US9537350B2 (en) 2013-03-15 2017-01-03 Regal Beloit America, Inc. Switch-mode power supply with a dual primary transformer
US9292373B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Query rewrites for data-intensive applications in presence of run-time errors
US10103961B2 (en) * 2014-07-25 2018-10-16 Teacher Insurance & Annuity Association of America Collecting client-side application performance monitoring information
US10778744B2 (en) * 2015-08-13 2020-09-15 Molbase (Shanghai) Biotechnology Co., Ltd. Configurable caching system and method thereof
US10462145B2 (en) * 2016-07-15 2019-10-29 The Directv Group, Inc. Method and apparatus for controlling access to custom browser functionality
CN109951567A (zh) * 2019-04-02 2019-06-28 山东浪潮云信息技术有限公司 一种双数据中心应用部署方法
CN114629885A (zh) * 2021-01-05 2022-06-14 亚信科技(中国)有限公司 一种业务请求的处理方法、装置、电子设备及存储介质
US20230099368A1 (en) * 2021-09-30 2023-03-30 Intuit Inc. Conversational user interfaces based on knowledge graphs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012098A (en) * 1998-02-23 2000-01-04 International Business Machines Corp. Servlet pairing for isolation of the retrieval and rendering of data
CN1473297A (zh) * 2000-10-02 2004-02-04 ���չ�˾ 用于转换万维网上的内容的方法和设备
CN1619559A (zh) * 2003-11-18 2005-05-25 华为技术有限公司 一种提供客户服务的方法及其系统
CN1666192A (zh) * 2002-09-03 2005-09-07 富士通株式会社 检索处理系统、其检索服务器、客户端、检索处理方法、程序及记录介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9924259D0 (en) 1999-10-13 1999-12-15 Duncan Graham L Interactive service system
US20020133567A1 (en) 2001-01-12 2002-09-19 Te George A. Method and system for generalized common gateway interface processing
US20030145048A1 (en) 2002-01-18 2003-07-31 Bea Systems, Inc. System and method for HTTP request preprocessing for servlets and application servers
US7426535B2 (en) * 2002-10-08 2008-09-16 Telecommunication Systems, Inc. Coordination of data received from one or more sources over one or more channels into a single context
US20040168122A1 (en) * 2003-02-21 2004-08-26 Kobipalayam Murugaiyan Senthil Nathan System, method and computer readable medium for transferring and rendering a web page
JP4532885B2 (ja) * 2003-12-01 2010-08-25 キヤノン株式会社 サーバコンピュータ及び、サーバコンピュータによりページデータを通信端末へネットワークを介して提供する方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012098A (en) * 1998-02-23 2000-01-04 International Business Machines Corp. Servlet pairing for isolation of the retrieval and rendering of data
CN1473297A (zh) * 2000-10-02 2004-02-04 ���չ�˾ 用于转换万维网上的内容的方法和设备
CN1666192A (zh) * 2002-09-03 2005-09-07 富士通株式会社 检索处理系统、其检索服务器、客户端、检索处理方法、程序及记录介质
CN1619559A (zh) * 2003-11-18 2005-05-25 华为技术有限公司 一种提供客户服务的方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US 6012098 A,全文.

Also Published As

Publication number Publication date
EP1922655A1 (en) 2008-05-21
KR20080041634A (ko) 2008-05-13
KR100962893B1 (ko) 2010-06-09
JP4640682B2 (ja) 2011-03-02
US20090164613A1 (en) 2009-06-25
US20090125579A1 (en) 2009-05-14
ATE426856T1 (de) 2009-04-15
DE602006005943D1 (de) 2009-05-07
WO2007028670A1 (en) 2007-03-15
JP2009508197A (ja) 2009-02-26
US8566390B2 (en) 2013-10-22
CN101258494A (zh) 2008-09-03
EP1922655B1 (en) 2009-03-25

Similar Documents

Publication Publication Date Title
CN101258494B (zh) 改善客户端-小型服务程序通信的方法和系统
CN108319483B (zh) 网页处理方法、装置、终端及存储介质
US7966367B2 (en) Web application execution method
US7861213B2 (en) Mechanism for developing AJax applications using java swing framework and method for using the same
CN101615179B (zh) 用于Web应用的跨域交互的方法和系统
Mesbah et al. An architectural style for Ajax
US20100082747A1 (en) Real-time collaborative browsing
US8977652B2 (en) Client-side API framework for uniform resource identifier (URI) manipulations
AU2005200852A1 (en) System and method for building wireless applications with intelligent mapping between user interface and data components
WO2010001871A1 (ja) アプリケーション拡張システム、拡張方法、拡張プログラム
KR20140016259A (ko) 소프트웨어 애플리케이션의 최종사용자에 대한 지원제공 방법
US10725751B2 (en) Generating a predictive data structure
CN109086905A (zh) 用于电子通信的可扩展性特征
CN110309931A (zh) 一种业务优化方法及装置
Varanasi et al. Spring Rest
CN108733495B (zh) 用于实现跨平台通信的方法和设备
US11169861B2 (en) Application server programming language cloud functions
CN103917951B (zh) 应用调用的方法及操作系统、浏览器
US20070124479A1 (en) Execution of server-side dynamic pages
JP2007079988A (ja) Wwwブラウザ、htmlページ共有システムおよびhtmlページ共有方法
US10592388B1 (en) Methods for facilitating more efficient network message exchange and analysis and devices thereof
WO2002063504A2 (en) Methods and apparatus for augmenting page generation code to effect partial page regeneration
Frécon Web (-like) Protocols for the Internet of Things
Mukhamadiev Transitioning from server-side to client-side rendering of the web-based user interface: a performance perspective
CN116708595A (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