管理会话的Web服务器及其方法

文档序号:6476667阅读:198来源:国知局
专利名称:管理会话的Web服务器及其方法
技术领域
本发明涉及Web服务器。本发明尤其涉及管理会话的Web服务器及其方法。
背景技术
为了实现近年来的多种多样的网页(webpage),在Web服务器中装载有会话管理功能。按照该功能,使用者不仅能够阅览已请求的网页,还能够登录到自己的专用页来参照以前访问过的历史,或者根据该历史来进行接下来的操作。会话管理通过按每个使用者来保存表示由W e b服务器进行的处理的经过的会话状态来实现。例如,在JavaEE ( Java Enterprise Edition、 Java为注册商标)中,会话状态被存储在Web服务器的存储装置中,根据在Web服务器上运行的Servlet程序,作为HTTP会话对象(object)而被参照。专利文献1:日本特开2004- 206695号公报非专利文献1: DB2 Alphablox的概要,主页URL"http:〃www — 06.ibm.com/jp/software/data/bi/alphablox/" , 2007年 1月10日才企索
非专利文献2: Patterns of Enterprise Application Architecture,Martin Fowler著,Amazon.com书籍介绍,主页URL"http:〃www.amazon.com/exec/obidos/ASIN/0321127420", 2007年1月10日检索
非专利文献 3 : WebSphere Application Server Version 5.1InfoCenter,会话管理端口的说明,主页URL
"http:〃publib.boulder.ibm.com/infocenter/wasinfo/v5rl〃topic/com.ibm.websphere.nd.doc/info/ae/ae/cprs. sesm.html", 2007年1月 10日检索非专利文献4: Web 2.0时代的DWH环境下用DB2 Alphablox来实现的Inline Analytic的概要,主页URL"http:〃www -06.ibm.com/ip/domino01/mkt/dminfo.nsf/doc/00825839,,, 2007年1月
10日检索

发明内容
当网站的规模增大时,由于单一的Web服务器的处理能力不够,所以利用多个Web服务器来实现。在这种情况下,依次接收的HTTP请求被分配给各Web服务器来进行处理。因此,存在着从同一使用者处接受的多个HTTP请求分别到达不同的多个Web服务器的情况。在这种情况下,会话状态仅被存储在接收了以前的HTTP请求的Web服务器中,所以在响应下一个HTTP请求的处理中就不能参照该会话状态了 。
对此,采用了由多个Web服务器来共享会话状态的功能(参照非专利文献3)。但是,采用该功能有时会由于不能有效地选择应在Web服务器之间共享的会话状态而导致共享所需的通信量和处理量增大。另外,该功能的应用范围有限,例如不能应用于采用了非专利文献1的数据库的系统。另一方面,采用了如下技术通过将会话状态作为cookie等存储在终端装置的Web浏览器上,而不是存储在Web服务器上来避免该问题出现(参照非专利文献2和专利文献1 )
在该项技术中,存储在终端装置中的会话状态与下一个HTTP请求相对应(建立对应关系)而被发送到Web服务器。然后,该会话状态根据Servlet程序,作为HTTP请求附带的参数而被参照。但是,有在HTTP请求中设定有多个其他的参数的情况,专业技术人员参照程序也难以判断哪个参数为会话状态。这可能导致Servlet程序的开发和维护效率的降低。另外,用于访问会话状态的接口也与HTTP会话对象完全不同,所以通过规格变更将会话状态的保存地点从Web服务器变更为终端装置也很困难。关于非专利文献4,参照后面。
因此,本发明的目的在于提供一种能够解决上述课题的Web服务器、系统、方法以及程序。该目的通过权利要求书中的独立权利要求所述的特征的组合来实现。另外,从属权利要求规定本发明的更有利的具体例。
为了解决上述课题,本发明提供一种Web服务器,其包括存储部,其用于存储表示响应从终端装置依次接收的多个HTTP请求而进行的处理的经过的会话状态;接收部,其将会话状态与第一HTTP请求建立对应而从终端装置进行接收;存入部,其向上述存,者部中的、作为HTTP会话对象而被响应接收到的上述第一 HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的上述会话状态;访问部,其响应上述处理程序中包含的、访问HTTP会话对象的指令的执行来访问所存入的上述会话状态;以及返回部,其响应上述处理程序中包含的、返回第一 HTTP响应的指令的执行,从上述存储部中读出上述会话状态来作为与第二 HTTP请求建立对应而由终端装置将其发送的参数,来设定在上述第一 HTTP响应中,并将所设定的上述第一 HTTP响应返回到终端装置。另外,本发明提供一种利用上述Web服务器响应HTTP请求而进4亍处理的方法、作为上述Web服务器使信息处理装置工作的程序、以及具有多个上述Web服务器的系统。
这些特征组的变形也能构成发明。


图1表示采用了第一结构的Web服务器即Web服务器510的功
能的概要。
图2表示采用了第二结构的Web服务器即Web服务器540的功
能的概要。
图3表示本实施方式的信息系统10的整体结构。图4表示本实施方式的Web服务器20-1的功能结构。
图5表示本实施方式的Web服务器20- 1与终端装置15进行通
信的顺序。
图6是表示在Web服务器20-1中工作的软件和数据的笫一结
构的示意图。
图7是表示在Web服务器20-1中工作的软件和数据的第二结
构的示意图。
图8表示在本实施方式的变形例中Web服务器20- 1 ~N与终端装置15进行通信的顺序。
图9表示在本实施方式或其变形例中作为Web服务器20 - 1发挥功能的信息处理装置900的硬件结构的一例。
标号说明
IO信息系统15终端装置
18调度(dispatcher)装置
20 Web服务器
200存储部
210接收部
220存入部
230执行部
240访问部
250返回部
260更改处理部
510 Web服务器
520 HTTP servlet请求对象
530 HTTP servlet
540 Web服务器
550 HTTP servlet请求对象560 HTTP servlet
600滤镜对象(filter object)
610 HTTP servlet请求对象
620浏览器内才亥(rendering engine )
630 HTTP servlet
635 Servlet程序
700滤镜对象(过滤器对象)
710 HTTP servlet请求对象
720浏览器内核(或称解释引擎:Rendering Engine) 730 HTTP servlet 735 Servlet程序 900信息处理装置
具体实施例方式
以下,通过用于实施发明的最佳方法(以下,称为实施方式)
而且实施方式中说明的特征的全部组合未必是发明的解决手段中必须的。
图1表示采用了第一结构的Web服务器即Web服务器510的功 能的概要。在该结构中,会话状态被存储在Web服务器510中。响 应HTTP请求的工作如下。首先,Web服务器510将HTTP请求与 会话ID建立对应而接收。检索与接收到的会话ID对应的HTTP servlet请求对象来提供给HTTP servlet530。将检索到的该对象作为 HTTP servlet请求对象520。至此的工作通过依据例如Java EE ( Java Enterprise Edition )等的中间软件自动进行。接着,根据应用程序的 研究开发人员制作的Servlet程序,HTTP servlet 530开始工作。
如图中的程序代码的第 一行所示那样,在实现HTTP servlet 530 的Servlet程序上,HTTP servlet请求对象根据"req"这样的自变量进 行参照。如第四行所示那样,如果对该"req"调用getSession这样的方法(method ),则从HTTP servlet请求对象中读出HTTP会话对象。 该对象是会话状态的实体。例如图中所示,会话状态用"keyl,,等的关 键字名称和作为其值的字符串"abc"的组来表示。在Servlet程序中, 作为"session"这样的变量而被参照。
如第六行所示那样,如果对"session"调用getAttribute这样的方 法,则能从HTTP会话对象中读出值。在该Servlet程序中,读出的 值被代入变量"value"中。另外,如第八行所示那样,如果对"session" 调用setAttribute这样的方法,则HTTP会话对象的值被更新。在该 Servlet程序中,关键字"keyl"的值被更新为"abc"。在返回HTTP响 应时,HTTP servlet530将接收HTTP请求时接收到的会话ID与该 HTTP响应建立对应而发送。
在图l所示的第一结构中,会话状态的实体被存储在Web服务 器510中。并且,为了能够在响应请求的处理中参照正确的会话状 态,将会话ID与请求建立对应而发送。这样,第一结构中,也能够 将响应多个请求的一系列的处理关联作为会话来管理。但是,在用 包含Web服务器510的多个Web服务器实现网站时,将发生不良状 况。即,即使发送正确的会话ID,当请求到达与进行了以前的处理 的Web服务器不同的Web服务器时,不会读出基于以前的处理的会 话状态。
与此相对,在以下的图2所示的第二结构中,通过将会话状态 设置在终端装置一侧来实现该课题的解决。
图2表示采用了第二结构的Web服务器即Web服务器540的功 能的概要。在该结构中,会话状态作为cookie等被存储在终端装置 中。响应HTTP请求的工作如下。首先,Web服务器540将HTTP 请求与会话状态建立对应而接收。在此,接收的与图l的情况不同, 不是会话ID,而是会话状态的实体。会话状态被追加设定在HTTP 请求所设定的其他参数中。该其他参数是指对网站的请求的属性, 例如若网站用于购物,则该其他参数是要购买的商品的ID、数量等。 即,会话状态与这样的参数一起被设定在HTTP请求中而被接收。至此的工作通过依据例如Java EE等的中间软件自动地进行。然后, 根据Servlet程序,HTTPservlet560开始工作。
如图中的程序代码的第一行所示那样,在实现HTTPservlet560 的Servlet程序上,HTTPservlet请求对象550根据"req"这样的自变 量进行参照。在该对象中设定与HTTP请求建立对应而接收到的所 有的参数。如第四行所示那样,如果对对象req指定参数的关键字名 来调用getParameter这样的方法,则能够读出用该关键字名指定的参 数。该程序例中,指定了表示会话状态的key2,所以会话状态的值 "abc,,被读出,并被代入到变量value中。另外,如第六行所示那样, 如果对该对象req调用setParameter这样的方法,代入指定的关键字 所指定的值。另外,如第九行-第十行所示那样,如果作为HTTP 响应而返回的网页中嵌入会话状态,则能够将该会话状态与下一个 HTTP请求建立对应而再次发送。
这样,根据第二结构,也能够将会话状态存储在终端装置侧, 并且根据Web服务器侧的Servlet程序适当地参照该会话状态。但在 该结构中,有在Servlet程序的开发、维护的效率上产生不良状况的 情况。即,Servlet程序的字面上,会话状态作为HTTP请求的参数 之一而被参照。并且,能够在HTTP请求中设定其他的原来请求所 附带的各种属性作为参数。表示这些属性的参数和表示会话状态的 参数仅根据参数的关键字名来区别。因此,如果程序的研究开发人 员和维护者不知道表示会话状态的参数的关键字名,则很难辨别哪 个参数表示会话状态。该不良状况随着网站的大规模化而越发显著, 而且随着参与开发和维护的工程技术人员的增加而越发显著。即, 仅看程序的字面,没有写明会话状态,所以需要使用规格说明书等 其他手段充分地共享信息。
这样,根据第一结构或第二结构,都能够管理会话状态,但是 存在不适合近年来的大规模且复杂的网站的构建的情况。与之相对, 根据参照图3 图9说明的结构,能够在终端装置侧管理会话状态, 并且大幅度提高程序的开发、维护的效率。以下,具体进行说明。图3表示本实施方式的信息系统10的整体结构。信息系统10 包括调度装置18和Web服务器20- 1 ~N,其目的是响应从外部的 终端装置15接受的HTTP请求而返回HTTP响应。调度装置18将 从终端装置15接受的HTTP请求有选择地分配给Web服务器20 一 1 N的某一个。具体而言,调度装置18利用例如循环方法等将从 终端装置15接收到的HTTP请求传输到从Web服务器20 - 1 ~ N中 选择出的Web服务器。Web服务器20- 1 ~ N的每一个在接收HTTP 请求时,响应该请求而进行处理,根据该处理结果生成HTTP响应, 并将其返回到终端装置15。
图4表示本实施方式的Web服务器20-1的功能结构。Web服 务器20 - 1包括存储部200、接收部210、存入部220、执行部230、 访问部240以及返回部250。首先,叙述这些部件与硬件资源的关系。 存储部200通过后述的RAM1020或硬盘驱动器1040等存储装置来 实现。另外,接收部210和返回部250通过后述的通信接口 1030等 硬件设备和执行Java EE等中间软件的CPU1000的组合来实现。另 外,存入部220和执行部230通过由CPU1000使该中间软件上的 Servlet程序工作来实现。另外,访问部240通过由CPU1000使与Java EE等中间软件一起被安装的被称为类库的程序工作来实现。
存储部200是为了存储表示响应从终端装置15依次接收的多个 HTTP请求而进行的处理的经过的会话状态而设置的。接收部210将 会话状态与第一 HTTP请求建立对应而从终端装置15进行接收。存 入部220向存储部200中的、根据响应接收到的该第一 HTTP请求 进行处理的处理程序而被作为HTTP会话对象进行访问的存储区域 中,存入接收到的会话状态。存入部220通过例如被称为滤镜类的、 当Servlet程序工作开始时在该工作开始之前进4亍工作的对象来实 现。即,存入部220在由后述的执行部230使Servlet程序开始工作 之前开始工作,将会话状态存储在存储部200。
执行部230执行处理程序即Servlet程序。在该执行中,有执行 访问HTTP会话对象的指令的情况。该指令是调用访问HTTP会话对象的方法的指令,例如,在Java EE中是对getSession方法或 setSession方法等的调用。接受这样的调用,访问部240访问存入存 储部200的会话状态。所谓访问,也就是读出或写入,由此能够更 新会话状态。
另外,在Servlet程序执行中,有执行用于返回与第一 HTTP请 求对应的第一 HTTP响应的指令的情况。该指令是对表示HTTP响 应的输出流(例如Java EE的输出对象等)调用println等的字符串 输出用的方法的指令。作为其他例,该指令还可以是用JSP (Java Server Pages)等记述的网页本身。JSP网页是用于将该页的内容变 换为作为HTTP请求而返回的指令并被执行。
响应这样的指令的执行,返回部250从存储部200读出会话状 态。被读出的会话状态存在如下情况例如利用访问部240的功能 从接收时的会话状态进行了变更。并且,返回部250将读出的该会 话状态作为与第二 HTTP请求建立对应而由终端装置15发送的参 数,来设定在该第一 HTTP响应中,并将所设定的该第一 HTTP响 应返回到终端装置15。优选的是,该参数是在接受了该第一 HTTP 响应的终端装置15显示的网页上不显示的参数。另外,优选的是, 该参数是响应对该网页的使用者的操作与第二 HTTP请求建立对应 而发送的参数。在此所说的使用者的操作是指,按下例如"提交"按 钮、"OK,,按钮、或"下一步,,按钮等的操作。由此,能够与第二HTTP 请求建立对应而发送最新的会话状态。
Web服务器20-2~N的各个结构都与如上所述的Web服务器 20-1大致相同,所以省略说明。
根据以上的结构,会话状态能够不是由Web服务器20- 1来管 理,而是由终端装置15侧适当地管理。由此,即使在来自终端装置 15的第二 HTTP请求不到达Web服务器20- 1而到达Web服务器 20-2的情况下,Web服务器20-2也能够适当地参照最新的会话 状态来继续正常的处理。另外,由执行部230执行的Servlet程序中, 会话状态与HTTP请求的参数相区别,可作为HTTP会话对象来参照。由此,即使在网站大规模化且Servlet程序复杂的情况下,只要 工程技术人员看到程序,就能够明确地识别会话状态。另外,由于 会话状态没有显示在网页上,所以能够使得不会对网站的使用者带 来任何不协调感。
接着,说明网站采用了 Ajax ( Asynchronous JavaScript + XML ) 时的处理功能。在这种情况下,即使使用者没有操作网页上的按钮, 也响应使用者移动鼠标光标的工作等,网页所包含的Java Script程 序自动地将基于XMLHTTP通信的请求发送到Web服务器20 - 1。 其结果,存在如下情况访问部240在返回上述第一 HTTP响应开 始直到接收上述第二 HTTP请求期间,响应基于XMLHTTP通信的 请求,更新已存入存储部200的会话状态。
在这种情况下,虽然更新后的最新的会话状态被存储在存储部 200中,但是与接下来的第二 HTTP请求建立对应而^皮发送到Web 服务器20-1的会话状态变成更新前的旧的会话状态。其结果,通 过存入部220的工作,被接收到的旧的会话状态覆盖了最新的会话 状态,导致会话无法正确地继续。为了避免这种不良状况,在网站 采用了 Ajax时,优选Web服务器20-1还具有更改处理部260。并 且,返回部25向终端装置15返回作为第二 HTTP请求而由终端装 置15请求更改处理的第一HTTP响应。
接受第一HTTP响应的终端装置15接受使用者的操作,将请求 更改处理的第二 HTTP请求发送到Web服务器20- 1。更改处理部 260在接收该请求时从存储部200读出会话状态。然后,更改处理部 260将该会话状态作为与接下来的第三HTTP请求建立对应而由终端 装置15发送的参数,来设定在要返回的第二HTTP响应中。然后, 更改处理部260返回所设定的该第二 HTTP响应。接受第二 HTTP 响应的终端装置15立刻发送第三HTTP请求。不知道该请求到达 Web服务器20 - 1 ~N中的哪一个。但是,最新的会话状态与该第三 HTTP请求建立对应。因此,当接收第三HTTP请求时,接收部210 能够将对应接收到的会话状态存入存储部200。这样,通过设置更改处理部260,在采用Ajax的网站中也能够 适当地维持会话。
图5表示本实施方式的Web服务器20- 1与终端装置15进行通 信的顺序。在图5中,首先说明涉及没有采用Ajax的网站的处理。 当从使用者接受对已显示的网页的操作时,终端装置15将第一 HTTP 请求与会话状态建立对应而发送到Web服务器20-1 (S500)。该 会话状态在已显示的该网页的数据中被设定为应与下一个HTTP请 求建立对应来发送的参数。与其对应,接收部210将第一 HTTP请 求与会话状态建立对应来接收(S510)。
接着,存入部220向存储部200中的、根据响应接收到的该第 一 HTTP请求进行处理的处理程序而#皮作为HTTP会话对象进行访 问的存储区域,存入接收到的该会话状态(S520 )。会话状态既可 以一皮盖写,还可以^皮追加。即,存入部220可以存入由接收部210 新接收到的该会话状态,来代替已存储在存储区域的会话状态。另 外,存入部220可以对已存储在该存储区域中的会话状态进行追加, 存入由接收部210新接收到的该会话状态。
接着,执行部230开始执行处理程序即Servlet程序。该执行过 程中,当执行访问HTTP会话对象的指令时,对其进行响应,访问 部240访问存入存储部200的该会话状态(S540)。按照程序的处 理内容,访问的次数可以是多次。另外,Servlet程序执行的过程中, 当执行返回第一 HTTP响应的指令时,对其进行响应,返回部250 从存储部200读出会话状态(S550)。然后,返回部250对读出的 会话状态进行串行化处理(Serialization)。
所谓串行化处理是指,将存储部200中的地址空间所存储的会 话状态等数据向其他地址空间进行再配置、或者可经由通信电路发 送到外部装置的处理。具体如以下所述。存储部200存储包含多个 数据的数据组作为会话状态,这些数据有通过被称作表结构的结构 而相互关联的情况。例如,这些数据中的第一数据根据该第一数据 的存入目标地址而被第二数据参照。在这种情况下,当读出第一数据和第二数据并记录在其他地址时,第一数据的存入目标地址被变
更。其结果,导致实际的存入目标地址和用于被第二数据参照的存 入目才示:l也址不同。
因此,返回部250对这些数据组进行变换,使得不使用第一数
据的存入目标地址而被第二数据参照第一数据。作为一例,既可以 将数据组的数据结构从表结构变换为排列结构,还可以将被第二数 据参照的第 一数据所使用的数据变更为数据的标识符来代替存入目 标地址。除此此外,还可以将字符串的字符代码的变换和数值信息 的数值格式的变换等处理作为串行化处理来进行。
再有,返回部250还可以对进行了串行化处理的数据组进一步 进行包含加密处理和数据压缩处理中至少 一方的变换。根据加密处 理,能够在终端装置15的装置内和通信路径上无法参照原本不需要 对第三者公开的会话状态,能够防不正当的窃听行为于未然。被串 行化以及数据压缩/加密后的会话状态被设定在第一 HTTP响应中。 进而,作为其他处理,返回部250还可以进行用于对其他用途开》文 存储有读出的会话状态的存储区域的处理。该处理不是Servlet程序 的字面上的写明的处理,可以利用无用信息收集程序与Servlet程序 异步进行。然后,返回部250将该第一 HTTP响应返回到终端装置 15 (S560)。
终端装置15在接收第一 HTTP响应时,将该响应所包含的网页 向使用者显示(S580 )。当使用者操作网页上的按钮时,发送第二 HTTP请求(S500 )。此后的处理与已说明的从S500到S580的上 述处理相同。但是,该第二HTTP请求未必到达Web服务器20-1, 有时到达Web服务器20-2~N的某一个。即使在这样的情况下, 也将最新的会话状态与第二 HTTP请求建立对应来发送,所以接受 了请求的W eb服务器能够适当地继续进行处理。
接着,参照图6和图7,说明Web服务器20-1的处理功能的 安装例和对实施方式的进一步详细的变化(variation)。
图6是表示在Web服务器20-1工作的软件和数据的第一结构的示意图。该第一结构是将会话状态全部存储在终端装置15、在Web服务器20-1中仅从请求到响应的微少期间暂时存储会话状态 的结构。根据该结构,几乎不会改变以将会话状态存储在Web服务 器20 - 1为前提预先开发的Servlet程序,能够使其在将会话状态存 储于终端装置15的状态下进行工作。以下,叙述概要。Web服务器20 - 1使滤镜对象600、 HTT Pservlet请求对象610、 HTTPservlet630在例如依据JavaEE等的中间软件上工作。另外,Web 服务器20 - 1使浏览器内核620工作。滤镜对象600是例如JavaEE 的滤镜类的对象,作为上述存入部220进行工作。并且,当接收部 210接收HTTP请求时,滤镜对象600开始工作,将与该HTTP请求 对应接收到的会话状态存入存储部200。存储会话状态的存储区域如已叙述那样,其是根据Servlet程序 作为HTTP会话对象而被访问的区域。具体而言,滤镜对象600可 以作为HTTPservlet请求对象(图中的HTTPservlet请求对象610 ) 的1个数据字段来确保HTTP会话对象的存储区域,并对该存储区 域存入会话状态。另外,在已确保HTTP会话对象的存储区域的情 况下,滤镜对象600更新已存储在该存储区域中的会话状态,并存 入接收到的新的会话状态。例如,在图6中,keyl和ke2这两个字 符串变量双方是接收到的会话状态,请求接收前已被存入的会话状 态#皮废弃。响应会话状态的存入,执行部230开始工作,执行处理程序即 Servlet程序635来作为HTTPservlet630进行工作。如Servlet程序635 的第一行所示,在该程序上,HTTP servlet请求对象根据"req"这样的 自变量进行参照。如第4行所示,如果对该"req"调用getSession这 样的方法,则从HTTP servlet请求对象中读出HTTP会话对象。该 对象根据Servlet程序635,作为"session"这样的变量而被参照。如第六行所示那样,如果对"session"调用getAttribute这样的方 法,则能从HTTP会话对象中读出值。被读出的值被代入到变量 "valuel"中。同样地,如第七行所示那样,如果指定其他关键字名调用getAttribute这样的方法,则能从HTTP会话对象中读出其他的值。 被读出的值被代入到变量"value2"中。另外,如第九行所示那样,如果对"session"调用setAttribute这 样的方法,则HTTP会话对象的值被更新。在该行,关键字"keyl" 的值被更新为"abc"。同样地,如第十行所示那样,如果对"session"调 用setAttribute这样的方法,则HTTP会话对象的值被更新。在该行, 关键字"key 2"的值被更新为"ABC"。在图6中,例示了 Servlet程序635中依据Java EE等的处理部 分,但Servlet程序635也可以包含用JSP等记述的页部分。因此, 当HTTPservlet630的工作完成时,Servlet程序635被输出到浏览器 内核620,浏览器内核620开始进行JSP的渲染(rendering)处理。 所谓渲染处理是指,在将Servlet程序635记述的HTML的标签和属 性变换为输出这些HTML标签和属性的Java程序后执行该程序的处 理。在本实施方式中,浏览器内核620具有作为上述返回部250的 作用。即,浏览器内核620从存储部200读出作为HTTP会话对象 而被存储的会话状态,作为参数设定在变换后的HTML文件中。会 话状态被设定在构成HTTP响应的HTML文件的各form标签中。所 设定的参数是嵌套在各form标签的hidden标签的参数,作为一例, 能够使用form标签和<%标签如以下那样来表示。< form...〉< % = CSHttpServletRequest. renderClientSession ( request) % 〉< /form >在此,标签<%是对JSP的渲染处理的指令,表示在JSP渲染时 评价与该标签对应的式子的值并将评价值直接作为HTML文件的一部分。即,浏览器内核620将这样的标签〈%预先插入JSP代码中 后,对该JSP代码进行渲染来生成HTML文件,包含于HTTP响应中而返回。另外,设定的参数如上述那样被串行化,而且优选的是,进行包含加密和数据压缩的变换。另外,在图6的例子中,会话状态是 keyl和key2这两个,但浏览器内核620可以结合这些会话状态作为 一个参数设定于HTTP响应中。由此,在下一个HTTP请求中,表 示会话状态的参数为1个即可,能够减小HTML文档和请求消息的 数据大小,而且能够简化数据结构。Web服务器20-2-N的每一个都能够采用与Web服务器20-l相同的结构,所以省略说明。图7是表示在Web服务器20-1中工作的软件和数据的第二结 构的示意图。该第二结构是不是将会话状态全部存储在终端装置15 中而是能够根据会话状态的用途从终端装置15和Web服务器20- 1 中选择存储目标的结构。根据该结构,为了继续处理,能够仅将重 要度高的会话状态存储在终端装置15,能够减少用于维持会话的通 信数据量和处理量。以下,叙述概要。Web服务器20- 1使滤镜对象700、 HTTPservlet请求对象710、 HTTPservlet730在例如JavaEE等假想设备上工作。另外,Web服务 器20 - 1使浏览器内核720工作。滤镜对象700与图6的例子相同, 其是滤镜类的对象,当接收HTTP请求时,作为存入部220开始工 作。并且,滤镜对象700将与HTTP请求对应接收到的会话状态存 入存储部200中。存入会话状态的存储区域例如是HTTPservlet请求 对象710内的存储区域。但是,图7中的滤镜对象700与滤镜对象600不同,不是利用 接收到的会话状态更新已存储的会话状态,而是将接收到的会话状 态追加到已存储的会话状态中并存入。具体如以下所述。存储部200 在HTTPservlet请求对象710中的存储区域存储有第一 HTTP会话对 象和第二 HTTP会话对象这两个。第一 HTTP会话对象是应存储在 终端装置15的对象,在图中将keyl作为关键字名。第二HTTP会话 对象是应存储在Web服务器20 - 1的对象,在图中将key2作为关键 字名。滤镜对象700在接收将keyl作为关键字名的会话状态时,将该 会话状态存入HTTPservlet请求对象710中的存储区域。此时,滤镜 对象700不变更已将key2作为关键字名存入的会话状态而进行维 持。然后,执行部230开始工作,执行Servlet程序735来作为 HTTPservlet730工作。如第一行~第四行所示那样,当对HTTPservlet 请求对象调用getSession这样的方法时,读出会话状态来作为HTTP 会话类的对象。被读出的会话状态被存入变量serverSession中。该 处理与图6的例子相同。但是,在此被读出的仅是关键字名为key2 的会话状态。另一方面,如第六行、第七行所示那样,如果对HTTPservlet请 求对象调用getClientSession这样的方法,则读出会话状态来作为除 HTTP会话类之外的对象。被读出的会话状态被存入变量 clientSession中。在此,读出关4建字名为keyl的会话状态。第六行 所示的是形式上的型变换,变量csr和变量req的实体相同。然后,如第九行、第十行所示那样,如果对变量serverSession 和clientSession都调用getAttribute这样的方法,则能够区别各内容 而读出。另外,如第十二行、第十三行所示那样,如果对这些变量 的哪个都调用SsetAttribute这样的方法,则能够区别各对象来设定新 的值。这样,响应Servlet程序735的执行,访问部240能够选择性地 访问作为第 一和第二 HTTP会话对象而被存储的各会话状态。在图7中,也与图6相同,例示了 Servlet程序735中依据JavaEE 等的处理部分,但Servlet程序735也可以包含用JSP等记述的页部 分。因此,当HTTPservlet730的工作完成时,Servlet程序735被输 出到浏览器内核720,浏览器内核720开始进行JSP的渲染处理。浏 览器内核720具有作为上述返回部250的作用。即,浏览器内核720 从存储部200读出HTTP会话对象,作为参数设定在变换后的HTML 文件中。但是,在图7的例子中,返回部250仅读出作为第一 HTTP 会话对象而被存储的会话状态来设定,不读出作为第二 HTTP会话对象而被存储的会话状态。这样,在图7中仅将一部分的会话状态 返回到终端装置15,所以能够减少维持会话所需的通信量和处理负荷。Web服务器20 - 2 ~ N的每一个都能够采用与Web服务器20 -l相同的结构,所以省略说明。图8表示在本实施方式的变形例中Web服务器20 - 1 ~N与终 端装置15进行通信的顺序。参照图8,将网站采用Ajax时的处理顺 序作为变形例来示出。在本变形例中,返回部250和更改处理部260 进行本图的S800到S880的处理,代替图5的S560到S510的处理。 另外,终端装置15进行该图的S810到S870的处理,代替图5的从 S570经由S580到S500的处理。首先,返回部250向终端装置15返回设定成将更改要求作为第 二 HTTP请求发送给更改处理部260的第一 HTTP响应(S800 )。 该更改要求的要求目标不是Web服务器20- 1 ~N中任意的Web服 务器,而是被设定为当前要返回第一 HTTP响应的Web服务器20-1。与其对应地,终端装置15接收第一HTTP响应(S810) , ^t姿照 该响应所包含的指示显示网页(S820 )。终端装置15即使不接受发送HTTP请求的写明的操作,也通过 在该网页上工作的JavaScript的工作,将基于XMLHTTP通信的请求 发送到Web服务器20 - 1 ( S830)。接受该请求,访问部240访问 已存入的会话状态(S835 )。终端装置15在从使用者接受应发送 HTTP请求的写明的操作时,对其进行响应,发送第二 HTTP请求 (S840 )。在该HTTP请求中,如S800中说明过的那样,预先设定 成对更改处理部260请求更改处理。因此,更改处理部260响应该 更改要求从存储部200读出会话状态(S845 )。然后,更改处理部260将该会话状态作为与接下来的第三HTTP 请求建立对应而由终端装置15发送的参数,来设定在与该第二HTTP 请求对应的第二 HTTP响应中。然后,更改处理部260将立刻对其 他Web服务器重新发送第三HTTP请求的指示包含在该第二 HTTP响应中并返回到终端装置15。终端装置15在接收该第二 HTTP响应时(S860),立刻向其他 Web服务器发送第三HTTP请求(S870 )。将最新的会话状态与该 第三HTTP请求建立对应而发送。因此,接到该请求的Web服务器 能够与HTTP请求建立对应而适当地接收最新的会话状态(S880 )。 此后的处理与参照图1到图7说明过的实施例相同。即,该Web服 务器返回到图5的S520,进行响应HTTP请求的处理。这样,在网站采用了 Ajax功能的情况下,通过对HTTP响应的 参数设定成使该响应的发送方请求更改处理,能够读出最新的会话 状态。然后,请求了更改处理的Web服务器20-1对HTTP响应设 定成将最新的会话状态与下一个HTTP请求建立对应而发送。由此, 接受了该下一个HTTP请求的其他Web服务器能够正确地继续会话。图9表示在本实施方式或其变形例中作为Web服务器20 - 1发 挥功能的信息处理装置900的硬件结构的一例。信息处理装置900 包括具有通过主机控制器1082相互连接的CPUIOOO、 RAM1020、 以及图形控制器1075的CPU外围部;具有通过输入输出控制器1084 与主机控制器1082连接的通信接口 1030、硬盘驱动器1040以及CD -ROM驱动器1060的输入输出部;具有与输入输出控制器1084连 接的ROMIOIO、软盘驱动器1050以及输入输出芯片1070的传统 (legacy) ^T入车lr出部。主机控制器1082连接RAM1020、以高传输率访问RAM1020的 CPUIOOO以及图形控制器1075。 CPUIOOO根据存入ROMIOIO和 RAM1020的程序而工作,进行各部的控制。图形控制器1075取得 CPUIOOO等在设置于RAM1020内的帧緩存器上生成的画像数据, 并使其显示在显示装置1080上。取而代之,图形控制器1075也可 以在内部包含用于存入CPUIOOO等生成的画像数据的帧緩存器。输入输出控制器1084连接主机控制器1082、较高速的输入输出 装置即通信接口 1030 、硬盘驱动器1040以及CD - ROM驱动器1060。 通信接口 1030经由网络与外部装置进行通信。硬盘驱动器1040存入信息处理装置900使用的程序和数据。CD-ROM驱动器1060从 CD - ROM1095读取程序或数据,并提供给RAM1020或硬盘驱动器 1040。另外,在输入输出控制器1084上连接ROMIOIO、软盘驱动器 1050和输入输出芯片1070等较低速的输入输出装置。ROMIOIO存 入信息处理装置900启动时CPU1000执行的引导程序、和信息处理 装置900的硬件所依赖的程序等。软盘驱动器1050从软盘1090读 取程序或数据,经由输入输出芯片1070提供给RAM1020或硬盘驱 动器1040。输入输出芯片1070经由软盘1090、例如并4亍端口、串 行端口、键盘端口、鼠标端口等连接各种输入输出装置。提供给信息处理装置900的程序被存入软盘IO卯、CD-ROM1095、或IC卡等记录介质中,由使用者提供。程序从记录介质 经由输入输出芯片1070和/或输入输出控制器1084被读出,并安装 到信息处理装置900而被执行。程序在信息处理装置900等中进行 的工作与图1到图8中说明过的Web服务器20- 1的工作相同,所 以省略i^明。以上所示的程序也可以存入外部的存储介质中。作为存储介质, 除了软盘1090、 CD-ROM1095之外,还能够使用DVD和PD等光 学记录介质、MD等光磁记录介质、带状介质、IC卡等半导体存储 器等。另外,将设置在与专用通信网络或因特网连接的服务器系统 中的硬盘或RAM等的存储装置作为记录介质来使用,也可以经由将 程序网络提供给信息处理装置900。以上,根据本实施方式及其变形例,能够在Servlet程序中将会 话状态作为HTTP会话对象来参照,并且,会话状态的实体能够存 储在终端装置中。由此,能够在Servlet程序的代码中一目了然地区 别会话状态来识别,且即使由多个Web服务器构建网站,也能适当 地维持会话。这关系到提高程序开发和维护的效率、使网站的硬件 结构变更易于进行,能够极其有效地构建近年来的大规模的网站。以上,用实施方式对本发明进行了说明,但本发明的技术性范围不限于上述实施方式所记载的范围。对本领域技术人员来说,可 对上述实施方式进行各种各样变更或改良是显而易见的。进行了这 样的变更或改良的方式也能包含在本发明的技术性范围内,这 一 点 根据权利要求书的记载得以明确。
权利要求
1.一种Web服务器,包括存储部,其用于存储表示响应从终端装置依次接收的多个HTTP请求而进行的处理的经过的会话状态;接收部,其将会话状态与第一HTTP请求建立对应而从终端装置进行接收;存入部,其向上述存储部中的、作为HTTP会话对象而被响应接收到的上述第一HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的上述会话状态;访问部,其响应上述处理程序中包含的、访问HTTP会话对象的指令的执行来访问所存入的上述会话状态;以及返回部,其响应上述处理程序中包含的、返回第一HTTP响应的指令的执行,从上述存储部中读出上述会话状态来作为与第二HTTP请求建立对应而由终端装置发送的参数,来设定在上述第一HTTP响应中,并将所设定的上述第一HTTP响应返回到终端装置。
2. 根据权利要求1所述的Web服务器,其特征在于,上述存入部向作为HTTP会话对象而被访问的上述存储区域中存入由上述接收部新接收到的上述会话状态,来代替已存储在该存储区域中的会话状态。
3. 根据权利要求1所述的Web服务器,其特征在于,上述存储部在作为HTTP会话对象而被访问的上述存储区域中存储第一 HTTP会话对象和第二 HTTP会话对象,上述存入部将新接收到的上述会话状态作为上述第一 HTTP会话对象来存入上述存储部,上述访问部响应上述处理程序的执行,来访问作为上述第一HTTP会话对象和第二 HTTP会话对象而纟皮存储的各会话状态,上述返回部从上述存储部中读出作为上述第一 HTTP会话对象而被存储的会话状态,并将读出的该会话状态作为与上述第二 HTTP请求建立对应而发送的参数来设定在上述第一 HTTP响应中。
4. 根据权利要求3所述的Web服务器,其特征在于,上述返回部还进行如下处理响应从上述存^f诸部中读出作为上述第一 HTTP会话对象而被存储的会话状态,来将存储有该会话状态的存储区域对其他用途开放。
5. 根据权利要求1所述的Web服务器,其特征在于,上述返回部将所读出的上述会话状态设定为在接受到上述第一HTTP响应的终端装置显示的网页上不显示的参数,并且是响应对该网页进行的操作而与上述第二HTTP请求建立对应而被发送的参数。
6. 根据权利要求1所述的Web服务器,其特征在于,上述存储部存储有数据组作为会话状态,该数据组包括第 一数据和根据上述第一数据的存入目标地址来参照上述第一数据的第二数据,组进行串行化处理,该串行化处理不使用上述第一数据的存入目标地址而从上述第二数据参照上述第一数据,并将进行了串行化处理的数据组设定在上述第一 HTTP响应中。
7. 根据权利要求6所述的Web服务器,其特征在于,上述返回部对进行了串行化处理的上述数据组还进行包含加密处理和数据压缩处理中至少一方的变换,并将进行了变换的数据组设定为上述第一 HTTP响应的参数。
8. 根据权利要求1所述的Web服务器,其特征在于,当上述访问部在从返回上述第一 HTTP响应开始直到接收上述第二 HTTP请求为止的期间进一步访问上述存储部的会话状态时,上述返回部返回作为上述第二 HTTP请求而由终端装置请求更改处理的上述第一 HTTP响应,上述Web服务器还包括更改处理部,该更改处理部以接收到的上述第二 HTTP请求请求更改处理为条件,从上述存储部中读出上述会话状态并将其作为与第三HTTP请求建立对应而由终端装置发送的参数来设定在第二 HTTP响应中,并返回所设定的上述第二HTTP响应,上述存入部以接收到上述第三HTTP请求为条件,将接收到的上述会话状态存入上述存储部。
9. 一种具有多个Web服务器和调度装置的系统,该调度装置将从终端装置接受到的HTTP请求有选择地分配给某一个Web服务器,上述多个Web服务器的每一个包括存储部,其用于存储表示响应从终端装置依次接收的多个HTTP请求而进行的处理的经过的会话状态;接收部,其接受来自上述调度装置的分配,将会话状态与第一HTTP请求建立对应而从终端装置进行接收;存入部,其向上述存储部中的、作为HTTP会话对象而被响应接收到的上述第一 HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的上述会话状态;访问部,其响应上述处理程序中包含的、访问HTTP会话对象的指令的执行来访问所存入的上述会话状态;以及返回部,其响应上述处理程序中包含的、返回第一 HTTP响应的指令的执行,从上述存储部中读出上述会话状态并将其作为与第二 HTTP请求建立对应而由终端装置发送的参数来设定在上述第一HTTP响应中,并将所设定的上述第一 HTTP响应返回到终端装置。
10. —种在Web服务器中响应从终端装置接受到的HTTP请求来进行处理的方法,该Web服务器具有存储部,该存储部用于存储表示响应从终端装置依次接收的多个HTTP请求而进行的处理的经过的会话状态,上述方法包括以下步骤将会话状态与第一 HTTP请求建立对应而从终端装置进行接收;向上述存储部中的、作为HTTP会话对象而被响应接收到的上述第一 HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的上述会话状态;响应上述处理程序中包含的、访问HTTP会话对象的指令的4丸行来访问所存入的上述会话状态;以及响应上述处理程序中包含的、返回第一 HTTP响应的指令的4丸行,从上述存储部中读出上述会话状态并将其作为与第二 HTTP请求建立对应而由终端装置发送的参数,来设定在上述第一 HTTP响应中,并将所设定的上述第一 HTTP响应返回到终端装置。
11. 一种使信息处理装置作为存储部、接收部、存入部、访问部和返回部来发挥功能的程序,其中存储部,其用于存储表示响应从终端装置依次接收的多个HTTP请求而进行的处理的经过的会话状态;接收部,其将会话状态与第一 HTTP请求建立对应而从终端装置进行接收;存入部,其向上述存储部中的、作为HTTP会话对象而被响应接收到的上述第一 HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的上述会话状态;访问部,其响应上述处理程序中包含的、访问HTTP会话对象的指令的执行来访问所存入的上述会话状态;返回部,其响应上述处理程序中包含的、返回第一 HTTP响应的指令的执行,从上述存储部中读出上述会话状态来作为与第二HTTP请求建立对应而由终端装置发送的参数,来设定在上述第一HTTP响应中,并将所设定的上述第一 HTTP响应返回到终端装置。
全文摘要
本发明提供一种Web服务器,包括存储部,其用于存储会话状态;接收部,其将会话状态与第一HTTP请求建立对应而从终端装置进行接收;存入部,其向存储部中的、作为HTTP会话对象而被响应接收到的第一HTTP请求来进行处理的处理程序访问的存储区域中存入接收到的会话状态;访问部,其响应处理程序中的访问指令的执行来访问所存入的会话状态;以及返回部,其响应处理程序中的返回指令的执行,从存储部中读出会话状态来作为与第二HTTP请求建立对应而由终端装置发送的参数,来设定在第一HTTP响应中,并将所设定的第一HTTP响应返回到终端装置。能灵活地变更Web服务器的结构。
文档编号G06F15/00GK101636723SQ20088000894
公开日2010年1月27日 申请日期2008年1月17日 优先权日2007年1月19日
发明者村井修一, 花井志生 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1