应用程序访问Web服务器端对象的实现方法和装置的制作方法

文档序号:7616690阅读:181来源:国知局
专利名称:应用程序访问Web服务器端对象的实现方法和装置的制作方法
技术领域
本发明涉及信息技术领域,更确切地说是涉及一种应用程序访问Web服务器端对象的实现方法和装置。
背景技术
在多层结构的web万维网应用程序的设计中,通常使用一种运行于浏览器下的小应用程序(Applet)作为复杂的客户端表示层技术。
现有Applet调用Web服务端资源,主要用的方案是采用远程方法调用RMI(Remote Method Invocation)方式,如图1所示,Applet首先调用RMI服务,由RMI进行Web服务器对象的序列化,再传递给Applet。
该技术方案有如下缺点1、需要在服务器端增设RMI服务,增加服务器的压力;2、需要专门为RMI开设相应的端口,限制了其在复杂网络结构下的使用;3、有防火墙的环境下,需要专门开相应的端口,降低整个系统的安全性;4、没有对对象进行分类缓冲管理,仅仅是一个远程调用的框架,在高并发条件下,会造成服务器端的性能急剧下降。
现有另一种Applet调用Web服务端资源的方案如图2所示,Applet直接通过和web服务器端的运行在其上的服务器小程序Servlet进行套节字Socket通信,把请求格式化,服务端通过监听,解析具体的请求,再调用合适的对象。Applet首先需要对不同的请求进行编码,把请求调用传递给服务端的Servlet,由Servlet反解析原有的请求编码,再根据需要调用相应的对象。
该技术方案有如下缺点1、需要对调用进行编码,容易出错,不宜调试;2、无法满足调用复杂的对象,工作量大;3、没有对远程对象进行分类缓冲管理,在高并发条件下,会造成服务端的性能急剧下降。
现有的Applet调用服务端的技术要么是提供的框架过于厚重,要么不适合于复杂的网络结构。

发明内容
有鉴于此,本发明的主要目的在于提供一种应用程序访问Web服务器端对象的实现方法和装置,不需要开设专门的监听服务,解决单纯的Applet直接调用的复杂性和难调试问题。
为达到以上目的,本发明提供以下技术方案一种应用程序访问Web服务器端对象的实现方法,其中,在Applet端和Web服务器之间设置一个轻量级适配器,轻量级适配器分为客户端桩和服务端桩,所述方法包括如下步骤A、Applet向Web服务器端发起调用请求;B、客户端桩拦截所述Applet对服务器的请求并通过内置隧道把请求提交给服务端桩;C、服务端桩将所述请求传递至Web服务器,由控制器对所述请求进行调度。
步骤B进一步包括客户端桩对请求进行编码,将编码后的请求提交给服务端桩;步骤C进一步包括服务端桩对所述请求进行解码后被动触发。
步骤C中,控制器调度请求时包括下述步骤C1、确定调用请求的对象是否在预先设置的私有对象池中,若在,则从私有对象池中获取对象使其经由服务端桩和客户端桩返回至小应用程序,否则进行步骤C2;C2、查找预先设置的公有对象池中是否有可用对象,若有,则使该对象通过服务端桩和客户端桩返回至小应用程序,否则进行步骤C3;C3、直接调度Web服务器获取可用对象,并使该对象经服务端桩和客户端桩返回至小应用程序。
在步骤C2中,从公有池获取可用对象后,由公有对象池直接将该可用对象经由服务端桩和客户端桩返回至小应用程序,或者,先将该对象移到私有对象池中,由私有对象池获取对象并经服务端桩和客户端桩返回至小应用程序;或者,在步骤C3中,从Web服务器获取可用对象后,将该对象初始化后放到公有对象池中,由公有对象池直接将可用对象获取对象依次经服务端桩和客户端桩返回至小应用程序,或直接将所述可用对象放置于私有对象池,再由私有对象池将获取对象依次经服务端桩和客户端桩返回至小应用程序,或直接将对象依次经服务端桩和客户端桩返回至小应用程序。
一种智能调度器,包括客户端请求接收模块、对象查找模块、公用对象池管理模块、私用对象池管理模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至对象查找模块;所述对象查找模块用于同WEB服务器、公有对象池及私有对象池相连,接收客户端请求接收模块转发的请求,依据请求查找私有对象池、公有对象池或WEB服务器,将查找结果转发至公用对象池管理模块、或私用对象池管理模块;私有对象池管理模块同对象查找模块交互,接受查找结果进行私有对象池的操作与管理;公有对象池管理模块同对象查找模块交互,接受查找结果进行公有对象池的操作与管理。
一种智能调度器,包括客户端请求接收模块、对象查找模块、请求处理模块、公用对象池管理模块、私用对象池管理模块、调度策略模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至调度策略模块;所述对象查找模块用于同WEB服务器、公有对象池及私有对象池相连,接收调度策略模块下发的查询指令,依据指令查找私有对象池、公有对象池或WEB服务器,将查找结果转发至调度策略模块、公用对象池管理模块、或私用对象池管理模块;调度策略模块用于同对象查找模块、客户端请求接收模块、公用对象池管理模块、私用对象池管理模块、请求处理模块相连,依据客户端请求收接模块发送的调用请求,确定对该请求的处理方式,将所述处理指令下发至对象查找模块或请求处理模块,并接受对象查找模块或请求处理模块返回的处理信息并发送至私有对象池管理模块或公有对象池管理模块;请求处理模块同调度策略模块相连,接受调度策略模块下发的处理指令对所述请求进行处理;私有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行私有对象池的操作与管理;公有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行公有对象池的操作与管理。
本发明通过由于采用了轻量级的适配器,通过客户端桩和服务端桩透明传递Applet对服务器对象的请求,不需要起专门监听服务;解决单纯的Applet直接调用的复杂性和难调试;由于采用了两级缓冲,提高了处理的速度;采用实时的缓冲对象生命周期管理,动态缓冲对象,提高框架的处理能力;请求的对象按请求的类型进行对象私有和公有的对象缓冲机制;通过公有对象的最近被调用频率、对象的内存大小、对象的平均执行时间和对象的初始时间进行对象的生命周期管理。


图1为现有技术一所述方法的组网图;图2为现有技术二所述方法的组网图;图3为本发明所述方法流程图;图4为本发明一实施方案系统组网图;图5为本发明另一实施方案系统组网图;图6为本发明智能调度器系统结构图;图7为本发明另一种智能调度器系统结构图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
参阅图3所示,本发明在Applet端和Web服务端对象之间设置一个轻量级适配器,轻量级适配器分为客户端桩和服务端桩;Applet向服务器发起调用请求时,由客户端桩负责拦截该请求,并通过内置隧道把请求提交给服务端桩,该内置隧道基于Http的连接方式;服务端桩把请求传递给Web服务器,由控制器对所述请求进行调度,该控制器可以设置于Web服务器上或者同Web服务器相连。通过客户端桩连接服务端桩可依据相应的调用策略进行服务端对象的调用,并且按照一定的策略管理各种对象。
客户端桩和服务端桩是一个轻量级的桩,依据对象生成,对被访问对象进行封装。封装出来的客户端桩和被访问对象拥有相同的接口。服务端桩属于被动式触发,利用现有Web服务器端容器的监听,由Web容器的监听器来触发调用服务端桩,无需另起端口监听。生成所述桩及封装的方式很多,可以采用类似现有EJB桩(企业级Javabean桩)的生成方式。客户端桩与服务器端桩可以由框架配套的小工具自动生成,也可以依据请求的编码手工写成。客户端桩对请求进行编码,服务端桩对请求进行解码,服务端桩本身不开设端口,完全依赖WEB服务端已有的服务器小程序Servlet控制器来调度。通过采用轻量级适配器解决了现有技术中需要专门开设监听端口及监听服务,及单纯的Applet直接调用的复杂性和难调试的问题,同时减低了访问WEB服务对象的复杂性和易错性。
为了进一步提高处理速度,在服务端桩与WEB服务器间设置智能调度器、私有对象池、公有对象池,如图4所示。
建立私有对象池存放远程调用者相应的调取对象,一般是状态对象,私有对象池的大小根据不同的应用决定的,私有对象池中的对象生命周期是可以配置的,根据不同的应用可以配置一个最优的时间值。公有对象池保持Web容器被远程调用的常用对象缓冲,相当于二级缓冲,对象池的大小和具体的应用有关,根据智能调度器来跟踪对象的被调用频率、对象的内存大小、对象最近被调用的频率、对象的平均执行时间或对象的初始化时间,决定对象是否继续保存在对象池中。
智能调度器有两个重要的功能,一个功能是监控公有对象池中对象的生命周期;另一个功能是合理调度客户端的请求,根据服务端的实际负载和配置选择丢弃请求或者把请求透传给其他服务器,以实现一个轻量级的负载均衡。
智能调度器可以为私有对象池设置超时时间,即如远程调用在某一个时间内未对私有对象池中的对象作相关调用,则删除所有的对象和对象池本身。智能调度器也可以依据私有对象池中的每个对象的调用属性更新私有对象池中保存的相应对象。如智能调度器可以对私有对象池中的每个对象设置生命周期,在该生命周期内,某一对象未被远程调用,则在私有对象池中删除该特定对象。智能调度器定期依智能调度器返回的各被调用对象被调用的频率或对象大小等指标更新公有对象池中的对象。
当Applet发起调用请求,所述请求携带要请求的目标对象,Applet的请求首先由客户端桩拦截,客户端桩通过连接隧道把请求传递给远程的服务端桩,再通过服务端桩把请求传递给智能调度器;智能调度器判断来自客户端请求的对象是否在私有对象池中,并根据结果进行下述处理(1)若对象在私有对象池中,就从私有对象池中获取对象返回给服务端桩,再由服务端桩通过客户端桩将对象返回给Applet。
(2)若对象不在私有对象池中,智能调度器从公有对象池中检测是否有可用的对象,根据检测结果进行下述处理A、如果智能调度器发现公有对象池中有可用对象,则可以依据请求信息或者可用对象的信息决定处理方式。如可以将对象移到私有对象池中,由私有对象池获取对象返回给服务端桩,再由服务端桩通过客户端桩将对象返回给Applet;也可以由公有对象池直接将可用对象获取对象返回给服务端桩,再由服务端桩通过客户端桩将对象返回给Applet。
B、如果智能调度器发现公有对象池中也没有可用对象,则智能调度器直接调度Web服务器,获取可用对象后,依据请求信息或者可用对象的信息决定处理方式。可以由智能调度器将所述对象初始化后放到公有对象池中,由公有对象池直接将可用对象返回给服务端桩,再由服务端桩通过客户端桩将对象再给Applet;也可以由调度器直接将所述可用对象放置于私有对象池,再由私有对象池将获取对象返回给服务端桩,再由服务端桩通过客户端桩将对象再返回给Applet;还可以由智能调度器直接将对象返回至服务端桩,再由服务端桩通过客户端桩将对象返回给Applet。
Applet发起的调用请求可以携带请求类型,主要包括有状态、无状态和默认三种类型。客户端依据需要指定对象状态,并将所述状态携带于Applet发起的调用请求中。如果请求类型是有状态,则必须将被请求的对象放入私有对象池,且进行对象查找时先查找私有对象池;如果请求类型是无状态,则必须将被请求的对象放入公用对象池;如果请求类型为默认,则根据对象本身的属性,如对象内存大小、对象的初始化时间等来决定处理。
为了负载平衡,可以采用多台WEB服务器,如图5所示。图5中由两台WEB服务器同智能调度器相连,每台设置相应的对象缓冲阀值。当多个客户端请求其中某一台服务器,智能调度器判断该WEB服务器的对象调度请求超过该对象缓冲阀值,则就将所述请求转发给另一服务器处理,以达到负载均衡,从而增加整个系统的吞吐量。其中,所述对象缓冲阀值可以是对WEB服务器的调度请求、对WEB服务器公有对象池的调度请求或者对私有对象池的调度请求等超过某一数值。
智能调度器接受来自客户端的请求后,还可以依据当前的实际负载和预先设置的服务器极限负载量来决定是否接受所述请求,如果服务器负载已经超过预先设置的服务器极限负载量,则将丢弃所述请求。
本发明公开一种智能调度器,如图6所示,其包括客户端请求接收模块、对象查找模块、公用对象池管理模块、私用对象池管理模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至对象查找模块;所述对象查找模块用于同WEB服务器、公有对象池、私有对象池及服务端桩相连,接收客户端请求接收模块转发的请求,依据请求查找私有对象池、公有对象池或WEB服务器,将查找结果转发至公用对象池管理模块、或私用对象池管理模块;私有对象池管理模块同对象查找模块交互,接受查找结果进行私有对象池的操作与管理,所述操作与管理包括,将所述请求对象放入私有对象池、将对象从私有对象池移除、将所述对象传送至服务端桩、设置所述对象的生命周期或者私有对象池的生命周期等;公有对象池管理模块同对象查找模块交互,接受查找结果进行公有对象池的操作与管理,所述操作与管理包括,将所述请求对象放入公有对象池、将对象从公有对象池移除、将所述对象传送至服务端桩、设置所述对象的生命周期或者私有对象池的生命周期等。
所述对象查找模块也可以将请求转发至服务端桩。
本发明还公开一种智能调度器,如图7所示,其包括客户端请求接收模块、对象查找模块、请求处理模块、公用对象池管理模块、私用对象池管理模块、调度策略模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至调度策略模块;所述对象查找模块用于同WEB服务器、公有对象池、私有对象池相连及服务端桩,接收调度策略模块下发的查询指令,依据指令查找私有对象池、公有对象池或WEB服务器,将查找结果转发至调度策略模块、公用对象池管理模块、或私用对象池管理模块;调度策略模块用于同对象查找模块、客户端请求接收模块、公用对象池管理模块、私用对象池管理模块、请求处理模块相连,依据客户端请求收接模块发送的调用请求,根据预先设置的配置参数对该请求的处理方式,如抛弃请求、将请求透传至其他服务器,并依据所述处理方式向对象查找模块、请求处理模块下发相应的查找或处理命令,并依据对象查找模块、请求处理模块返回的处理信息返回至私有对象池管理模块及公有对象池管理模块;请求处理模块同调度策略模块相连,接受调度策略模块下发的处理指令对所述请求进行处理;私有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行私有对象池的操作与管理;公有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行公有对象池的操作与管理。
所述对象查找模块也可以将请求转发至服务端桩。
权利要求
1.一种应用程序访问Web服务器端对象的实现方法,其特征在于,在小应用程序和Web服务器之间设置一个轻量级适配器,轻量级适配器分为客户端桩和服务端桩,所述方法包括如下步骤A、小应用程序向Web服务器端发起调用请求;B、客户端桩拦截所小应用程序对服务器的请求并通过内置隧道把请求提交给服务端桩;C、服务端桩将所述请求传递至Web服务器,由Web服务器端的控制器对所述请求进行调度。
2.如权利要求1所述的方法,其特征在于,步骤B进一步包括客户端桩对请求进行编码,将编码后的请求提交给服务端桩;步骤C进一步包括服务端桩对所述请求进行解码后将所述请求传递至Web服务器。
3.如权利要求1所述的方法,其特征在于,步骤C中,控制器调度请求时包括下述步骤C1、确定调用请求的对象是否在预先设置的私有对象池中,若在,则从私有对象池中获取对象使其经由服务端桩和客户端桩返回至小应用程序,否则进行步骤C2;C2、查找预先设置的公有对象池中是否有可用对象,若有,则使该对象通过服务端桩和客户端桩返回至小应用程序,否则进行步骤C3;C3、直接调度Web服务器获取可用对象,并使该对象经服务端桩和客户端桩返回至小应用程序。
4.如权利要求3所述的方法,其特征在于,在步骤C2中,从公有池获取可用对象后,由公有对象池直接将该可用对象经由服务端桩和客户端桩返回至小应用程序,或者,先将该对象移到私有对象池中,由私有对象池获取对象并经服务端桩和客户端桩返回至小应用程序;或者,在步骤C3中,从Web服务器获取可用对象后,将该对象初始化后放到公有对象池中,由公有对象池直接将可用对象获取对象依次经服务端桩和客户端桩返回至小应用程序,或直接将所述可用对象放置于私有对象池,再由私有对象池将获取对象依次经服务端桩和客户端桩返回至小应用程序,或直接将对象依次经服务端桩和客户端桩返回至小应用程序。
5.如权利要求1所述的方法,其特征在于,步骤A所述小应用程序发起的调用请求中携带有客户端指定的请求类型,步骤C进一步包括依据请求类型进行请求调度。
6.如权利要求5所述的方法,其特征在于,所述请求类型包括有状态、无状态、默认;步骤C所述进行请求调度进一步包括当所述请求类型是有状态时,将被请求的对象放入私有对象池;当所述请求类型是无状态时,将被请求的对象放入公有对象池;当所述请求类型是确认时,依据被请求对象的属性决定处理方式。
7.如权利要求1所述的方法,其特征在于,步骤C所述进行请求调度进一步包括依据服务器的实际负载,及已经预先设置的服务器极限负载量,决定是否丢弃所述请求或者将其转由其他服务器处理。
8.如权利要求3所述的方法,其特征在于,所述公有对象池依据Web服务端对象属性存放相应对象进一步包括公有对象池依据Web服务器端对象最近被调用频率、对象的内存大小、对象平均执行时间或对象初始化的时间决定是否将对象放入公有对象池或者将其删除。
9.如权利要求3所述的方法,其特征在于,建立私有对象池存放远程调用者相应的调取对象进一步包括为私有对象池设置生命周期,如远程调用在该生命周期内未对私有对象池中的对象进行调用,则删除所有的对象,包括对象池本身;或依据私有对象池中的每个对象的调用属性更新私有对象池中保存的相应对象。
10.如权利要求1所述的方法,其特征在于,步骤C所述控制器是指Web服务器端内部的Servlet或者独立于Web服务器端的第三方调度器。
11.一种智能调度器,其特征在于,所述调度器包括客户端请求接收模块、对象查找模块、公用对象池管理模块、私用对象池管理模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至对象查找模块;所述对象查找模块用于同Web服务器、公有对象池及私有对象池相连,接收客户端请求接收模块转发的请求,依据请求查找私有对象池、公有对象池或Web服务器,将查找结果转发至公用对象池管理模块、或私用对象池管理模块;私有对象池管理模块同对象查找模块交互,接受查找结果进行私有对象池的操作与管理;公有对象池管理模块同对象查找模块交互,接受查找结果进行公有对象池的操作与管理。
12.一种智能调度器,其特征在于,所述调度器,包括客户端请求接收模块、对象查找模块、请求处理模块、公用对象池管理模块、私用对象池管理模块、调度策略模块,其中,客户端请求接收模块用于同服务端桩相连,以接收Applet发起的调用请求,并将所述请求转发至调度策略模块;所述对象查找模块用于同Web服务器、公有对象池及私有对象池相连,接收调度策略模块下发的查询指令,依据指令查找私有对象池、公有对象池或Web服务器,将查找结果转发至调度策略模块、公用对象池管理模块、或私用对象池管理模块;调度策略模块用于同对象查找模块、客户端请求接收模块、公用对象池管理模块、私用对象池管理模块、请求处理模块相连,依据客户端请求收接模块发送的调用请求,确定对该请求的处理方式,将所述处理指令下发至对象查找模块或请求处理模块,并接受对象查找模块或请求处理模块返回的处理信息并发送至私有对象池管理模块或公有对象池管理模块;请求处理模块同调度策略模块相连,接受调度策略模块下发的处理指令对所述请求进行处理;私有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行私有对象池的操作与管理;公有对象池管理模块同对象查找模块及调度策略模块交互,接受查找结果及调度策略指令进行公有对象池的操作与管理。
全文摘要
本发明公开了一种应用程序访问Web服务器端对象的实现方法,该方法在小应用程序和Web服务器之间设置一个轻量级适配器,轻量级适配器分为客户端桩和服务端桩;当小应用程序向Web服务器端发起调用请求时,由客户端桩拦截所小应用程序对服务器的请求并通过内置隧道把请求提交给服务端桩;服务端桩将所述请求传递至Web服务器,由控制器对所述请求进行调度。本发明所述的方法不需要开设专门的监听服务,解决单纯的Applet直接调用的复杂性和难调试问题。
文档编号H04L29/06GK1842071SQ20051005931
公开日2006年10月4日 申请日期2005年3月28日 优先权日2005年3月28日
发明者黄各民 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1