服务提供设备、服务提供系统、服务提供方法、和存储介质的制作方法

文档序号:6596132阅读:172来源:国知局
专利名称:服务提供设备、服务提供系统、服务提供方法、和存储介质的制作方法
技术领域
本发明涉及服务提供设备、服务提供方法、和存储服务提供程序的存储介质。
背景技术
最近,用于在相同的平台上向多个用户提供各种服务的SaaS(作为服务的软件)/ASP(应用服务提供者)类型的服务已经获得关注。作为此类服务的代表,例如有 Salesforce. com 等等。因为这种MaS/ASP类型的服务基于合同用户使用预准备的服务这样的假设,所以仅提供缺省服务功能是不够的,还需要针对每个用户的定制(这被称为定制要求)。对于这种每个用户的定制要求,现有的ASP服务提供者已经在针对每个用户分别准备的服务器硬件或虚拟OS(操作系统)上构建了用户专用的定制服务提供设备。例如, 已经提供了使用 VMWare (http //www. wmware. com/jp/)、Xen (http://www. xen. org)等虚拟技术构建用户专用的定制服务提供设备的解决方案。在该情形下,针对每个用户部署了大量的中间件、OS或者服务器硬件(其是该服务的下层)。另外,作为用于针对每个用户提供定制服务的方法,存在通过使用利用Java(注册商标)技术等的应用服务器在应用服务器上针对每个用户部署定制服务的方法。在图13 中示出了该方法的简化配置示图。图13中示出的服务提供设备1配备有请求接收响应单元5、缺省服务加载器10和针对用户的服务加载器11-1N。在缺省服务加载器10中,部署了用于向非特定用户提供服务的缺省服务类组20。 另一方面,在针对用户的服务加载器11-1N中,部署了反映用户的定制要求的定制服务类组21-2N。现在,将使用图14来描述各个服务加载器11-1N中如何部署这些类。在图14中,缺省服务加载器10中加载的缺省服务类组20具有缺省服务组合 2000。该缺省服务组合2000具有组件2001、2002、2003和2004。在服务加载器11中加载的定制服务类组21中,部署了与缺省服务组合2000相同的类,但是在该类中,部署了定制组件2011以替代组件2002。通过部署该组件2011,满足了定制要求。以相同的方式,在服务加载器12中加载的定制服务类组22中,部署了定制组件 2021以替代组件2004。通过部署该组件2021,满足了定制要求。如图14中所示,在该方法中,可以共享的组件2001和2003在服务加载器中被多
次部署。如上所述,关于针对每个用户部署相同服务的方法,可以考虑仅部署一个服务,并将实现定制要求的逻辑并入该服务。然而,在该情形下,无论何时出现定制要求,必须修正服务逻辑,使得定制要求分支到添加的定制要求,并且执行对服务的重新编译或重新部署。 此外,在该情形下,必须临时停止整个服务。为了解决如上所述根据服务的改变而停止整个服务的问题,在专利文献1中公开了一个在不停止整个软件的情况下改变高度模块化的软件中的一部分并且重新部署服务的系统示例。此外,与专利文献1中的系统相同,在专利文献2中公开了一个在不执行重新编或重启的情况下可以添加插件模块的系统示例。专利文献专利文献1 日本公开特许公报NO. 2003-337702专利文献2 日本公开特许公报No. 2004-53430
发明内容
然而,如图13和14中所示,专利文献1和2中描述的技术具有以下改进空间。S卩,难以同时获得对应于每个用户的定制要求以及对计算机中资源的有效利用。这是因为在多个用户使用一个服务的情形下难以在该服务中包括每个用户的定制要求。当然可能对服务进行编程,使得根据作为请求者的用户来改变行为。然而,在该情形下,无论何时添加新用户及其定制要求,都需要执行服务代码的修改和重新部署。因此,为了应对每个用户的定制要求,针对每个用户多次部署相同服务以及在各自的服务中反映定制要求的方法变成了最容易实现的方法。此外,关于针对每个用户多次部署相同服务的方法,可以考虑各种实现方法,诸如针对用户准备硬件,在相同硬件上准备虚拟OS等等。然而,根据这些方法,因为多次部署可共同使用的服务组件、中间件、OS、硬件等等,所以浪费了计算机的资源。因此,存在难以同时实现对应于每个用户的定制要求以及对电子计算机中资源的有效利用的问题。在考虑了上述情况下,做出了本发明,并且本发明的目的在于提供服务提供设备、 服务提供系统、服务提供方法、以及存储服务提供程序的存储介质,其能够同时实现对应于每个用户的定制要求以及对计算机中资源的有效利用。根据本发明,一种服务提供设备包括共享组件存储单元,存储共享组件,所述共享组件是由软件组件构成的组件中在用户之间共享的组件;共享组件加载器单元,从所述共享组件存储单元读取所述共享组件,并且将所述共享组件保持在可执行状态中;个人组件存储单元,针对每个用户存储由软件组件构成的组件中由用户使用的个人组件;个人组件加载器单元,从所述个人组件存储单元读取所述个人组件,并且将所述个人组件保持在可执行状态中;配置信息存储单元,存储对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息;请求接收单元,通过网络从外部终端接收所述用户标识符;组件获取单元,从所述共享组件加载器单元或所述个人组件加载器单元获取由对应于所述请求接收单元接收的用户标识符的配置信息指示的共享组件或个人组件;程序代码生成单元,通过在所述配置信息指示的引用中代入指示所述组件获取单元获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行单元,执行所生成的程序代码,并且获得执行结果;以及响应单元,向外部终端回复所述执行结果,以提供通信服务。根据本发明,一种服务提供系统,包括外部终端和通过网络连接到所述外部终端的服务提供设备,其中所述服务提供设备包括共享组件存储单元,存储共享组件,所述共享组件是由软件组件构成的组件中在用户之间共享的组件;共享组件加载器单元,从所述共享组件存储单元读取所述共享组件,并且将所述共享组件保持在可执行状态中;个人组件存储单元,针对每个用户存储由软件组件构成的组件中由用户使用的个人组件;个人组件加载器单元,从所述个人组件存储单元读取所述个人组件,并且将所述个人组件保持在可执行状态中;配置信息存储单元,存储对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息;请求接收单元,通过网络从所述外部终端接收所述用户标识符;组件获取单元,从所述共享组件加载器单元或所述个人组件加载器单元获取由对应于所述请求接收单元接收的用户标识符的配置信息指示的共享组件或个人组件;程序代码生成单元,通过在所述配置信息指示的引用中代入指示所述组件获取单元获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行单元,执行所生成的程序代码,并且获得执行结果;以及响应单元,向外部终端回复所述执行结果,以提供通信服务。根据本发明,一种服务提供方法,包括共享组件加载步骤,读取由软件组件构成的共享组件,并且将所述共享组件保持在可执行状态中;个人组件加载步骤,读取由软件组件构成的个人组件,并且将所述个人组件保持在可执行状态中;请求接收步骤,通过网络从外部终端接收分配给用户的用户标识符;组件获取步骤,基于(i)对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息,以及基于(ii)在所述请求接收步骤中接收的用户标识符,获取在所述共享组件加载步骤中保持在可执行状态中的共享组件或在所述个人组件加载步骤中保持在可执行状态中的个人组件;程序代码生成步骤,通过在所述配置信息指示的引用中代入指示所述组件获取步骤中获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行步骤,执行所生成的程序代码,并且获得执行结果;以及响应步骤,向所述外部终端回复所述执行结果,以提供通信服务。根据本发明,一种计算机可读记录介质,其存储使得计算机能够执行以下过程的服务提供程序共享组件加载过程,读取由软件组件构成的共享组件,并且将所述共享组件保持在可执行状态中;个人组件加载过程,读取由软件组件构成的个人组件,并且将所述个人组件保持在可执行状态中;请求接收过程,通过网络从外部终端接收分配给用户的用户标识符;组件获取过程,基于(i)对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息,以及基于(ii)在所述请求接收过程中接收的用户标识符,获取在所述共享组件加载过程中保持在可执行状态中的共享组件或在所述个人组件加载过程中保持在可执行状态中的个人组件;程序代码生成过程,通过在所述配置信息指示的引用中代入指示所述组件获取过程中获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行过程,执行所生成的程序代码,并且获得执行结果;以及响应过程,向所述外部终端回复所述执行结果,以提供通信服务。在该情形下,作为本发明的各方面,上述配置单元和方法、设备、系统、记录介质、 计算机程序等等中的本发明的示例实施例的变化的组合是有效的。根据本发明,可以提供能够同时实现对应于每个用户的定制要求以及有效地利用计算机的资源的服务提供设备、服务提供系统、服务提供方法和存储服务提供程序的存储介质。


根据下面的优选示例实施例的描述以及结合附图,上面的和其他的目的、优点以及特征将变得明显,其中图1是说明根据本发明的示例实施例的服务提供系统的示意配置的示意图;图2是说明根据本发明的示例实施例的服务提供设备的部署模型的示例的示图;图3是根据本发明的示例实施例的服务提供设备的整个操作的流程图;图4是说明根据本发明的示例实施例的服务提供设备的缺省服务组合的生成过程的流程图;图5是说明根据本发明的示例实施例的服务提供设备的根据用户的服务组合的生成过程的流程图;图6是说明根据本发明的示例实施例的服务提供设备中的请求数据的示例的示图;图7是说明根据本发明的示例实施例的服务提供设备中的缺省服务的服务配置信息的示例的示图;图8是说明根据本发明的示例实施例的服务提供设备中的定制服务的服务配置信息的示例的示图;图9是说明根据本发明的示例实施例的服务提供设备中的服务组合的配置示例的示图;图10是说明根据本发明的示例实施例的服务提供设备中的组合实现示例的程序代码示例的示图;图11是说明根据本发明的示例实施例的服务提供设备中的定制组件的部署的流程图;图12是说明根据本发明的示例实施例的服务提供设备中的定制组件的释放的流程图;图13是说明服务提供设备的示意配置的示意图;图14是说明服务提供设备的部署模型的示图。
具体实施例方式参考附图来描述本发明的示例实施例。在所有的图中,相同的配置单元使用相同参考标号,并且其详细描述被省略。图1是说明根据本发明的示例实施例的服务提供系统的示意配置的示意图。图1 中示出的服务提供系统包括服务提供设备100、网络180、以及外部终端190。图1示出的服务提供设备100包括请求接收响应单元101、组件注入单元102、配置信息存储单元104、以及组件加载器组150。而且,组件加载器组150包括缺省组件加载器110、组件加载器111、112……11N,缺省服务类组120、以及定制类组121,122……12N。缺省服务类组(共享组件存储单元)120存储由软件组件构成的组件中在用户之间共享的组件。缺省组件加载器(共享组件加载器单元)110从缺省服务类组120中读取缺省组件(共享组件),并且将缺省组件保持在可执行状态中。定制类组(个人组件存储单元)121-12N存储由软件组件构成的组件中用于各自用户的定制组件(个人组件)。此处,一个或多个用户使用个人组件。一个个人组件的用户可以与另一个个人组件的用户重叠。个人组件的用户的数目没有特殊限制,并且可以是共享缺省组件的用户全体的一部分。组件加载器(个人组件加载器单元)111-11N从定制类组121-12N中读取定制组件,并且将定制组件保持在可执行状态中。此外,配置信息存储单元104存储指示表示缺省组件和定制组件中的至少一个的信息的配置信息,其对应于分配给每个用户的用户标识符。配置信息还描述了缺省组件或者定制组件的引用点(引用)。此处,表示缺省组件和定制组件中的至少一个的信息指示组件名、存储该组件的存储区域等等。此外,引用点指示将缺省组件或定制组件注入可执行程序的注入点。在本发明的该示例实施例中,注入表示在引用点中代入配置信息中描述的组件。即,注入和代入的含义是类似的,并且表示概念上将对应的组件放在引用点中的过程。请求接收响应单元(请求接收单元)101通过网络180从外部终端190接收用户标识符。组件注入单元(组件获取单元)102从缺省组件加载器110或组件加载器111-1IN 获取由对应于请求接收响应单元101接收的用户标识符的配置信息指示的缺省组件或定制组件。此外,组件注入单元102包括程序代码执行单元130和程序代码生成单元160, 并且配备有通过程序代码执行单元130执行程序代码的功能,以及通过程序代码生成单元 160生成程序代码的功能。程序代码生成单元160通过在由配置信息指示的引用中代入指示所获取的缺省组件或定制组件的信息,生成可执行形式的程序代码。程序代码执行单元130执行生成的程序代码,并且获得执行结果。如上所述,组件注入单元102具有获取缺省组件或定制组件的功能、生成程序的功能、以及执行程序的功能。请求接收响应单元(响应单元)101通过向外部终端190返回组件注入单元102 的执行结果来提供通信服务。此时,缺省组件加载器110加载执行不取决于用户的缺省服务(即,被用户共享的服务)所需要的缺省服务类组120。此外,组件加载器111-11N与需要定制要求的用户具有一对一的关系,并且加载实现对应于与缺省服务类组的差异的定制要求的定制类组121-12N。在本发明的该示例实施例中,假设实现指示了诸如实现的具体组件等的程序,并且指示了可执行状态或可执行形式的程序代码。此外,从缺省组件加载器110或组件加载器111-11N进行的缺省组件或缺省定制组件的获取对应于例如作为加载点的地址的获取。 此外,在本发明的示例实施例中,获取不限于作为加载点的地址的获取,而可以是通过复制为执行程序来获取相应的组件这种形式。此外,准备与施加定制要求的用户的数目一样多的组件加载器111-11N,组件加载器不限于所示出的数目,而是可以可选地安装。此外,配置信息存储单元104针对每个用户存储配置信息,其关于多个用户使用的一个或多个服务指示了对应于每个用户的服务配置。因此,在本发明的这个示例实施例中,组件注入单元102根据作为请求者的用户来配置和执行合适的服务组合(这也称为组合对象)。在该情况下,服务组合指示由组件构成的能够提供给用户的服务,并且组合对象表示用于提供服务的数据和程序。如上所述,图1所示的服务提供设备100可以通过提供上述配置单元来实现本发明的这个示例实施例。服务提供设备100还可以包括加载器管理单元103。在该情形下,组件加载器单元 103使得组件加载器111-11N针对每个用户读取定制组件,并且将组件加载器111-11N保持在可执行状态中。在该情形下,加载器管理单元103管理存储组合和组件类的全体加载器。此外,组件注入单元102可以配备有存在(presence)确定单元140。存在确定单元140确定在配置信息存储单元104中是否存储了对应于请求接收响应单元101接收的用户标识符的配置信息。如果存在确定单元140确定在配置信息存储单元104中没有存储对应于用户标识符的配置信息,则组件注入单元102从缺省组件加载器110获取缺省组件。此外,组件注入单元102通过在引用点中代入指示获取的缺省组件的信息来生成用于实现缺省服务的程序代码。如上所述,即使在请求接收响应单元101接收到没有在配置信息存储单元104中登记的用户标识符的情形下,组件注入单元102(其也配备了存在确定单元140)也能够向用户提供缺省服务。图2是说明在该示例实施例的服务提供设备100中部署组件的模型(部署模型) 的示例的示图。图2中示出的缺省组件加载器110加载有用于实现不取决于用户的缺省服务的缺省服务类组120(图1)。缺省服务类组120具有服务组合2100,在服务组合2100中描述了组合服务逻辑。该服务组合2100具有指示抽象组件的引用点的组件接口(I/F) 2101-2104。此外,缺省服务类组120具有对应于组件I/F2101-2104的缺省实现的组件 2001-2004。例如,组件加载器111加载有定制类组121,在定制类组121中实现了针对服务A 的定制要求。定制类组121具有针对非缺省操作的服务A定制的组件2011。该定制组件 2011对应于作为服务组合2100的引用点的组件I/F 2102。以相同的方式,组件加载器112加载有定制类组122。定制类组122具有针对服务 B定制的组件2021。该定制组件2021对应于作为引用点的组件I/F 2104。在该示例实施例中,通过上述的配置,不是定制主题的组件与其他服务进行共享, 并且因此不会发生资源的浪费,诸如如图14中所示的相同的组件的多次加载。然而,上述部署模型仅是示例性性的,并且在本发明的这个示例实施例中,组件加载器的数目可以增加或减少,并且组件加载器具有不同的数目或各种配置、以及加载在组件加载器中的组合和组件。S卩,在本发明的这个示例实施例中,与缺省服务相关的组件和组合被加载在缺省组件加载器中,以及变得不同而需要定制的组件被加载在针对每个用户的组件加载器中。然而,构成服务(可以存在不止一个服务)的组件或服务组合的数目以及组件或服务组合被加载在哪个加载器中都可以根据情形或条件有所不同,而不局限于上面描述的情况。例如,还可以提供部分共享的组件加载器170,其将比率等于或高于预定比率的用户共同使用的相同的定制组件172保持在可执行状态(参见图2、。在该情形下,相同的定制组件表示能够示出相等或相同类型的功能的组件。因此,相同的定制组件能够在不妨碍服务提供的范围内提供相等或相同类型的服务。在本发明的这个示例实施例中,还提供了存储相同的个人组件的部分共享组件存储类组171,并且加载器管理单元103可以将同一定制组件172从定制组件存储类组移动到部分共享组件存储类组171,并且生成部分共享组件加载器170。在本发明的这个示例实施例中,组件表示用于实现功能的软件组件。例如,组件是基于面向对象的编程技术、面向组件的编程技术、SOA(面向服务的架构)技术等构建的软件组件。此外,在本发明的这个示例实施例中,假设具有较大粒度尺寸的功能单元(其由组件的联合来实现)被称为组合(composite)。此外,组合自身可以视为构成具有更大粒度尺寸的组合的组件。此外,在本发明的这个示例实施例中,类表示通过对程序行为进行编译而转换为可执行形式的文件。因此,在将类表达为组件类的情形下,类表示通过对组件进行编译而得到的可执行组件。此外,假设被执行的程序由要执行的数据和要执行的过程构成。此外,对象由程序和集合数据的联合构成。此外,被读取的可执行程序的完全可执行的状态或运行状态被称为实例。即,所实例化的内容是可执行形式的程序。在本发明的这个示例实施例中,用户指使用从服务提供设备100提供的服务的一般主体。具体地,用户指人、人使用的终端设备、程序、以及不利用与人交互的直接关系进行操作的其他设备和程序。接下来,将描述构成服务提供设备100的每个部分的示意操作。请求接收响应单元101通过网络180从操作外部终端190的用户接收请求数据。 请求接收响应单元101从请求数据中提取用于确定请求者的信息(用户标识符)、用于标识使用的服务的信息、以及针对被用服务的参数。此外,请求接收响应单元101向组件注入单元102转发所提取的信息。组件注入单元102基于从请求接收响应单元101获得的信号等等查询配置信息存储单元104。此外,组件注入单元102从配置信息存储单元104获取调用者(caller)的服务组合的集合和要注入的组件。组件注入单元102从加载器管理单元103中获取与必需的服务组合和要注入的组件类存在在哪个组件类中有关的信息。此外,组件注入单元102通过将组件类注入到从配置信息存储单元104获取的服务组合和要注入的组件的抽象引用点中以使得服务组合实体化。此外,组件注入单元102执行实体化的服务组合。而且,请求接收响应单元101通过网络180向具有外部终端190的用户返回执行实体化的服务组合所针对的返回值。在此时,在本发明的该示例实施例中,注入表示在引用点实体化组件实现的过程。接下来,将使用附图描述根据该示例实施例的服务提供设备100的全部操作。图 3是说明根据该示例实施例的服务提供设备100的全部操作的流程图。在图3所示的流程图中,请求接收响应单元101首先从用户接收请求数据(步骤 S1001)。该请求接收响应单元101从请求数据中提取用户信息(诸如用户标识符的用户信息)、指定使用的服务所需的信息、参数等等(步骤S1002)。组件注入单元102从请求接收响应单元101中接收所提取的用户信息、指定服务所需的信息、参数等等的集合。此外,组件注入单元102在配置信息存储单元104中查询对应于用户信息的服务的配置信息(S1003)。此处,组件注入单元102确定针对该用户信息是否存在定制要求(步骤S1004)。 如果在配置信息存储单元104中存在定制要求(步骤S1004中的“是”),组件注入单元102 根据用户从配置信息存储单元104中获取配置信息。此外,组件注入单元102根据配置信息生成服务组合,并且获取其组合对象(步骤S1007)。另一方面,如果步骤S1004中的确定结果是在配置信息存储单元104中不存在定制要求(步骤S1004中的“否”),则组件注入单元102从配置信息存储单元104中获取缺省服务的配置信息。此外,组件注入单元102根据缺省服务的配置信息生成服务组合,并且获取其组合对象(步骤S1005)。组件注入单元102通过执行在步骤S1005和S1007中获取的组合对象,执行服务过程(步骤S1006)。请求接收响应单元101通过网络180向用户返回服务过程的结果,作为对请求数据的响应(步骤S1008)。接下来,将参考图4和图5的流程图详细描述在上述过程中组件注入单元102在步骤S1005和S1007中生成服务组合的过程。图4是说明在步骤S1005中的缺省服务组合的生成过程的流程图。首先,在缺省服务组合的生成过程中,从缺省组件加载器110获取服务组合 2100(图幻,服务组合2100由从配置信息存储单元104接收的配置信息指定(步骤S1501)。组件注入单元102确定是否能够从缺省组件加载器110获取对应的服务组合 2100 (这也称为对应的组合)(步骤S1502)。如果不能够获取对应的组合(步骤S1502中的“否”),组件注入单元102通过输出指示不能够执行对应的服务来执行异常处理,并且结束该过程(步骤S5000)。异常处理表示例如通过后退(rollback)来中断当前处理的事务,并且当前状态返回到在该事务处理开始之前的状态。另一方面,如果能够获取对应的组合(步骤S1502中的“是”),则组件注入单元102 将所获取的服务组合2100实例化为可执行的(步骤S1503)。此处,与上述的方式相同,实例化为可执行的表示读取可执行形式的程序,并且将其设置为完全可执行的状态。组件注入单元102获取组件类,该组件类由配置信息指定,并且应该从缺省组件加载器110注入(步骤S1504)。此外,组件注入单元102确定是否已经能够获取对应的组件类(这称为对应的组件)(步骤S1505)。
如果不能够获取对应的组件(步骤S1505中的“否”),则以步骤S5000中的相同方式,组件注入单元102输出错误,执行异常处理,并且结束该过程(步骤S5001)。另一方面,如果能够获取对应的组件(步骤S1505中的“是”),则组件注入单元102 将获取的组件类注入到步骤S1503中实例化的服务组合的引用点中(步骤S1506)。在注入组件类之后,组件注入单元102确定是否已经将组件类注入到所有引用点中(步骤S1507)。如果存在任何还没有注入的组件类(步骤S1507中的“否”),则组件注入单元102返回到步骤S1504,并且执行下一个组件类的注入。另一方面,如果已经完成组件类到所有引用点的注入(步骤S1507中的“是”),则组件注入单元102结束服务组合的生成过程,并且返回服务提供过程中的步骤S1006。接下来,将参考图5详细描述步骤S1007中的服务组合生成过程。图5是说明在步骤S1007中根据用户的服务组合生成过程的流程图。首先,在根据用户的服务组合生成过程中,组件注入单元102从对应用户的组件加载器中获取由从配置信息存储单元104接收的配置信息指定的服务组合(步骤S1701)。组件注入单元102确定是否已经从对应用户的组件加载器中获取对应的服务组合(步骤S1702)。如果对应的组合还没能够获取(步骤S1702中的“否”),则组件注入单元102从缺省组件加载器110获取相同的服务组合(步骤S1703)。组件注入单元102确定是否已经能够从缺省组件加载器110获取服务组合(步骤S1704)。如果还没能够获取对应的组合(步骤S1704中的“否”),则组件注入单元102 以步骤S5000中的相同方式输出指示不能够执行对应服务的错误,通过输出来执行异常处理,并且结束该过程(步骤S5002)。如果在步骤S1702和S1704中的任意一个中确定已经能够获取服务组合(步骤 S1702中的“是”或步骤S1704中的“是”),则组件注入单元102将其服务组合实例化为可执行的(步骤S1705)。组件注入单元102获取组件类,该组件类由配置信息指示,并且应该从对应用户的组件加载器注入(步骤S1706)。而且,组件注入单元102确定是否已经能够从对应用户的组件加载器获取该组件类(步骤S1707)。如果还不能够获取对应的组件类(步骤S1707中的“否”),则组件注入单元102从缺省组件加载器110获取相同的组件类(步骤S1708)。此外,组件注入单元102确定是否已经能够从缺省组件加载器110获取该组件类(步骤S1709)。同样,如果还不能够获取对应的组件类(步骤S1709中的“否”),则以步骤S5000 中的相同方式,组件注入单元102输出指示不能够执行对应服务的错误,执行异常处理,并且结束该过程(步骤S5003)。另一方面,在步骤S1707或S1709中,如果已经能够获取该组件类(步骤S1707中的“是”或步骤S1709中的“是”),则组件注入单元102将获取的组件类注入在步骤S1705 中实例化的服务组合的引用点中(步骤S1710)。在注入组件后,组件注入单元102确定是否已经将组件类注入到所有引用点中 (步骤S1711),并且如果存在任何还没有注入的组件类(步骤S1711中的“否”),则组件注入单元102返回到步骤S1706以执行下一个组件类的注入。
另一方面,如果已经完成组件类到所有引用点的注入(步骤S1711中的“是”),则组件注入单元102结束服务组合的生成过程,并且返回服务提供过程中的步骤S1006。如上所述,根据这个示例实施例,如果接收到服务请求,则服务提供设备100根据用户生成服务组合,并且执行该服务组合,因此可以应对用户的定制要求。而且,因为可以仅管理针对每个用户的定制所必须的组件,以及共享提供其他服务所必须的组件,所以能够同时获得定制和对计算机中的资源的有效利用二者。此外,在该示例实施例中,生成和配置根据用户而不同的组件加载器,但是该示例实施例不局限于此。例如,可以采用下述配置通过对多个用户的定制功能进行归组来执行对相应的共享组件加载器的归组。具体地,在合同单位和组织中存在多个用户并且可以对比率等于或高于预定比率的用户共同使用的定制组件进行归组的情形下,该配置是有效的。在该情形下,因为可以共享要被归组的定制组件的组件加载器(部分共享的组件加载器),所以有利于对组件加载
器的管理。接下来,使用更具体的示例,参考附图描述根据该示例实施例的操作。下述详情是示例性的,并且根据该示例实施例的操作或数据形式不局限于此。在下述例子中,假设Java语言及其处理系统(http:/WWW. Java. sun. com)被应用到组合实现、组件实现、以及处理平台。首先,在图6中示出了来自用户的请求数据的示例。在图6中,描述了 XML(可扩展的标记语言,http:/WWW. w3. org/TR/xml)形式的请求数据3001。此外,请求数据3001是使用诸如HTTP(超文本传送协议,RFC2616)之类的协议,通过网络180,传送自操作外部终端190的用户的。服务提供设备100获取请求数据3001,基于请求数据3001执行组合服务,并且向用户返回服务过程的结果作为对请求数据3001的响应。首先,请求接收响应单元101通过网络180接收请求数据3001。请求接收响应单元 101从请求数据3001中提取发送源的用户信息3002、请求处理的服务信息、以及参数3003。 此外,请求接收响应单元101向组件注入单元102传送提取的用户信息3002、服务信息、以及用户信息3002。根据图6中示出的请求数据3001,指示用户信息3002是“al234”并且服务信息是
"MyAnalyze. invoke”。参数 3003 指示 “paraml” 被设置为值 “xxx”,“param2” 被设置为值 “yyy,,。组件注入单元102基于该信息查询配置信息存储单元104,并且获取对应的服务
配直^[曰息ο图7是说明服务配置信息的示例的示图。图7中示出的服务配置信息3101指示对应于缺省服务的配置信息。即,如果在配置信息存储单元104中没有登记对应于用户信息3002 “al234”的配置信息,则配置信息存储单元104返回对应于服务配置信息的缺省服务的配置信息。在缺省服务的服务配置信息3101中,指定了对应于服务信息"MyAnalyze. invoke"的缺省服务的组合实现3111。特别地,组合实现3111指定“com.mec. jp. sprl. AnalyzeData”。此外,服务配置信息3101指定组件实现3112和3113将被注入到组合实现3111。相反,在配置信息存储单元104中登记了对应于用户信息3002 “al234”的配置信息的情形下,配置信息存储单元104返回对应的定制服务的配置信息(定制服务配置信息 3201 图8)。在该示例实施例中,图8中所示的服务配置信息3201被称为定制服务配置信肩、ο在图8中的定制服务配置信息3201中,指定了用户信息3002 “al234”、服务信息 "MyAnalyze. invoke”、以及根据参数3003确定的定制服务的组合实现3211。此外,通过组合实现3211指定了“com. mec. jp. sprl. AnalyzeData”。此外,通过组合实现3211指定了要注入的组件实现3212和3213。将使用图8中示出的定制服务配置信息3201描述后续的操作。组件注入单元102基于图8所示的定制服务配置信息生成针对用户已经请求的服务过程的服务组合。在图9中示出了在此时的组件加载器的配置、被读取的组合、以及组件之间的关系。图9中示出的缺省组件加载器1110读取缺省服务组合5100、组件5001和组件 5002。而且,针对用户“al234”的组件加载器1111读取组件5501。在该情形下,组件注入单元102尝试从组件加载器1111提取组合实现3211 (图8) (即,服务组合)。然而,在组件加载器1111中不存在组合实现3211。因此,组件注入单元 102从缺省组件加载器1110中成功地提取组合实现3211。此外,组件注入单元102生成组合实现3211的实例。特别地,组件注入单元102 尝试从组件加载器1111提取引用点和要注入的组件。组件注入单元102首先尝试从组件加载器1111提取针对第一引用点“graph”的组件实现“com. mec. jp. sprl. DrawBar并且成功。此外,组件注入单元102在组合实现的实例的引用点“graph”中注入(代入)组件实现。接下来,组件注入单元102尝试从组件加载器1111获取针对第二引用点“calc”的组件实现“com. mec. jp. sprl. SumData”。然而,在其中不存在该组件实现。因此,组件注入单元102尝试从缺省组件加载器1110获取“com. mec. jp. sprl. SumData",并且成功。组件注入单元102以相同的方式生成“com. mec. jp. sprl. SumData”的实例,并且将其注入“calc”。图10是说明作为组合实现4001的实现示例的程序代码示例的示图。以Java(注册商标)实现的组合实现4001具有针对另外的组件的引用“graph”和“calc”。“graph” 和“calc”分别是针对实现接口 IDrawGraph和ICalcData的对象的引用点。在组合实现4001中,不代入在引用点中显式实现的组件类。即,组件注入单元102 不直接代入获取的组件。组件注入单元102基于定制服务配置信息3201生成“com. mec. jp. sprl. DrawBar”的实例,并且将其代入“graph”中。组件注入单元102类似地生成“com. mec. jp. sprl. SumData”的实例,并且将其代入“calc”中。因此,组件注入单元102完成组件类到所有引用点的注入。接着,组件注入单元102调用基于从请求数据中提取的用户信息、服务信息和参数生成的组合实现的“调用 (invoke) ”方法。组件注入单元102通过代入参数执行服务过程,并且通过网络180向请求者返回执行结果。如上所述,根据该示例实施例,当接收到针对服务的请求数据的请求时,服务提供设备100根据用户生成服务组合,执行服务过程,以及因此能够应对具体的定制要求。在该示例实施例中,如果形成相应的配置单元以实现功能,则是足够的。例如,这可以通过执行预定功能的专用硬件、具有计算机程序给出的预定功能的数据处理设备、在数据处理设备中通过计算机程序实现的预定功能、及其联合来实现。在服务提供设备100中包括的所有或部分配置可以通过硬件或通过使得计算机执行过程的程序(或程序代码)来实现。计算机从诸如非易失性存储器的记录介质中读取并执行程序。在该示例实施例中,处理器和存储介质可以是组件注入单元102。此外,在该示例实施例中,不一定要求各个配置单元独立存在。例如,多个配置单元可以形成为一个构件,一个配置单元可以由多个构件来形成,一个配置单元可以是另一个配置单元的一部分,一个配置单元的一部分可以与另一个配置单元的一部分重叠。此外,在该示例实施例中,通过步骤编号顺序描述了多个过程。然而,所描述的编号不限制多个过程的执行顺序。如上所述,尽管已经参考附图描述了本发明的示例实施例,然而它们是对本发明的示例,并且可以采用不同于上述配置的各种配置。修改的示例例如,上述示例涉及由针对每个用户的定制组件提供服务的程序代码的生成。在该示例实施例中,可以关于现有用户另外请求对定制组件的分配,或者可以删除现有用户的定制组件的分配。在该示例实施例中,针对定制组件的分配的另外的请求被称为部署,并且对定制组件的分配的删除被称为部署释放。特别地,请求接收响应单元101接收用户标识符,并且在接收到指示请求分配不对应于用户标识符的定制组件的信息时执行下述过程。首先,加载器管理单元103使得对应于用户标识符的用户的组件加载器111-11N读取其他定制组件。此外,配置信息存储单元104将指示其他定制组件的信息添加到对应于用户标识符的配置信息。因此,组件注入单元102可以从现有用户接收针对还没有登记的其他定制组件的使用的请求,并且将其他定制组件信息添加到配置信息。将描述在服务提供设备100中执行定制组件的部署和部署释放的过程。图11是说明部署定制组件的流程图。在图11示出的流程图中,请求接收响应单元101停止针对定制要求被施加到的对应用户的服务(这称为针对对应用户的服务)(步骤2001)。然而,此时,不停止针对其他用户的服务或针对非指定用户的缺省服务。存在确定单元140确定该用户是否是新定制要求施加到的、且不具有针对现有的对应用户的组件加载器的用户(步骤3200 。如果存在确定单元140确定用户是不具有针对对应用户的组件加载器的新用户(步骤S2002中的“是”),则加载器管理单元103生成针对对应用户的组件加载器(步骤S2003)。另一方面,如果存在确定单元140确定用户不是新用户(步骤S2002中的“否”), 则加载器管理单元103针对对应用户的组件加载器读取实现新施加的定制要求的组件类 (步骤 S2004)。在此时,当存在施加了定制要求的请求,并且确定用户是新用户时,加载器管理单元103可以针对对应的新用户的组件加载器读取定制要求。
于是,组件注入单元102向配置信息存储单元104添加描述针对组合的对应用户的定制要求的配置信息(步骤S20(^)。此后,组件注入单元102恢复针对对应用户的服务 (步骤S2006),并且结束定制组件的部署过程。接下来,将描述执行定制组件的部署释放的过程。图12是描述执行定制组件的部署释放的流程图。在图12示出的流程图中,以与图11中示出的部署定制组件的情形下的相同方式, 请求接收响应单元101首先停止对应用户的服务(步骤S2101)。组件注入单元102从存储在配置信息存储单元104中的配置信息中删除将被部署释放的定制要求(步骤S2102)。 接着,加载器管理单元103丢弃针对对应用户的组件加载器(步骤S2103)。在丢弃针对对应用户的组件加载器后,组件注入单元102确定对应用户中是否剩余其他定制要求(步骤S2104)。如果没有剩余对应用户的定制要求(步骤S2104中的 “否”),则组件注入单元102前进到步骤S2107。另一方面,如果剩余了对应用户的定制要求(步骤S2104中的“是”),则加载器管理单元103再次生成针对在步骤S2103中丢弃的对应用户的组件加载器(步骤S210O。此外,组件注入单元102针对生成的组件加载器读取在步骤S2104中剩余的除部署释放的主题之外的定制组件(步骤S2106)。此外,请求接收响应单元101恢复针对对应用户的服务 (步骤S2107),并且结束定制组件的部署释放的过程。如上所述,根据示例实施例,定制组件的部署和部署释放可以在针对每个用户管理的组件加载器的单元中执行。此外,服务提供设备100可以参考其他用户的组件加载器或缺省组件加载器,即使在执行定制组件的部署或部署释放的情形下也无矛盾。因此,可以在继续其他用户的服务的同时,执行指定用户的定制组件的部署或部署释放。因此,可以实现服务的连续性和对应于针对每个用户的定制要求的维护的容易性。本发明申请要求在2009年1月9日提交的日本专利申请No. 2009-003308的优先权,在此通过参考将其全部公开内容并入本文。
权利要求
1.一种服务提供设备,包括共享组件存储单元,存储共享组件,所述共享组件是由软件组件构成的组件中在用户之间共享的组件;共享组件加载器单元,从所述共享组件存储单元读取所述共享组件,并且将所述共享组件保持在可执行状态中;个人组件存储单元,针对每个用户存储由软件组件构成的组件中由用户使用的个人组件;个人组件加载器单元,从所述个人组件存储单元读取所述个人组件,并且将所述个人组件保持在可执行状态中;配置信息存储单元,存储对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息;请求接收单元,通过网络从外部终端接收所述用户标识符;组件获取单元,从所述共享组件加载器单元或所述个人组件加载器单元获取由对应于所述请求接收单元接收的用户标识符的配置信息指示的共享组件或个人组件;程序代码生成单元,通过在所述配置信息指示的引用中代入指示所述组件获取单元获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行单元,执行所生成的程序代码,并且获得执行结果;以及响应单元,向外部终端回复所述执行结果,以提供通信服务。
2.根据权利要求1所述的服务提供设备,进一步包括加载器管理单元,使得所述个人组件加载器单元读取所述个人组件以及使得所述个人组件加载器单元将每个用户的个人组件保持在可执行状态中。
3.根据权利要求1或2所述的服务提供设备,进一步包括存在确定单元,确定在所述配置信息存储单元中是否存储了对应于所述请求接收单元接收的用户标识符的配置信息。
4.根据权利要求3所述的服务提供设备,进一步包括当所述存在确定单元确定在所述配置信息存储单元中没有存储对应于所述用户标识符的配置信息时,所述组件获取单元从所述共享组件加载器单元获取共享组件,并且所述程序代码生成单元通过在所述引用中代入指示所述组件获取单元获取的共享组件的信息来生成程序代码。
5.根据权利要求2所述的服务提供设备,其中当所述请求接收单元接收指示请求分配不对应于用户标识符的另一个个人组件的信息以及所述用户标识符时,所述加载器管理单元使得所述个人组件加载器单元读取所述另一个个人组件,并且所述配置信息存储单元向对应于所述用户标识符的配置信息添加指示所述另一个个人组件的信息。
6.根据权利要求1到5中的任一项所述的服务提供设备,进一步包括部分共享组件加载器单元,将比率等于或高于预定比率的用户共同使用的相同的个人组件保持在可执行状态中。
7.根据权利要求6所述的服务提供设备,进一步包括部分共享组件存储单元,存储所述相同的个人组件,其中所述加载器管理单元将所述相同的个人组件从所述个人组件存储单元传送到所述部分共享组件存储单元,并且生成所述部分共享组件加载器单元。
8.一种服务提供系统,包括外部终端和通过网络连接到所述外部终端的服务提供设备,所述服务提供设备包括共享组件存储单元,存储共享组件,所述共享组件是由软件组件构成的组件中在用户之间共享的组件;共享组件加载器单元,从所述共享组件存储单元读取所述共享组件,并且将所述共享组件保持在可执行状态中;个人组件存储单元,针对每个用户存储由软件组件构成的组件中由用户使用的个人组件;个人组件加载器单元,从所述个人组件存储单元读取所述个人组件,并且将所述个人组件保持在可执行状态中;配置信息存储单元,存储对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息;请求接收单元,通过网络从所述外部终端接收所述用户标识符; 组件获取单元,从所述共享组件加载器单元或所述个人组件加载器单元获取由对应于所述请求接收单元接收的用户标识符的配置信息指示的共享组件或个人组件;程序代码生成单元,通过在所述配置信息指示的引用中代入指示所述组件获取单元获取的共享组件或个人组件的信息,生成可执行形式的程序代码;程序执行单元,执行所生成的程序代码,并且获得执行结果;以及响应单元,向外部终端回复所述执行结果,以提供通信服务。
9.一种服务提供方法,包括共享组件加载步骤,读取由软件组件构成的共享组件,并且将所述共享组件保持在可执行状态中;个人组件加载步骤,读取由软件组件构成的个人组件,并且将所述个人组件保持在可执行状态中;请求接收步骤,通过网络从外部终端接收分配给用户的用户标识符; 组件获取步骤,基于(i)对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息,以及基于(ii)在所述请求接收步骤中接收的用户标识符,获取在所述共享组件加载步骤中保持在可执行状态中的共享组件或在所述个人组件加载步骤中保持在可执行状态中的个人组件;程序代码生成步骤,通过在所述配置信息指示的引用中代入指示所述组件获取步骤中获取的共享组件或个人组件的信息,生成可执行形式的程序代码; 程序执行步骤,执行所生成的程序代码,并且获得执行结果;以及响应步骤,向所述外部终端回复所述执行结果,以提供通信服务。
10. 一种计算机可读记录介质,存储使得计算机能够执行以下过程的服务提供程序 共享组件加载过程,读取由软件组件构成的共享组件,并且将所述共享组件保持在可执行状态中;个人组件加载过程,读取由软件组件构成的个人组件,并且将所述个人组件保持在可执行状态中;请求接收过程,通过网络从外部终端接收分配给用户的用户标识符; 组件获取过程,基于(i)对应于分配给每个用户的用户标识符的、指示所述共享组件或所述个人组件的引用的配置信息以及指示所述共享组件和所述个人组件中的至少一个的信息,以及基于(ii)在所述请求接收过程中接收的用户标识符,获取在所述共享组件加载过程中保持在可执行状态中的共享组件或在所述个人组件加载过程中保持在可执行状态中的个人组件;程序代码生成过程,通过在所述配置信息指示的引用中代入指示所述组件获取过程中获取的共享组件或个人组件的信息,生成可执行形式的程序代码; 程序执行过程,执行所生成的程序代码,并且获得执行结果;以及响应过程,向所述外部终端回复所述执行结果,以提供通信服务。
全文摘要
服务提供设备(100)包括请求接收响应单元(101)、组件注入单元(102)、配置信息存储单元(104)、以及组件加载器组(150)。服务提供设备(100)的组件加载器组(150)包括缺省组件加载器(110)、组件加载器(111)、(112)……(11N),缺省服务类组(120)、以及定制类组(121)、(122)……(12N)。
文档编号G06F9/445GK102272720SQ20098015414
公开日2011年12月7日 申请日期2009年12月24日 优先权日2009年1月9日
发明者岛村荣 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1