CN101690123B - 用于由数据服务器管理的web服务运行时的装置、系统和方法 - Google Patents

用于由数据服务器管理的web服务运行时的装置、系统和方法 Download PDF

Info

Publication number
CN101690123B
CN101690123B CN2008800159415A CN200880015941A CN101690123B CN 101690123 B CN101690123 B CN 101690123B CN 2008800159415 A CN2008800159415 A CN 2008800159415A CN 200880015941 A CN200880015941 A CN 200880015941A CN 101690123 B CN101690123 B CN 101690123B
Authority
CN
China
Prior art keywords
web services
metadata
web
module
wsdl
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 - Fee Related
Application number
CN2008800159415A
Other languages
English (en)
Other versions
CN101690123A (zh
Inventor
S·A·布罗德斯基
S·A·德迈尔
M·申克尔
P·万驰
M·E·魏劳赫
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 CN101690123A publication Critical patent/CN101690123A/zh
Application granted granted Critical
Publication of CN101690123B publication Critical patent/CN101690123B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

一种装置、系统和方法,其用于创建和操作由数据服务器管理的web服务运行时。通用web服务运行时模块和相关运行时控制器部署在应用服务器上。运行时控制器为了定义在可用基于数据访问的web服务中的web服务元数据的改变而监视web服务管理元数据仓库。如果检测到改变,则通用web服务运行时将自动化更新web服务产品和与所影响的web服务相关的web服务端点接口,以使得web服务元数据中的改变反映到基于数据访问的web服务中。用户管理web服务管理元数据仓库以及通过包括web服务管理元数据仓库的数据库定义和管理基于数据访问的web服务,而不需与应用服务器交互。

Description

用于由数据服务器管理的web服务运行时的装置、系统和方法
技术领域
本发明涉及web服务的创建和管理。更具体地,本发明涉及由数据库管理系统所定义且管理的web服务的创建。
背景技术
计算机世界种类繁多;各种平台、语言和操作系统在全世界范围内可用并且正在使用。此外,相同组织或者网络中的计算机通常在不同的平台上运行。鉴于这些实体不“说相同的语言”,因此允许这些实体彼此通信通常较困难。在需要为了提供兼容性而简单替换运转的旧有系统,或者在程序员为了在不同机器上提供相同功能而必须将代码从一种计算机语言翻译或“移植”到另一种计算机语言时,计算机不能跨越平台通信会增加开支。
web服务通过提供用于在网络中跨越不同平台和框架进行通信的标准手段而为该问题提供了方案。web服务是使用开放通信协议自描述和自包含的应用组件。只要服务提供者和客户端都参加到遵守了所接受的web服务协议的事务中,则不论服务提供者和客户端的底层平台是什么,这些服务都可以由客户端调用。典型地,在web服务环境中,客户端和服务器按照HTTP协议并使用SOAP标准来传达XML消息。web服务可以使用不同服务调用(invocation)语言(诸如,XML-RPC)和其他传输协议,但是SOAP和HTTP是现在最流行的选择。
通常,web服务意在由客户端应用进行调用,而不是直接由人类使用。web服务可以允许实体在维持对信息源的控制的同时对信息进行共享。例如,公司可以使用web服务来向客户端提供针对特定信息的访问权,而不暴露整个数据库,也不会产生弱点。例如,可以开发web服务,以允许客户端取回存储在公司数据库中的用户地址,并且在需要的时候对该地址进行更新。只要两端都使用同一协商一致的协议,web服务就允许客户端应用访问这个信息,而不论正在使用的平台是什么。此外,该公司不需要为了提供信息而将数据库开放给客户端,这使得其成为更安全的信息共享方法。
典型地,创建web服务来暴露数据会涉及服务提供者创建应用并将代码放置到应用服务器上。对web服务及其生命周期的管理都将在应用服务器(通常称为应用服务器侧或层)上完成。尽管通过web服务暴露数据的方法对于熟悉应用服务器的来说是简单易用的,但是这种方法还是存在很多难点。
首先,对于数据库管理员和工作在数据库环境以外具有有限经验的其他人而言,在应用服务器上创建和管理web服务可能是困难的。对于在数据库、创建、设计和管理上具有专业知识的个人而言,编写web服务、在应用服务器上部署该web服务和随后从那时起对其进行管理的过程可能是麻烦的。如果数据库管理员让诸如应用服务器管理员的另外的个人创建并管理用于数据库的web服务,则数据库管理员就放弃了数据库的某些控制;现在,通过另外的个人在另外服务器上管理的web服务对数据进行访问是可能的。所开发的web服务可能允许数据库管理员本来并不允许的数据改变,以及当系统管理员需要在应用服务器处停止并重启web服务时,为允许维护数据库而关闭web服务将增加一层复杂性。
甚至对于那些熟悉应用服务器的人,开发和部署web服务(诸如用来在数据库中访问信息那些)也经常是耗费时间的过程。为了开发web服务,应用开发者使用支持的编程语言(诸如Java(Java和所有基于Java的商标是Sun微系统有限公司在美国、其他国家或者世界范围内的商标)或者C++)来为该服务编写代码;编写SQL、XQuery或其他数据访问语句以便在数据库中访问信息;提供命名空间、操作名称和消息样式;以及随后将该代码打包到可部署的组件中。为了部署web服务,web应用管理员为数据服务器设立并配置数据源、将该web服务作为应用来部署,以及为web服务配置诸如安全和资源引用的设定。web应用管理员也管理web服务的生命周期,这可能要求重复上述很多步骤。
此外,如果web服务为了提供高可用性而分布在多个应用服务器或节点上,则用于该web服务的代码必须手动复制、维护,并在该代码所在的所有服务器上保持同步。这些应用服务器本身可能不是统一类型的,这便要求用户根据每个系统的需求来处理部署和管理的每个个体案例。前文的结论是,创建、开发和维护web服务会对在web服务生命周期中在所有点进行管理施加高成本,特别是在异类环境中更是如此。
根据前述的讨论,显然需要一种用于由数据服务器管理的web服务工具,该工具允许数据库管理员或其他熟悉数据库层或侧的用户在数据库侧简单并且高效地在数据库侧而不是在应用服务器侧创建、控制和部署web服务。该工具应该理想地隔离在应用服务器上运行和管理web服务的细节,以使得数据库管理员可以从数据库管理系统(DBMS)高效地对该web服务进行监视和管理。该工具还应该使得web服务的管理集中起来,而不论web服务在其上部署的应用服务器的数量和类型。
发明内容
响应于本领域现状,以及更具体地响应于本领域中尚未完全解决的问题和需要,而开发出本发明。因此,开发本发明来提供用于创建和管理由数据服务器管理的web服务运行时的装置、系统和方法,其克服了上文所述本领域技术的很多不足。
本发明包括计算机程序产品,该计算机程序产品的操作包括:访问web服务管理元数据仓库中的web服务元数据;确定web服务管理元数据仓库中的web服务元数据发生改变;以及响应于web服务管理元数据仓库中web服务元数据的改变,而自动化地管理基于数据访问的web服务,其中该基于数据访问的web服务被配置用于与部署在应用服务器上的通用web服务运行时模块协作来执行,所述应用服务器被配置用于支持web服务的动态部署。
在web服务元数据的改变包括向web服务管理元数据仓库中添加的web服务元数据的情况下,自动化地管理基于数据访问的web服务还包括:从web服务管理元数据仓库取回web服务配置文档,根据该web服务配置文档创建web服务产品(其中该web服务配置文档满足web服务配置方案),以及启动web服务产品,以使得与通用web服务运行时模块相关的请求处理器接受与该web服务产品相关的请求。启动web服务产品还包括web服务产品执行web服务请求,而无需重启通用web服务运行时模块。
在web服务元数据的改变包括从web服务管理元数据仓库中移除的web服务元数据的情况下,自动化地管理基于数据访问的web服务包括:去激活与基于数据访问的web服务相关的web服务运行时产品,其中该基于数据访问的web服务由所移除的web服务元数据标识。
在某些实施方式中,web服务元数据的改变是通过评估与定义在web服务管理元数据仓库中的web服务相关的时间戳而确定的。此外,计算机程序产品还可以包括用户定义web服务管理元数据仓库中的web服务元数据。web服务元数据还包括web服务名称、web服务配置文档、web服务描述语言文档、web服务状态和时间戳。
在某些实施方式中,web服务配置文档是XML文件,web服务配置方案是XML方案文档,以及web服务配置文档指定在数据仓库上的结构化查询语言(SQL)数据操作。计算机程序产品还可以包括发布与基于数据访问的web服务相关的web服务描述语言文档(WSDL)。
还公开了一种用于操作由数据服务器管理的web服务运行时的系统,该系统包括:应用服务器,其被配置用于支持web服务的动态部署和主控多个web服务运行时模块,该应用服务器包括存储器器件和至少一个处理器。该系统还包括:web服务管理元数据仓库,其包括web服务名称、web服务配置文档、web服务描述语言(WSDL)文档、web服务状态和时间戳;基于数据访问的web服务数据仓库,其包括web服务可访问的数据和已存储过程。该系统还包括:运行时控制器,其被配置用于在应用服务器上操作以及管理单个唯一通用web服务运行时;以及通用web服务运行时模块,其被配置用于在应用服务器上操作以及基于web服务配置文档来为一个或者多个web服务创建一个或者多个web服务产品。
在某些实施方式中,该系统还包括web服务元数据工具,其被配置用于与web服务管理元数据仓库通信,该web服务元数据工具被配置用于向用户暴露可用于被部署为基于数据访问的web服务的已存储过程和基于数据访问的web服务数据,以及用于接收来自用户的元数据,该元数据定义了新的基于数据访问的web服务。web服务元数据工具还根据用户元数据生成web服务配置文档和WSDL文档,以及在web服务管理元数据仓库中存储web服务名称、web服务配置文档、WSDL文件、状态和时间戳。
运行时控制器还包括:同步模块,其被配置用于确定web服务管理元数据仓库中的改变以及向通用web服务运行时模块通知该改变;端点接口同步模块,其被配置用于维护web服务引擎中的web服务端点接口定义;以及管理模块,其被配置用于在通用web服务运行时模块上启用web服务产品的启动操作和停止操作。
本发明还公开了一种用于操作由数据服务器管理的web服务运行时的系统,其中该系统包括:多个应用服务器,其被配置用于支持web服务的动态部署和主控多个web服务运行时模块和运行时控制器;多个数据库,这些数据库还包括公共web服务管理元数据仓库和公共基于数据访问的web服务数据仓库;多个web服务运行时模块,其被配置用于在多个应用服务器中的一个上操作以及基于web服务配置文档为一个或者多个web服务创建一个或者多个web服务产品;以及多个通用web服务运行时模块,其被配置用于在多个应用服务器中的一个上进行操作以及基于web服务配置文档来为一个或者多个web服务创建一个或者多个web服务产品。
在多个应用服务器上的通用web服务运行时模块还包括定义基于数据访问的web服务的冗余web服务产品,这些冗余web服务产品能够从存储在公共web服务管理元数据仓库中的web服务元数据导出。在某些实施方式中,多个应用服务器包括异类平台。应用服务器还可以包括多个运行时控制器和通用web服务运行时模块,其中运行时控制器拥有相关的唯一通用web服务运行时模块。
贯穿于本说明书中对特征、有益效果或类似语言的参考并非暗示那些可以利用本发明中实现的所有特征和有益效果应该或已经存在于本发明的任何单个实施方式中。相反,涉及特征和有益效果的语言应理解为:结合实施方式所描述的特定特征、有益效果或特点包括在本发明的至少一种实施方式中。因此,贯穿于本说明书的特征和有益效果的讨论以及类似语言可以但不必需涉及相同的实施方式。
此外,所讨论的本发明特征、有益效果和特点可以以任何适当的方式合并到一种或者多种实施方式中。本领域技术人员将认识到可以在没有具体实施方式的一个或者多个特定特征或有益效果的情况下实施本发明。另外,可以认识到某些实施方式中的额外的特征和有益效果,其可能并未在本发明的所有实施方式中给出。
这些本发明的特征和有益效果将通过随后的描述和所附权利要求来更全面地呈现,或者通过如下文所述实施本发明来了解这些特征和有益效果。
附图说明
为了容易理解本发明的有益效果,将通过引用示出在附图中的特定实施方式来呈现上文简短描述的本发明的更具体说明。应当理解的是,这些附图仅仅描述了本发明的典型实施方式,但不能因此认为附图限制了本发明的范围,而是,本发明将通过使用附图、利用附加的特性和细节得以描述和解译,其中:
图1是示出了根据本发明的web服务系统一种实施方式的示意性框图;
图2是示出了根据本发明的数据库和web服务元数据工具一种实施方式的示意性框图;
图3是示出了根据本发明的应用服务器一种实施方式的示意性框图;
图4是示出了根据本发明的、包括多个应用服务器和多个数据库的web服务系统一种实施方式的示意性框图;
图5是示出了根据本发明的、用于部署通用web服务运行时模块的方法的一种实施方式的示意性流程图;
图6是示出了根据本发明的、用于创建web服务的方法的一种实施方式的示意性流程图;以及
图7是示出了根据本发明的、用于处理web服务请求的一种实施方式的示意性流程图。
具体实施方式
很多在本说明书中描述的功能单元被标记为模块,以便特别强调它们的实现独立性。例如,模块可以由硬件电路来实现,包括定制VLSI电路或门阵列、成品半导体(诸如,逻辑芯片)、晶体管或其他离散组件。模块还可以由可编程硬件器件来实现,诸如处理器和存储器器件、现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等等。
模块还可以由供各种类型处理器执行的软件来实现。可执行代码的已标识模块例如可以包括一个或者多个计算机指令物理块或计算机指令逻辑块,其例如可以作为对象、过程或函数进行组织。然而,已标识模块的可执行性并不需要物理地放在一起,而是可以包括存储在不同位置的全异指令,当在逻辑上连接在一起时,这些指令会包括该模块,并且实现该模块被宣称的用途。
事实上,可执行代码的模块可以是单个指令,或者很多指令,甚至可以分布于若干不同代码行、在不同程序中以及跨越若干存储器器件。类似地,可以在此处的模块中标识和示出操作数据,并且这些操作数据可具体化为任何适当的形式,以及组织在任何适当类型的数据结构中。操作数据可收集成单个数据集合,或者可分布于不同位置(包括分布于不同存储设备)。
贯穿于本说明书的针对“一种实施方式”、“实施方式”或类似语言的引用意思是:结合实施方式描述的具体功能、结构或者特征包含在本发明的至少一种实施方式中。因此,贯穿本于本说明书的词组“在一种实施方式中”、“在实施方式中”以及类似语言的出现可以但不必须都涉及同一实施方式。
此外,在一个或者多个实施方式中,所描述的本发明功能、结构或特征可以以任何适当的方式进行组合。在随后的描述中,将提供很多特定细节来彻底理解本发明的实施方式,诸如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件处理器和存储器、硬件芯片等等的例子。然而,相关领域技术人员将认识到:在不具有一个或者多个特定细节,或者具有其他方法、组件、材料等的情况下,本发明仍可以实施。在其他实例中,没有详细显示或描述公知结构、材料或操作,以避免使本发明的方面变得模糊。
图1是示出了根据本发明的web服务系统100一种实施方式的示意性框图。尽管在本申请中描述的实施方式具体地参考了web服务和web服务系统,但是本领域技术人员应当认识到本发明与所有网络协议相关。web服务系统100包括客户端160、应用服务器102和数据库130。web服务系统100允许客户端160访问与应用服务器102和数据库130相关的服务和资源,而不论每一方底层平台的固有兼容性。web服务系统100支持分布式计算,其中客户端160可以访问与数据库130相关的资源,如可用的web服务所定义的,而不用直接在数据库130上执行那些操作;相反,客户端160从应用服务器102请求可用操作,该应用服务器102执行与该请求相关的操作,并且将结果返回给客户端160。
尽管web服务系统100能够提供任意数量的web服务,但是本发明的重点在于基于数据访问的web服务。基于数据访问的web服务是其主要功能是用来在数据库130上执行数据库操作的web服务。这些操作可以包括添加、移除或编辑数据库130中的表和记录,以及访问已存储的过程。基于数据访问的web服务还可包括作为web服务一部分的其他操作。例如,基于数据访问的web服务可以对取回自数据库130的数据执行额外的操作,诸如,在返回结果以前,将一种货币形式转换为另一种货币形式。
应用服务器102是软件程序,其被配置用于执行和管理多个应用。应用向客户端计算机或设备递送应用服务。应用服务器102通常包括用以提供web服务的公知模块和中间件。在一种实施方式中,应用服务器102是IBM WebSphere应用服务器(IBM和WebSphere是国际商业机器公司的注册商标)。应用服务器102可以作为用以提供数据访问服务的面向服务的架构的一部分。
应用服务器102还支持web服务的动态部署。动态部署或“热部署”和“动态重加载”允许向应用服务器102添加组件或者编辑组件,而无需在这些改变生效以前停止和/或重启应用服务器102。动态部署也允许在不重启应用服务器102的情况下移除组件。在支持动态部署的应用服务器102中,web服务部署信息可添加到web服务引擎104(通常也称为SOAP引擎),或者从该引擎上移除web服务部署信息,而web服务引擎104将接受这些改变并且针对这些改变作出响应,而无需重启应用服务器102。
应用服务器102还包括web服务引擎104。web服务引擎104接收、解译并处理来自客户端160的web服务请求。web服务引擎104还打包web服务响应并将其发送至客户端160。存在各种各样的商业且开源的web服务引擎。在一种实施方式中,web服务引擎104是Apache Axis引擎。
在一种优选实施方式中,web服务引擎104是简单对象访问协议(SOAP)引擎,其能够接收和生成SOAP消息。W3C规范将SOAP定义为用于在分散的分布式环境中交换结构化信息的轻量级协议。SOAP消息包括三部分:封套,其定义用于描述消息内容以及如何处理消息的框架;编码规则,其给出应用定义的数据类型;以及约定,其代表远程过程调用和响应。web服务引擎104接收和翻译SOAP消息,并且还编制和发送SOAP消息。
根据本发明,应用服务器102还包括运行时控制器110。运行时控制器110管理通用web服务运行时模块120。运行时控制器110跟踪并且监视web服务管理元数据仓库140中的web服务元数据,并且确保web服务引擎104中的服务端点保持最新。运行时控制器110的此具体特征将结合图3和图6做出进一步讨论。
每个通用web服务运行时模块120具有相关的运行时控制器110。另外,运行时控制器110被配置用于同数据库130和web服务管理元数据仓库140通信。用户可以在应用服务器102上部署多个运行时控制器110和多个通用web服务运行时模块120,只要每个通用web服务运行时模块120拥有唯一的运行时控制器110即可。
根据本发明,应用服务器102还包括通用web服务运行时模块120。通用web服务运行时模块120用作基于数据访问的web服务的操作环境。通用web服务运行时模块120根据存储在web服务管理元数据仓库140中的web服务元数据来创建基于数据访问的web服务。响应于web服务请求,这些基于数据访问的web服务从基于数据访问的web服务数据仓库150取回数据。通用web服务运行时模块120提供一个或者多个可执行的计算机指令,这些指令将使得每个基于数据访问的web服务能够满足web服务请求并且生成适当的web服务响应。如上文所提到的,基于数据访问的web服务是主要功能用来在数据库130上执行数据库操作的web服务。这些操作可以包括添加、移除或编辑数据库130中的表和记录,以及访问已存储的过程。基于数据访问的web服务也可以结合这些数据库操作来进行额外的操作或动作。
通用web服务运行时模块120使用web服务引擎104来接收web服务请求并针对该web服务请求作出响应。在一种实施方式中,通用web服务运行时模块120还发布web服务语言描述文档(WSDL),其包含了web服务的描述,包括相关web服务的方法、参数和输出,供客户端160中的调用者使用以执行该web服务。WSDL是服务请求者与服务提供者之间的契约。通用web服务运行时模块120的功能将结合图3和图6做出详细讨论。
web服务系统100还包括客户端160。客户端160代表向应用服务器102请求web服务的实体。客户端160按照SOAP协议并根据WSDL文件给出的的描述来发送请求。
web服务系统100还包括数据库130。数据库130包括结构化的数据集合和数据库管理系统(DBMS)(诸如,DB2(DB2是国际商业机器公司的注册商标)系统或本领域技术人员所公知的其他系统)。数据库130包括web服务管理元数据仓库140和基于数据访问的web服务数据仓库150。
在一种实施方式中,web服务管理元数据仓库140包括包含了web服务元数据的记录的表,该web服务元数据指定了web服务的行为和结构。尽管在本申请中使用术语“元数据”,但是本领域技术人员将认识到,元数据仅是用于提供所需控制数据的一种方式,其中这些控制数据是指定本发明的操作所必需的。web服务元数据的内容以及创建web服务元数据将结合图2做出更详细讨论。而web服务管理元数据仓库140的配置将结合图5做出更详细讨论。通用web服务运行时模块120基于存储在web服务管理元数据仓库140中的web服务元数据来定义基于数据访问的web服务。
数据库130还包括基于数据访问的web服务数据仓库150。基于数据访问的web服务数据仓库150包括作为基于数据访问的web服务的主题并且对于该基于数据访问的web服务可用的数据。例如,公司员工记录可以包括基于数据访问的web服务数据仓库150的一部分。这样,该信息可以用作适当web服务的主题。
本领域技术人员将认识到,web服务系统100仅仅是很多可能配置中的一种。例如,web服务管理元数据仓库140和基于数据访问的web服务数据仓库150不需要位于同一数据库130,只要去往存储的连接信息被适当地提供给运行时控制器110和通用web服务运行时模块120即可。此外,web服务系统100可以包括多个应用服务器102。这些服务器可以类似地包括运行时控制器110和通用web服务运行时模块120,它们也同数据库130连接。对于运行时控制器110和通用web服务运行时模块120没有数量上的限制,这可以与数据库130和相关数据仓库有关。web服务系统100的备选配置将结合图4做出更详细讨论。
图2是示出了根据本发明的、数据库130和web服务元数据工具210的一种实施方式的示意性框图。数据库130包括web服务管理元数据仓库140和基于数据访问的web服务数据仓库150。如上文所讨论的,web服务管理元数据仓库140包括web服务元数据220,其以通用服务运行时模块120和运行时控制器110可访问的格式来描述web服务。web服务元数据220描述由用户200定义的基于数据访问的web服务。通用web服务运行时模块120使用web服务元数据220来创建符合用户200的定义的web服务。web服务元数据220的内容将在下文进一步详细描述。
基于数据访问的web服务数据仓库150包含web服务将要对其进行访问并在其上执行操作的“原始”数据。这个基于数据访问的web服务数据仓库150包括在关系型数据库的表和行中组织的数据或者分层级数据库中的数据。另外,基于数据访问的web服务数据仓库150可以包括已存储的过程。在一种实施方式中,基于数据访问的web服务数据仓库150包括存储在数据库130中的记录。如上文所提到的,基于数据访问的web服务数据仓库150可以包括任何可由通用web服务运行时模块120访问的已存储信息。
web服务元数据工具210是用户200用来向web服务管理元数据仓库140输入web服务元数据220的一种方法。虽然用户200可以手动地将web服务元数据220插入web服务管理元数据仓库140,但是在优选实施方式中,web服务元数据工具210将提供此功能。web服务元数据工具210提供了这样的工具:其允许用户200容易地指定基于数据访问的web服务的操作,以及根据该用户指定,生成以通用web服务运行时模块120能够理解的方式对服务进行描述的web服务元数据220。web服务元数据工具210还向用户200提供数据库侧的接口,用户200通过该接口可以启动、停止或以其他方式管理已定义的基于数据访问的web服务的日常操作。为了使得这些功能易于使用,web服务元数据工具210还包括编辑器模块212和管理模块214。根据本发明,编辑器模块212允许用户200创建新的基于数据访问的web服务、编辑已有的基于数据访问的web服务或者移除可用的基于数据访问的web服务。
管理模块214允许用户200执行与基于数据访问的web服务相关的管理功能。例如,管理模块214可以允许用户200禁用特定的基于数据访问的web服务,而不影响通过通用web服务运行时模块120可用的其他基于数据访问的web服务。另外,管理模块214可以允许用户200创建时间表,其指定基于数据访问的web服务可用的时间或者离线的时间,从而使得针对在其执行期间对基于数据访问的web服务数据仓库150进行的访问要被中止的其他数据管理任务(诸如,备份过程),对基于数据访问的web服务的访问进行协调更加容易。
在所述实施方式中,用户200是数据库管理员或者根据数据库130开发基于数据访问的web服务的其他个人。用户200通过操作web服务元数据工具210来创建基于数据访问的web服务。web服务元数据工具210可以包括软件,其是诸如IBM DB2的DBMS的一部分、插件,或者允许与数据库130中的数据进行通信并对其进行操作的其他配置。
在一种实施方式中,web服务元数据工具210首先在数据库130上执行资源发现功能。该资源发现功能确定数据库130中的什么数据可以由诸如SQL语句的数据库操作来访问。web服务元数据工具210将此发现的可访问数据作为可用作web服务一部分的数据暴露给用户200。
尽管本说明书频繁参考作为相关数据库操作的SQL语句,但是本领域技术人员将认识到,SQL并非用于执行数据库操作的唯一语言或方法。用户可以使用诸如XQuery的其他语言来进行特定操作。贯穿于本说明书中所有针对SQL语句的引用都可以被替换为对XQuery语句的引用或对用于执行数据库操作的其他方法的引用。SQL语句的使用仅仅是很多可能实施方式中的一种。
用户200提供web服务名称,并且可以从作为基于数据访问的web服务数据仓库150一部分的所发现数据中选择将什么并入所命名的基于数据访问的web服务中。用户200还可以指定该基于数据访问的web服务将期望接收什么参数,以及在所选数据上进行所期待的操作时,什么SQL代码是必需的。另外,用户200可以指定执行SQL语句以前或者以后必须进行的其他操作。用户200也可以指定在未找到所请求的数据或在执行web服务的过程中发生了某些其他错误的情况下,基于数据访问的web服务将向该用户返回什么。
例如,用户200可以创建称为“getFiveYearAverage(取得五年平均值)”的基于数据访问的web服务,其将员工ID号作为参数,并且将返回该员工在过去五年间的平均薪水。在这个具体示例中,基于数据访问的web服务数据仓库150中没有平均薪水域;然而,由web服务元数据工具210进行的资源发现功能指示域“EmplSalary(员工薪水)”是可用的。用户200使用web服务元数据工具210选择用于基于数据访问的web服务的“EmplID(员工ID)”域和“EmplSalary”域,以及生成提取到现在日期为止过去五年中与该员工ID相关的薪水值所必需的SQL代码。然后,用户200还可以编写基于所提取的五个薪水值来计算平均薪水并编写返回计算结果的额外代码。用户200还可以指定如果五年的薪水中的任何一个无法提取的话,则返回负1。
web服务元数据工具210可以通过本领域技术人员熟知的很多方法来提供上述功能性;web服务元数据工具210可以包括图形用户界面(GUI),用户200可以通过该界面选择web服务的域和操作,或者以其他方式提供用于从用户接收相关数据和操作的标识的方法。
web服务元数据工具210从用户200取得输入并创建web服务元数据220。web服务元数据220描述web服务的操作,并提供通用web服务运行时模块120创建web服务所必需的信息。然而,web服务元数据220本身并不是可单独作为web服务的程序;相反地,web服务元数据220是针对web服务的行为和操作的描述。web服务元数据220存储在数据库130中的web服务管理元数据仓库140中。web服务元数据工具210所创建的web服务元数据220的一种实施方式在图2中示出。web服务元数据220包括web服务名称(WS名称)240、web服务配置文档250、web服务描述语言文档(WSDL)260、状态270和时间戳280。
web服务名称240包括web服务管理元数据仓库140中的web服务记录的标识符。在一种实施方式中,web服务名称240构成用于表的键。web服务名称240可以由用户200通过web服务元数据工具210提供,以作为web服务创建过程的一部分,或者web服务名称240可以由web服务元数据工具210生成。
web服务配置文档250是以通用web服务运行时模块120可以解译的格式对web服务的方法、操作和主题进行描述的文档。对根据本发明的web服务配置文档250的解译将结合图3和图6更详细地给出。
web服务配置文档250包括与以下有关的信息:web服务名称、操作,以及数据库130中与该web服务相关的域。web服务配置文档250还包括作为web服务的一部分进行的可执行数据库操作。
在一种实施方式中,web服务配置文档250是XML文档,并且SQL语句被指定为数据库操作。例如,提供添加员工记录、移除员工记录、取得员工记录和更新员工记录的操作的web服务可以具有相应web服务配置文档,如下:
<?xml version=″1.0″encoding=″UTF-8″?>
   <dsc:config xmins:dsc=″http://ibm.com/datatools/dsws/config″buildNumber=″2007/04/23
09:49:53:109 PDT″dbType=″JDBC″rest Binding=″true″
serviceName=″EmployeeManagementService″soapBinding=″true″
targetNamespace=″urn:example″xmlns:tns=″urn:example″>
<dsc:operations>
  <dsc:update operationName=″addEmployee″>
   <dsc:statement>
    <![CDATA[INSERT INTO EMPLOYEE values(:empno,:firstname,:midinit,
     :lastname,:workdept,:phoneno,:hiredate,:job,:edlevel,:sex,:birthdate,:salary,
     :bonus,:comm)]]>
 </dsc:statement>
</dsc:update>
  <dsc:update operationName=″removeEmployee″>
   <dsc:statement>
     <![CDATA[DELETE from EMPLOYEE where empno=:empno]]>
   </dsc:statement>
</dsc:update>
  <dsc:query operationName=″getEmployee″>
   <dsc:statement>
      <![CDATA[SELECT*from Employee]]>
  </dsc:statement>
</dsc:query>
  <dsc:update operationName=″updateEmployee″>
   <dsc:statement>
     <![CDATA[update employee set(empno,firstnme,midinit,lastname,workdept,
      phoneno,hiredate,job,edlevel,sex,birthdate,salary,bonus,comm)=(:empno,
      :firstname,:midinit,:lastname,:workdept,:phoneno,:hiredate,:job,:edlevel,:sex,
      :birthdate,:salary,:bonus,:comm)where empno=:empno]]>
   </dsc:statement>
 </dsc:update>
</dsc:operations>
</dsc:config>
WSDL 260是提供了用于描述web服务的模型的web服务描述语言文档。WSDL提供了web服务的基于XML的描述,以及通过定义针对web服务的公共接口、向客户端通知这些功能可用以及向客户端通知与该web服务相关的特定数据类型来提供如何与web服务通信的描述。WSDL 260提供了客户端与所描述web服务交互所需的信息。
在一种实施方式中,还可以响应于用户200提供了对基于数据访问的web服务进行定义的参数,而由web服务元数据工具210来创建WSDL 260。WSDL文档的结构和功能是本领域技术人员公知的。本领域技术人员可以创建工具模块,以使得根据WSDL文件得以根据用户指定的、用于web服务的操作和参数的集合被创建。作为示例,结合上文的示例配置文件生成的WSDL将在附录A中给出。本领域技术人员将认识到,附录A中的WSDL提供了web服务可能的客户端,其中的web服务是由具有使用web服务所需信息的上述配置文件定义的,该信息包括所提供操作的名称和参数。
在一种实施方式中,web服务元数据220还包括状态270。状态270域存储了与web服务名称240相关的web服务的操作状态。在一种实施方式中,状态270可以在相应的基于数据访问的web服务可用时设定为“活跃”,而在该基于数据访问的web服务被禁用或以其他方式不可用时设定为“不活跃”。备选地,web服务元数据220的表中行的存在可以表示:基于数据访问的web服务是活跃的;而行的移除可以表示:基于数据访问的web服务是不活跃的。
在一种实施方式中,web服务管理元数据仓库140还包括与基于数据访问的web服务相关的时间戳280。时间戳提供了可以用于确定是否改变了基于数据访问的web服务或者何时改变了基于数据访问的web服务的记号。创建新的基于数据访问的web服务、编辑已有基于数据访问的web服务,或者移除或去激活基于数据访问的web服务,以及改变web服务元数据220的状态或其他组件会引起web服务元数据工具210创建新的时间戳280。优选地,这些改变由与DBMS进行排他性交互的用户做出的。
web服务元数据工具210还可以包括编辑器模块212,用于在web服务管理元数据仓库140中对基于数据访问的web服务做出改变。用户200操作编辑器模块212来编辑或者移除基于数据访问的web服务。在一种实施方式中,当用户200编辑已有的基于数据访问的web服务时,web服务元数据工具210将在web服务管理元数据仓库140中重写受到编辑影响的条目。web服务元数据工具210还为web服务创建新的时间戳280。如果用户200移除基于数据访问的web服务,则web服务元数据工具210可以从web服务管理元数据仓库140中完全移除对基于数据访问的web服务进行定义的元数据。
web服务元数据工具210还包括管理模块214,其允许用户200对来自数据库130的基于数据访问的web服务的操作进行管理,而不是由应用服务器102来管理。用户200使用管理模块214来启动或停止基于数据访问的web服务。在一种实施方式中,管理模块214通过将web服务的状态270改变为“活跃”或者“不活跃”来启动或停止服务。备选地,添加或移除对基于数据访问的web服务进行定义的元数据会影响该基于数据访问的web服务是被激活还是被去激活。运行时控制器110将检测此改变,并按照所指示的来动态地启动或者停止基于数据访问的web服务。
这允许用户200容易地控制通过基于数据访问的web服务对数据库130进行的访问。用户200可以容易地中止基于数据访问的web服务针对数据库的访问,以便进行数据库维护或者其他任务。在一种实施方式中,web服务元数据工具210还可以允许用户200创建对基于数据访问的web服务的可用性进行定义的时间表。
本领域技术人员将认识到,web服务元数据220可以更复杂,以及为了向用户200提供额外的工具和功能,可以包括比在此示出的域更多的域。额外的工具和域可以支持更高级的功能,诸如针对基于数据访问的web服务进行版本控制。
此外,本领域的技术人员将认识到,实施本发明并非必需使用web服务元数据工具210;用户200例如可以使用SQL语句,将用于定义和操作基于数据访问的web服务所必需的信息直接存储到web服务管理元数据仓库140中。
在这样的实施方式中,用户200将需要适当地创建和定义有关的web服务元数据220,诸如web服务名称240、web服务配置文档250、WSDL 260、状态270以及时间戳280,以便使本发明正确地起作用。这样,web服务元数据工具210创建了一种抽象,其将用户200和根据本发明的用于创建适当定义的元数据的机制隔离开,从而简化了创建所需web服务元数据220的过程。
图3是示出了根据本发明的应用服务器102一种实施方式的示意性框图。在所描述的实施方式中,应用服务器102包括web服务引擎104、运行时控制器110和通用web服务运行时模块120。图3还示出了包括web服务管理元数据仓库140和基于数据访问的web服务数据仓库150的数据库130。
如上文结合图1所讨论的,运行时控制器110还包括管理模块310、同步模块312和端点接口同步模块314。管理模块310为应用服务器102上的用户提供了用于通用web服务运行时模块120的管理工具。
例如,应用服务器用户可以使用管理模块310以在应用服务器102上启动或者停止通用web服务运行时模块120的操作。此外,管理模块310允许用户部署并配置通用web服务运行时模块120。管理模块310还利用由应用服务器102上的工具所提供的web服务功能,从而允许用户为通用web服务运行时模块120配置连接和安全设定。例如,管理模块310可以使用应用服务器工具来允许用户设立与通用web服务运行时模块120相关的ID和密码。
同步模块312确保由通用web服务运行时模块120暴露的、基于数据访问的web服务与定义在web服务管理元数据仓库140中的那些基于数据访问的web服务相一致。在一种实施方式中,同步模块312以定期时间间隔轮询web服务管理元数据仓库140,以确定正在使用的基于数据访问的web服务定义是否是最新的。在这样的实施方式中,同步模块312可以包括包含有web服务名称240和时间戳280的数据结构,其未在图3中示出。在定期时间间隔处,同步模块312轮询web服务管理元数据仓库140,并且为所列出的web服务名称240提取时间戳280。同步模块312然后将所提取的信息与保留在同步模块数据结构中的信息进行比较。如果针对特定web服务名称240时间戳280不匹配,则web服务管理元数据仓库140将具有改变的定义,而同步模块312将指示通用web服务运行时模块120对操作于应用服务器102上的相关基于数据访问的web服务进行更新。
如果web服务名称240和时间戳280存在于web服务管理元数据仓库140中,而不存在数据结构中,则同步模块312指示通用web服务运行时模块120对操作于应用服务器102上的基于数据访问的web服务进行创建和启动。如果数据结构包括web服务名称240但是在web服务管理元数据仓库140中没有找到相同的web服务名称240,则同步模块312指示通用web服务运行时模块120中断操作于应用服务器102上的基于数据访问的web服务。
在一种备选实施方式中,同步模块312可以基于轮询间隔来确定web服务管理元数据仓库140是否发生改变。例如,如果轮询时间间隔设定为五分钟,则同步模块312可以通过确定在过去的五分钟中内是否有时间戳280改变了,来确定通用web服务运行时模块120是否需要更新基于数据访问的web服务。因此,在这样的实施方式中,可以不需要状态域270。本领域技术人员将认识到,存在用于同步数据和保证一致性的很多方法,包括通知配置。本发明的实施方式将不局限于或者依赖于任何特定的同步方法。
端点接口同步模块314确保web服务引擎104具有允许对基于数据访问的web服务进行访问所需的最新端点接口定义。web服务端点接口指定了应用服务器上、与该特定web服务端点接口相关的web服务产品338在其处进行定义的位置。当产品模块336为基于数据访问的web服务创建端点接口时,产品模块336会通知端点接口同步模块314,其将该端点接口和相关的基于数据访问的web服务的标识符提供给web服务引擎104。
通用web服务运行时模块120还包括定义模块334、验证模块332、WSDL发布模块330、产品模块336和web服务产品338a-b。当运行时控制器110确定需要对操作于应用服务器102上的基于数据访问的web服务进行更新时,将调用定义模块334。如果已经添加或编辑了基于数据访问的web服务,那么定义模块334将从web服务管理元数据仓库140取回与基于数据访问的web服务相关的web服务配置文档250。如果已经移除了基于数据访问的web服务,那么定义模块334将销毁与所移除web服务相对应的web服务产品338,并且向端点接口同步模块314表明该web服务端点接口不再有效以及应当将其从web服务引擎104中移除。
验证模块332接收来自定义模块334的web服务配置文档250。验证模块332还包括web服务配置方案(schema)333。web服务配置方案333将布置web服务配置文档250的可接受的结构,从而指定通用web服务运行时模块120可以处理的web服务配置文档250的结构。在一种实施方式中,web服务配置方案333是XML方案文件。
验证模块332使用web服务配置方案333来确定web服务配置文档250是否是相容的文件。基于方案来验证文档的方法和工具对于本领域技术人员而言是公知的。在一种实施方式中,如果web服务配置文档250不遵守web服务配置方案333,则验证模块332将向创建并管理基于数据访问的web服务的数据库用户200提供消息,该消息指示特定的web服务不能创建以及指示遇到了什么问题。
WSDL发布模块330使得WSDL对于基于数据访问的web服务客户端而言可用。WSDL发布模块330从web服务管理元数据仓库140取回与已验证的web服务相关的WSDL 260。在一种实施方式中,WSDL发布模块330通过诸如通用发现与发布规范(UDDI)注册的服务代理使得WSDL 260可用。WSDL发布模块330使得协议绑定和与web服务交互所需的消息格式(如WSDL 260所描述的那样)可被使用。
如果web服务配置文档250遵守了web服务配置方案333,则产品模块336将从验证模块332接收web服务配置文档250。产品模块336对web服务配置文档250进行解译,并根据web服务配置文档250所给出的规范来创建web服务产品338。产品模块336还创建用于web服务产品338的合适端点接口,以及向端点接口同步模块314提供用于基于数据访问的web服务的端点接口。
web服务产品338,也称为web服务运行时产品,包括响应于来自基于数据访问的web服务的请求来进行数据库操作(由web服务配置文档250规定)的可执行代码。web服务产品338还可以包括在执行数据库操作以前或者以后进行的额外操作。web服务产品338执行必需的数据库操作,以及其他的相关操作,它们组成了基于数据访问的web服务。在一种实施方式中,这些数据库操作是SQL块339表示的SQL语句。本领域技术人员将认识到,其他语言或语句也可以用来执行在web服务配置文档250中定义的数据库操作。web服务产品338从web服务引擎104中的请求处理器模块320接收服务请求和与该请求相关的参数。web服务产品338为了响应该请求而使用所提供的参数来执行代码,并将操作的结果返回给请求处理器模块320。
例如,如上文示例web服务配置文档250所示,web服务产品338可以接收操作名称为“addEmployee(添加员工)”的web服务请求。有效请求还包括参数empno(员工号)、firstname(名)、midinit和其他上文结合“addEmployee”操作示出的参数。然后,web服务产品338a执行与操作相关的SQL语句,以使得可将员工添加到数据库130中的基于数据访问的web服务数据仓库150中。尽管此特定操作没有将来自于基于数据访问的web服务数据仓库150的信息返回给请求该web服务的客户端,不过web服务产品338可以向请求处理器模块320返回成功更新的标志或指示符。
如图3中描述的,通用web服务运行时模块120可以包括多个web服务产品338a-b。通用web服务运行时模块120中web服务产品338的数量与定义在web服务管理元数据仓库140中的基于数据访问的web服务的数量相对应。例如,如果在web服务管理元数据仓库140中定义有十个不同的基于数据访问的web服务,则通用web服务运行时模块120中将具有十个不同的web服务产品338来表示不同的可用web服务。然而,本领域技术人员将认识到,可以配置web服务产品338a-b,以使得其他基于数据访问的web服务能够使用它们;例如,除其他操作以外,基于数据访问的web服务还可以要求由web服务产品338a-b来执行数据库操作;新的基于数据访问的web服务可以利用web服务产品338a-b来执行他们提供的操作,而不是复制那些相同的操作。这样的配置可以用来减少web服务产品之间的冗余。
优选实施方式向web服务的热部署中添加额外的元素;通常,热部署涉及在不需要组件(诸如,web服务)生效之前对应用服务器102进行重启的情况下,向应用服务器102添加组件或对其进行编辑的能力。优选实施方式通过允许用户创建、改变和管理基于数据访问的web服务而无需重启通用web服务运行时模块120,对热部署的概念进行了扩展。用户200因此可以定义、管理和部署基于数据访问的web服务,而无需在那些服务可用以前重启应用服务器102或者通用web服务运行时模块120。这样,优选实施方式允许用户200从数据库侧进行基于数据访问的web服务任务,而无需针对主控了该基于数据访问的web服务的应用服务器102做出任何手动改动。
web服务引擎104包括由应用服务器102提供的、用于管理和处理web服务请求的核心功能。web服务引擎104接收web服务请求并且发送web服务响应。web服务引擎104维护关于可用web服务的配置数据集合(未示出),以使得web服务引擎104知晓如何处理特定web服务请求。此配置数据包括与应用服务器102上可用的web服务产品相关的端点接口定义。运行时控制器110的端点接口同步模块314更新与web服务产品338相关的端点接口定义,以及以其他方式确保配置数据与通用web服务运行时模块120中基于数据访问的web服务的当前状态同步。
如图1中所描述的,当客户端160向应用服务器102发送web服务请求时,web服务引擎104接收该请求。web服务引擎104中的请求处理器模块320将解包SOAP web服务请求,以及从该请求中提取操作和参数。如果所请求的服务不存在,那么请求处理器模块320将利用指示服务未找到的错误进行响应。否则,请求处理器模块确定应用服务器102上的合适web服务,以及向其提供参数以使得该web服务能够执行。
如果所请求的web服务定义在web服务管理元数据仓库140中的基于数据访问的web服务,那么请求处理器模块320使用其配置数据中的端点接口信息来向与该web服务有关的web服务产品338转发参数。web服务产品338从请求处理器模块320接收参数并且在基于数据访问的web服务数据仓库150上执行SQL块338中的SQL语句。web服务产品338还执行作为基于数据访问的web服务一部分的任何其他指令。web服务产品338向web服务引擎320中的请求处理器模块320返回操作结果。然后请求处理器模块320构造用于响应的SOAP封套,以及可以进行额外的数据操作,诸如提供用于安全目的的加密。一旦请求处理器模块320完成了预响应处理,那么请求处理器模块320将向请求客户端160返回SOAP响应。
图4是示出了包括多个应用服务器402、420和多个数据库430、432的web服务系统400的一种实施方式的示意性框图。应用服务402包括web服务引擎404、运行时控制器406和通用web服务运行时模块408。图4描述了与数据库430和数据库432电子通信的应用服务器402,其中的数据库430包括web服务管理元数据仓库440,而数据库432则包括了基于数据访问的web服务数据仓库450。
图4示出了数据仓库440和450可以是物理上分离的储存库。在基于数据访问的web服务数据仓库450位于多个物理单元上时,额外的配置是可能的。web服务管理元数据仓库440还可以由基于数据访问的web服务数据仓库450的子集实现;对于创建允许通用web服务运行时模块408来“引导”的基于数据访问的web服务而言,这样的配置例如是有用的;也就是说,用户可以开发基于数据访问的web服务以管理和配置web服务管理元数据仓库440本身,其作为基于数据访问的web服务数据仓库450的一部分。在这样一种实施方式中,web服务元数据工具210本身可以是通用web服务运行时模块408所提供的web服务。
应用服务器402和420与位于数据库430和432上的数据仓库440和450之间的通信对于web服务系统400的适当操作而言是至关重要的。应用服务器420包括web服务引擎422、运行时控制器424a-b和通用web服务运行时模块426a-b。每个通用web服务运行时模块426a-b具有一个相关的运行时控制器424a-b。对每个运行时控制器424a-b和每个通用web服务运行时模块426a-b进行配置来与web服务管理元数据仓库440和基于数据访问的web服务数据仓库450进行通信。此外,每个运行时控制器424a-b在web服务引擎422中帮助维护精确配置数据。运行时控制器424a-b管理与相关于其各自通用web服务运行时模块426a-b的基于数据访问的web服务有关的配置数据。
其结果是,个人可以根据本发明的某些实施方式简单地从数据库维护基于数据访问的web服务,甚至在应用服务器和数据库间存在N对N的关系时也是如此。例如,如图2中所描述的,数据库管理员可以在web服务管理元数据仓库440中创建新的基于数据访问的web服务定义。如结合图3所描述的,当运行时控制器406、424a和424b检测到新的web服务定义时,每个运行时控制器会指示各自的通用web服务运行时模块408、426a和426b来创建基于数据访问的web服务。如图3中所讨论的,运行时控制器406、424a和424b还向web服务引擎422和404提供使能这些web服务的激活的信息。
用这种方式管理和创建基于数据访问的web服务提供了很多有益效果;可以通过提供该服务的多个实施方式来简单地部署具有高可用性的web服务。用户可以通过数据库侧的单个操作来部署特定基于数据访问的web服务的多个复制。此外,本发明简化了对分布在多个应用服务器上的基于数据访问的web服务的维护;如上所述,可以通过数据库中的单个操作在各种应用服务器上做出改变。另外,本领域技术人员将认识到,即使在应用服务器不是相同类型的情况下,这也是事实;因此,单个操作可以跨越WebLogic服务器、WebSphere服务器和Oracle OC4J服务器来同时更新或部署基于数据访问的web服务,而不要求用户解决应用服务器平台中的差异。这些不同在将本发明实施方式部署到不同平台上时已得到处理;一旦运行时控制器406、424a和424b和通用web服务运行时模块408、426a和426b已经就位,它们将使用web服务元数据来在它们的特定应用服务器402和420平台上创建基于数据访问的web服务。
遵从的示意性流程图通常作为逻辑流程图给出。这样,所描述的顺序和标记的步骤是所给出方法的一个实施方式的指示。可以想到其他的步骤和方法,其在所示出方法的功能、逻辑、一个或多个步骤的效果或者部分步骤的效果这方面是等价的。此外,提供所使用的格式和符号是为了解译方法的逻辑步骤,其不能理解为对方法范围的限制。虽然流程图中使用了各种箭头类型和线类型,但不能将它们理解为对对应方法范围的限制。事实上,一些箭头或其他连接符可以用来仅指示方法的逻辑流程。例如,箭头可以指示在所描述方法的所列举步骤之间等待或者监视一段未指定长度的时间。此外,具体方法发生的顺序可以严格遵守所示出的对应步骤的顺序,也可以不遵守。
图5是示出了根据本发明的、用于部署通用web服务运行时模块的方法的一种实施方式的示意性流程图。通用web服务运行时模块120的部署以及结合图5描述的相关动作组成了在实施根据本发明的对基于数据访问的web服务进行管理以前所必需的一次性动作。用户200在数据库130上设立502web服务管理元数据仓库140。用户200例如可以发出CREATE TABLE语句来设立web服务管理元数据仓库140,以及适当地定义域和结构。在一种实施方式中,CREATE TABLE(创建表)语句可以如下:
CREATE TABLE services(name VARCHAR(50)NOT NULL,config XML NOT NULL,wsdl XML,lastModified TIMESTAMP,PRIMARY KEY(name))CREATE TABLE servicesXSLTScripts(serviceName VARCHAR(50)NOT NULL,xslXML NOT NULL,fileName VARCHAR(255)NOT NULL,CONSTRAINTFK_SERVICES FOREIGN KEY(serviceName)REFERENCES services(name)ONDELETE CASCADE);
本领域技术人员将认识到,所发出的精确语句可以变化,而且其将依赖于该用户希望保持在web服务管理元数据仓库140中的信息。
可以访问应用服务器102并且在其上有适当权限的用户将配置504针对数据130的连接信息,以使得应用服务器102可以访问数据库130上的信息,从而允许运行时控制器110和通用web服务运行时模块120访问web服务管理元数据仓库140和基于数据访问的web服务数据仓库150。如上文结合图4所解译的,在web服务系统的某些实施方式中,用户必须为多个数据库配置连接信息。用户还在应用服务器102上部署506通用web服务运行时模块120和运行时控制器110。如上所述,部署这些模块还可以包括确保这些模块可以适当地访问来自web服务引擎104的呼叫,以及可以被来自web服务引擎104的呼叫访问,以实现本发明所需的协调。
应用服务器用户还设立508通用web服务运行时模块120必需的连接和安全设定。例如,应用服务器用户可以进行额外的微调,诸如,创建和设定用户ID和密码。一旦适当地部署和配置了通用web服务运行时模块120,用户200便可以根据本发明开始通过数据库130管理基于数据访问的web服务。
图6是示出了根据本发明的、用于创建web服务的方法的一种实施方式的示意性流程图。运行时控制器110使用同步模块312来检查602web服务管理元数据仓库140中的web服务管理元数据改变。同步模块312确定604元数据中是否发生改变;如果没有改变,则同步模块312将等待直到下一个轮询时间间隔为止,然后重复其确定604直到同步模块312检测到web服务管理元数据仓库140中发生改变为止。如果发生了改变,则同步模块312还确定606该改变是否是增加或修改基于数据访问的web服务,或者是移除。本领域技术人员将认识到,可能存在比列出的改变更多的改变;例如,改变可以仅仅是web服务状态270的改变,在这种情况下,所影响的web服务将基于该命令被去激活或者激活。虽然没有在示例中描述额外的动作,但是本发明权利要求范围不能限制于添加、修改或移除web服务。
如果web服务管理元数据仓库140中的改变指示应该修改已有web服务或者应该创建新的web服务,则定义模块334将取回608web服务配置文档250。然后,验证模块332针对web服务配置方案333验证610web服务配置文档250。产品模块336根据经过验证的web服务配置文档250来创建612web服务产品338。产品模块336还为web服务创建614web服务端点接口,以及端点接口同步模块314向web服务引擎104注册包括端点接口的更新过的配置信息。然后,新创建的或被修改的基于数据访问的web服务已准备好对web服务请求进行处理。
如果同步模块312确定606操作为删除操作,那么产品模块336将去激活616受影响的web服务产品338,以及还指示端点接口同步模块314来根据web服务引擎104中的配置信息去激活618web服务端点接口。在一种实施方式中,去激活web服务产品338和web服务端点接口仅仅等同于删除产品和接口。产品模块336利用应用服务器102的web服务的动态部署来中止和/或移除web服务产品338。有利的是,用户不需要与应用服务器102交互。
图7是示出了用于处理web服务请求的方法的一种实施方式的示意性流程图。客户端160向应用服务器102发送web服务请求。请求处理器模块320接收702请求。请求处理器模块320将请求解析704为操作和相关参数。请求处理器模块320确定706与web服务请求相关的web服务产品338。
请求处理器模块320向相关web服务产品338传递控制和任何参数,其中该web服务产品338以web服务的形式执行708基于数据访问的web服务。在一种实施方式中,执行数据操作可以包括执行SQL块339中的语句。当数据操作已经成功执行时,web服务产品338向请求处理器模块320传递任何结果。请求处理器模块320将返回710结果以作为web服务响应。返回请求以作为web服务响应还可以包括将响应编制在适当的SOAP封套(或其他松耦合的网络格式)中,以及进行任何额外的必需数据处理,诸如加密。
本发明可以以其他特定形式实施,而不离开本发明的主旨或实质特点。应认为所描述的实施方式在所有方面都仅是示意性的,而不是限制性的。因此,本发明的范围将由所附的权利要求指示,而不是由上文描述指示。所有处于权利要求等价物的含义和范围中的改变都将包括在权利要求的范围内。
附录A
<?xml version=″1.0″encoding=″UTF-8″?>
<wsdl:definitions xmlns:wsdl=″http://schemas.xmlsoap.org/wsdl/″
  xmlns:dsc=″http://ibm.com/datatools/dsws/config″
  xmlns:http=″http://schemas.xmlsoap.org/wsdl/http/″
  xmlns:mime=″http://schemas.xmlsoap.org/wsdl/mime/″
  xmlns:soap=″http://schemas.xmlsoap.org/wsdl/soap/″
  xmlns:tns=″urn:example″xmlns;xsd=″http://www.w3.org/2001/XMLSchema″
  targetNamespace=″urn:example″>
  <wsdl:types>
     <schema xmlns=″http://www.w3.org/2001/XMLSchema″
targetNamespace=″urn:example″>
<element name=″addEmployee″>
      <complexType>
           <sequence>
<element name=″empno″nillable=″true″    type=″xsd:string″/>
<element name=″firstname″nillable=″true″type=″xsd:string″/>
<element name=″midinit″nillable=″true″  type=″xsd:string″/>
<element name=″lastname″nillable=″true″ type=″xsd:string″/>
<element name=″workdept″nillable=″true″ type=″xsd:string″/>
<element name=″phoneno″nillable=″true″  type=″xsd:string″/>
<element name=″hiredate″nillable=″true″ type=″xsd:date″/>
<element name=″job″nillable=″true″      type=″xsd:string″/>
<element name=″edlevel″nillable=″true″  type=″xsd:short″/>
<element name=″sex″nillable=″true″      type=″xsd:string″/>
<element name=″birthdate″nillable=″true″type=″xsd:date″/>
<element name=″salary″nillable=″true″   type=″xsd:decimal″/>
<element name=″bonus″nillable=″true″    type=″xsd:decimal″/>
<element name=″comm″nillable=″true″     type=″xsd:decimal″/>
             </sequence>
      </complexType>
</element>
<element name=″addEmployeeResponse″>
      <complexType>
            <sequence>
                  <element name=″updateCount″type=″xsd:int″/>
            </sequence>
      </complexType>
</element>
<element name=″removeEmployee″>
   <complexType>
      <sequence>
       <element name=″empno″nillable=″true″type=″xsd:string″/>
             </sequence>
       </complexType>
</element>
<element name=″removeEmployeeResponse″>
      <complexType>
        <sequence>
          <element name=″updateCount″type=″xsd:int″/>
        </sequence>
     </complexType>
 </element>
<element name=″getEmployee″>
       <complexType/>
</element>
<element name=″getEmployeeResponse″>
      <complexType>
<sequence>
  <element maxOccurs=″unbounde d″minOccurs=″0″name=″row″>
     <complexType>
       <sequence>
         <element name=″EMPNO″type=″xsd:string″/>
         <element name=″FIRSTNME″type=″xsd:string″/>
         <element name=″MIDINIT″nillable=″true″
           type=″xsd:string″/>
         <element name=″LASTNAM E″type=″xsd:string″/>
         <element name=″WORKDEP T″nillable=″true″
           type=″xsd:string″/>
         <element name=″PHONENO″nillable=″true″
           type=″xsd:string″/>
         <element name=″HIREDATE″nillable=″true″
           type=″xsd:date″/>
         <element name=″JOB″nillable=″true″type=″xsd:string″/>
                      <element name=″EDLEVEL″type=″xsd:short″/>
                      <element name=″SEX″nillable=″true″type=″xsd:string″/>
                      <element name=″BIRTHDATE″nillable=″true″
                        type=″xsd:date″/>
                      <element name=″SALARY″   nillable=″true″
                        type=″xsd:decimal″/>
                      <element name=″BONUS″    nillable=″true″
                        type=″xsd:decimal″/>
                      <element name=″COMM″nillable=″true″
                        type=″xsd:decimal″/>
                  </sequence>
              </complexType>
            </element>
        </sequence>
      </complexType>
</element>
<element name=″updateEmployee″>
   <complexType>
      <sequence>
         <element name=″empno″nillable=″true″type=″xsd:string″/>
         <element name=″firstname″nillable=″true″    type=″xsd:string″/>
         <element name=″midinit″nillable=″true″      type=″xsd:string″/>
         <element name=″lastname″nillable=″true″     type=″xsd:string″/>
         <element name=″workdept″nillable=″true″     type=″xsd:string″/>
         <element name=″phoneno″nillable=″true″      type=″xsd:string″/>
         <element name=″hiredate″nillable=″true″     type=″xsd:date″/>
         <element name=″job″nillable=″true″          type=″xsd:string″/>
         <element name=″edlevel″nillable=″true″      type=″xsd:short″/>
         <element name=″sex″nillable=″true″          type=″xsd:string″/>
         <element name=″birthdate″nillable=″true″    type=″xsd:date″/>
         <element name=″salary″nillable=″true″       type=″xsd:decimal″/>
         <element name=″bonus″nillable=″true″        type=″xsd:decimal″/>
           <element name=″comm″nillable=″true″     type=″xsd:decimal″/>
        </sequence>
    </complexType>
 </element>
 <element name=″updateEmployeeResponse″>
    <complexType>
       <sequence>
         <element name=″updateCount″type=″xsd:int″/>
       </sequence>
    </complexType>
   </element>
  </schema>
</wsdl:types>
<wsdl:message name=″addEmployeeSoapInput″>
  <wsdl:part element=″tns:addEmployee″name=″request″/>
</wsdl:message>
<wsdl:message name=″addEmployeeSoapOutput″>
  <wsdl:part element=″tns:addEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″addEmployeeGetPostUrlInput″>
  <wsdl:part name=″empno″type=″xsd:string″/>
  <wsdl:part name=″firstname″type=″xsd:string″/>
  <wsdl:part name=″midinit″type=″xsd:string″/>
  <wsdl:part name=″lastname″type=″xsd:string″/>
  <wsdl:part name=″workdept″type=″xsd:string″/>
  <wsdl:part name=″phoneno″type=″xsd:string″/>
  <wsdl:part name=″hiredate″type=″xsd:date″/>
  <wsdl:part name=″job″type=″xsd:string″/>
  <wsdl:part name=″edlevel″type=″xsd:short″/>
  <wsdl:part name=″sex″type=″xsd:string″/>
  <wsdl:part name=″birthdate″type=″xsd:date″/>
  <wsdl:part name=″salary″type=″xsd:decimal″/>
  <wsdl:part name=″bonus″type=″xsd:decimal″/>
  <wsdl:part name=″comm″type=″xsd:decimal″/>
</wsdl:message>
<wsdl:message name=″addEmployeeGetPostOutput″>
  <wsdl:part element=″tns:addEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″removeEmployeeSoapInput″>
  <wsdl:part element=″tns:removeEmployee″name=″request″/>
</wsdl:message>
<wsdl:message name=″removeEmployeeSoapOutput″>
  <wsdl:part element=″tns:removeEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″removeEmployeeGetPostUrlInput″>
  <wsdl:part name=″empno″type=″xsd:string″/>
</wsdl:message>
<wsdl:message name=″removeEmployeeGetPostOutput″>
  <wsdl:part element=″tns:removeEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″getEmployeeSoapInput″>
  <wsdl:part element=″tns:getEmployee″name=″request″/>
</wsdl:message>
<wsdl:message name=″getEmployeeSoapOutput″>
  <wsdl:part element=″tns:getEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″getEmployeeGetPostUrlInput″/>
<wsdl:message name=″getEmployeeGetPostOutput″>
  <wsdl:part element=″tns:getEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″updateEmployeeSoapInput″>
  <wsdl:part element=″tns:updateEmployee″name=″request″/>
</wsdl:message>
<wsdl:message name=″updateEmployeeSoapOutput″>
   <wsdl:part element=″tns:updateEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:message name=″updateEmployeeGetPostUrlInput″>
   <wsdl:part name=″empno″type=″xsd:string″/>
   <wsdl:part name=″firstname″type=″xsd:string″/>
   <wsdl:part name=″midinit″type=″xsd:string″/>
   <wsdl:part name=″lastname″type=″xsd:string″/>
   <wsdl:part name=″workdept″type=″xsd:string″/>
   <wsdl:part name=″phoneno″type=″xsd:string″/>
   <wsdl:part name=″hiredate″type=″xsd:date″/>
   <wsdl:part name=″job″type=″xsd:string″/>
   <wsdl:part name=″edlevel″type=″xsd:short″/>
   <wsdl:part name=″sex″type=xsd:string″/>
   <wsdl:part name=″birthdate″type=″=xsd:date″/>
   <wsdl:part name=″salary″type=″xsd:decimal″/>
   <wsdl:part name=″bonus″type=″xsd:decimal″/>
   <wsdl:part name=″comm″type=″xsd:decimal″/>
</wsdl:message>
<wsdl:message name=″updateEmployeeGetPostOutput″>
   <wsdl:part element=″tns:updateEmployeeResponse″name=″response″/>
</wsdl:message>
<wsdl:portType name=″=EmployeeManagementService″>
   <wsdl:operation name=″addEmployee″>
      <wsdl:input message=″tns:addEmployeeSoapInput″/>
      <wsdl:output message=″tns:addEmployeeSoapOutput″/>
</wsdl:operation>
<wsdl:operation name=″removeEmployee″>
   <wsdl:input message=″tns:removeEmployeeSoapInput″/>
   <wsdl:output message=″tns:removeEmployeeSoapOutput″/>
</wsdl:operation>
<wsdl:operation name=″getEmployee″>
   <wsdl:input message=″tns:getEmployeeSoapInput″/>
      <wsdl:output message=″tns:getEmployeeSoapOutput″/>
</wsdl:operation>
<wsdl:operation name=″updateEmployee″>
      <wsdl:input message=″tns:updateEmployeeSoapInput″/>
      <wsdl:output message=″tns:updateEmployeeSoapOutput″/>
  </wsdl:operation>
</wsdl:portType>
<wsdl:portType name=″EmployeeManagementServiceGetPostUrl″>
  <wsdl:operation name=″addEmployee″>
     <wsdl:input message=″tns:addEmployeeGetPostUrlInput″/>
     <wsdl:output message=″tns:addEmployeeGetPostOutput″/>
</wsdl:operation>
<wsdl:operation name=″removeEmployee″>
     <wsdl:input message=″tns:removeEmployeeGetPostUrlInput″/>
     <wsdl:output message=″tns:removeEmployeeGetPostOutput″/>
</wsdl:operation>
<wsdl:operation name=″getEmployee″>
     <wsdl:input message=″tns:getEmployeeGetPostUrlInput″/>
     <wsdl:output message=″tns:getEmployeeGetPostOutput″/>
</wsdl:operation>
<wsdl:operation name=″updateEmployee″>
     <wsdl:input message=″tns:updateEmployeeGetPostUrlInput″/>
     <wsdl:output message=″tns:updateEmployeeGetPostOutput″/>
   </wsdl:operation>
</wsdl:portType>
<wsdl:binding name=″EmployeeManagementServiceSOAP″
   type=″tns:EmployeeManagementService″>
   <soap:binding style=″document″
      transport″http://schemas.xmlsoap.org/soap/http″/>
   <wsdl:operation name=″addEmployee″>
      <soap:operation soapAction=″urn:example/addEmployee″/>
      <wsdl:input>
           <soap:body use=″literal″/>
    </wsdl:input>
    <wsdl:output>
            <soap:body use=″literal″/>
    </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″removeEmployee″>
   <soap:operation soapAction=″urn:example/removeEmployee″/>
   <wsdl:input>
         <soap:body use=″literal″/>
</wsdl:input>
<wsdl:output>
       <soap:body use=″literal″/>
    </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″getEmployee″>
   <soap:operation soapAction=″urn:example/getEmployee″/>
   <wsdl:input>
          <soap:body use=″literal″/>
   </wsdl:input>
   <wsdl:output>
          <soap:body use=″literal″/>
   </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″updateEmployee″>
   <soap:operation soapAction=″urn:example/updateEmployee″/>
   <wsdl:input>
          <soap:body use=″literal″/>
   </wsdl:input>
   <wsdl:output>
          <soap:body use=″literal″/>
   </wsdl:output>
   </wsdl:operation>
</wsdl:binding>
<wsdl:binding name=″EmployeeManagementServiceGetBinding″
  type=″tns:EmployeeManagementServiceGetPostUrl″>
  <http:binding verb=″GET″/>
  <wsdl:operation name=″addEmployee″>
     <http:operation location=″addEmployee″/>
     <wsdl:input>
            <http:urlEncoded/>
     </wsdl:input>
            <wsdl:output>
                   <mime:mimeXml part=″response″/>
            </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name=″removeEmployee″>
            <http:operation location=″removeEmployee″/>
            <wsdl:input>
                   <http:urlEncoded/>
            </wsdl:input>
            <wsdl:output>
                   <mime:mimeXml part=″response″/>
            </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name=″getEmployee″>
            <http:operation location=″getEmployee″/>
            <wsdl:input>
                   <http:urlEncoded/>
            </wsdl:input>
            <wsdl:output>
                   <mime:mimeXml part=″response″/>
            </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name=″updateEmployee″>
           <http:operation location=″updateEmployee″/>
           <wsdl:input>
                  <http:urlEncoded/>
           </wsdl:input>
           <wsdl:output>
                  <mime:mimeXml part=″response″/>
           </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:binding name=″EmployeeManagementServicePostBinding″
type=″tns:EmployeeManagementServiceGetPostUrl″>
<http:binding verb=″POST″/>
<wsdl:operation name=″addEmployee″>
      <http:operation location=″addEmployee″/>
      <wsdl:input>
            <mime:content part=″empno″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″firstname″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″midinit″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″lastname″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″workdept″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″phoneno″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″hiredate″
                 type=″application/x-www-form-encoded″/>
            <mime:content part=″job″
                 type=″application/x-www-form-encoded″/>
               <mime:content part=″edlevel″
                    type=″application/x-www-form-encoded″/>
               <mime:content part=″sex″
                    type=″application/x-www-form-encoded″/>
               <mime:content part=″birthdate″
                    type=″application/x-www-form-encoded″/>
               <mime:content part=″salary″
                    type=″application/x-www-form-encoded″/>
               <mime:content part=″bonus″
                    type=″application/x-www-form-encoded″/>
               <mime:content part=″comm″
                    type=″application/x-www-form-encoded″/>
       </wsdl:input>
       <wsdl:output>
              <mime:mimeXml part=″response″/>
       </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″removeEmployee″>
       <http:operation location=″removeEmployee″/>
       <wsdl:input>
              <mime:content part=″empno″
                   type=″application/x-www-form-encoded″/>
       </wsdl:input>
       <wsdl:output>
             <mime:mimeXml part=″response″/>
       </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″getEmployee″>
      <http:operation location=″getEmployee″/>
      <wsdl:input/>
      <wsdl:output>
            <mime:mimeXml part=″response″/>
       </wsdl:output>
</wsdl:operation>
<wsdl:operation name=″updateEmployee″>
      <http:operation location=″updateEmployee″/>
      <wsdl:input>
             <mime:content part=″empno″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″firstname″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″midinit″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″lastname″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″workdept″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″phoneno″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″hiredate″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″job″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″edlevel″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″sex″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″birthdate″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″salary″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″bonus″
                  type=″application/x-www-form-encoded″/>
             <mime:content part=″comm″
                          type=″application/x-www-form-encoded″/>
             </wsdl:input>
             <wsdl:output>
                     <mime:mimeXml part=″response″/>
             </wsdl:output>
      </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name=″EmployeeManagementService″>
     <wsdl:port binding=″tns:EmployeeManagementServiceSOAP″
           name=″EmployeeManagementServiceSOAP″>
           <soap:address
  location=″http://$server$:$port$/$contextRoot$/services/EmployeeManagementServic
      e″/>
      </wsdl:port>
      <wsdl:port binding=″tns:EmployeeManagementServiceGetBinding″
            name=″EmployeeManagementServiceGetBindingPort″>
  <http:addresslocation=″http://$server$:$port$/$contextRoot$/rest/EmployeeManagem
      entService/″/>
      </wsdl:port>
      <wsdl:port binding=″tns:EmployeeManagementServicePostBinding″
            name=″EmployeeManagementServicePostBindingPort″>
  <http:addresslocation=″http://$server$:$port$/$contextRoot$/rest/EmployeeManagem
      entService/″/>
      </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

Claims (23)

1.一种用于操作由数据服务器管理的web服务运行时的方法,包括: 
部署在应用服务器上的通用Web服务运行时模块访问web服务管理元数据仓库中的web服务元数据,该web服务元数据指定了web服务的行为和结构,包括web服务名称、web服务配置文档、web服务描述语言文档、web服务状态和时间戳; 
所述通用Web服务运行时模块定义基于数据访问的冗余web服务的web服务产品,该web服务产品从存储在公共web服务管理元数据仓库中web服务元数据导出; 
同步模块确定所述web服务管理元数据仓库中的所述web服务元数据发生改变;以及 
所述通用Web服务运行时模块响应于所述web服务管理元数据仓库中的所述web服务元数据发生改变,来管理基于数据访问的web服务,其中所述基于数据访问的web服务可配置用于与部署在应用服务器上的通用web服务运行时模块协作来执行,所述应用服务器可配置用于支持web服务的动态部署。 
2.如权利要求1所述的方法,其中所述web服务元数据的改变包括:向web服务管理元数据仓库添加的web服务元数据,所述管理步骤还包括: 
从所述web服务管理元数据仓库中取回web服务配置文档; 
根据所述web服务配置文档创建所述web服务产品,所述web服务配置文档满足web服务配置方案;以及 
启动所述web服务产品,以使得与所述通用web服务运行时模块相关的请求处理器接受与所述web服务产品相关的请求。 
3.如权利要求2所述的方法,还包括:创建与所述web服务产品相关的web服务端点接口,以及向web服务引擎提供所述web服务端点接口。 
4.如权利要求2所述的方法,其中启动web服务产品还包括:web服务产品执行web服务请求,而无需重启所述通用web服务运行时模块。 
5.如权利要求1所述的方法,其中所述web服务元数据的改变包括从所述web服务管理元数据仓库移除的web服务元数据,以及其中管理基于数据访问的web服务包括以下中的至少一个:移除以及去激活与由所移除的web服务元数据标识的所述基于数据访问的web服务相关的web服务运行时产品。 
6.如权利要求5所述的方法,还包括以下中的至少一个:移除以及去激活web服务引擎中的web服务端点接口,其中所述web服务端点接口与所述web服务运行时产品相关。 
7.如权利要求1所述的方法,其中所述web服务元数据的改变是通过对与定义在所述web服务管理元数据仓库中的web服务相关的时间戳进行评价而确定的。 
8.如权利要求7所述的方法,其中所述时间戳是针对轮询时间间隔进行评价的。 
9.如权利要求1所述的方法,还包括用户定义所述web服务管理元数据仓库中的所述web服务元数据。 
10.如权利要求1所述的方法,还包括发布与所述基于数据访问的web服务相关的web服务描述语言WSDL文档。 
11.如权利要求1所述的方法,还包括所述同步模块将所述改变通知给所述通用web服务运行时模块。 
12.如权利要求1所述的方法,还包括:由一个或者多个冗余web服务产品定义基于数据访问的web服务,其中所述一个或者多个冗余web服务产品能够从存储在公共web服务管理元数据仓库中的web服务元数据导出。 
13.一种用于操作由数据服务器管理的web服务运行时的设备,包括: 
部署在应用服务器上的通用Web服务运行时模块,用于访问web 服务管理元数据仓库中的web服务元数据的装置,该web服务元数据指定了web服务的行为和结构,包括web服务名称、web服务配置文档、web服务描述语言文档、web服务状态和时间戳; 
所述通用Web服务运行时模块还定义基于数据访问的web服务的冗余web服务产品,该web服务产品从存储在公共web服务管理元数据仓库中web服务元数据导出; 
同步模块,用于确定所述web服务管理元数据仓库中的所述web服务元数据发生改变的装置;以及 
所述通用Web服务运行时模块还用于响应于所述web服务管理元数据仓库中的所述web服务元数据发生改变,来管理基于数据访问的web服务的装置; 
其中所述基于数据访问的web服务可配置用于与部署在应用服务器上的通用web服务运行时模块协作来执行,所述应用服务器可配置用于支持web服务的动态部署。 
14.如权利要求13所述的设备,其中所述web服务元数据的改变包括向web服务管理元数据仓库添加的web服务元数据,所述通用Web服务运行时模块还包括: 
用于从所述web服务管理元数据仓库取回web服务配置文档的装置; 
用于根据所述web服务配置文档创建所述web服务产品的装置,所述web服务配置文档满足web服务配置方案;以及 
用于启动所述web服务产品以使得与所述通用web服务运行时模块相关的请求处理器接受与所述web服务产品相关的请求的装置。 
15.如权利要求14所述的设备,还包括:用于创建与所述web服务产品相关的web服务端点接口的装置,以及用于向web服务引擎提供所述web服务端点接口的装置。 
16.如权利要求14所述的设备,其中用于启动web服务产品的装置还包括:用于执行web服务请求而无需重启所述通用web服务 运行时模块的装置。 
17.如权利要求13所述的设备,其中所述web服务元数据的改变包括从所述web服务管理元数据仓库移除的web服务元数据,以及其中用于管理基于数据访问的web服务的装置包括以下中的至少一个:用于移除与由所移除的web服务元数据标识的所述基于数据访问的web服务相关的web服务运行时产品的装置,以及用于去激活与由所移除的web服务元数据标识的所述基于数据访问的web服务相关的web服务运行时产品的装置。 
18.如权利要求17所述的设备,还包括以下中的至少一个:用于移除web服务引擎中的web服务端点接口的装置,以及用于去激活web服务引擎中的web服务端点接口的装置,其中所述web服务端点接口与所述web服务运行时产品相关。 
19.如权利要求13所述的设备,其中所述用于确定web服务元数据的改变的装置包括用于对与定义在所述web服务管理元数据仓库中的web服务相关的时间戳进行评价的装置。 
20.如权利要求19所述的设备,其中所述时间戳是针对轮询时间间隔进行评价的。 
21.如权利要求13所述的设备,还包括用于发布与所述基于数据访问的web服务相关的web服务描述语言文档的装置。 
22.如权利要求13所述的设备,其中所述同步模块还用于将所述改变通知给所述通用web服务运行时模块的装置。 
23.如权利要求13所述的设备,其中由一个或者多个冗余web服务产品定义基于数据访问的web服务,其中所述一个或者多个冗余web服务产品能够从存储在公共web服务管理元数据仓库中的web服务元数据导出。 
CN2008800159415A 2007-05-18 2008-04-30 用于由数据服务器管理的web服务运行时的装置、系统和方法 Expired - Fee Related CN101690123B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/750,886 US7865535B2 (en) 2007-05-18 2007-05-18 Apparatus, system, and method for a data server-managed web services runtime
US11/750,886 2007-05-18
PCT/EP2008/055376 WO2008141905A1 (en) 2007-05-18 2008-04-30 Apparatus, system, and method for a data server-managed web services runtime

Publications (2)

Publication Number Publication Date
CN101690123A CN101690123A (zh) 2010-03-31
CN101690123B true CN101690123B (zh) 2013-06-12

Family

ID=39679476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800159415A Expired - Fee Related CN101690123B (zh) 2007-05-18 2008-04-30 用于由数据服务器管理的web服务运行时的装置、系统和方法

Country Status (5)

Country Link
US (1) US7865535B2 (zh)
EP (1) EP2151118A1 (zh)
KR (1) KR101055030B1 (zh)
CN (1) CN101690123B (zh)
WO (1) WO2008141905A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853554B2 (en) * 2002-11-12 2010-12-14 Oracle International Corporation Method and system for metadata reconciliation in a data warehouse
US7792921B2 (en) * 2007-09-24 2010-09-07 Microsoft Corporation Metadata endpoint for a generic service
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US20090222749A1 (en) * 2008-02-29 2009-09-03 Business Objects, S.A. Apparatus and method for automated creation and update of a web service application
US8539050B2 (en) * 2008-04-28 2013-09-17 Applied Olap, Inc. Method for distributing update modules for computer software over a network
US8903889B2 (en) * 2008-07-25 2014-12-02 International Business Machines Corporation Method, system and article for mobile metadata software agent in a data-centric computing environment
US20110029479A1 (en) * 2009-07-31 2011-02-03 Miroslav Novak Method and system to maintain service architecture repositories
CN102170365B (zh) * 2010-02-26 2013-12-25 阿里巴巴集团控股有限公司 实现软件系统热部署的方法及系统
TWI494855B (zh) * 2010-05-31 2015-08-01 Alibaba Group Holding Ltd Methods and systems for implementing hot deployment of software systems
CN102457569B (zh) * 2010-10-25 2014-04-02 中国科学院声学研究所 一种面向物联网应用的Web服务的冗余检测方法及系统
EP2477377A1 (en) * 2011-01-14 2012-07-18 Alcatel Lucent Peer node and method for improved peer node selection
US10310851B2 (en) 2011-06-29 2019-06-04 International Business Machines Corporation Automated generation of service definitions for message queue application clients
US11231690B2 (en) 2011-11-11 2022-01-25 Rockwell Automation Technologies, Inc. System and method for dynamic meta-data in control and visualization
US20130124575A1 (en) * 2011-11-11 2013-05-16 Rockwell Automation Technologies, Inc. System and Method for Dynamic Meta-Data in Control and Visualization
US20130198171A1 (en) * 2012-01-26 2013-08-01 Microsoft Corporation Method and system for managing database object information
WO2013141517A1 (ko) * 2012-03-18 2013-09-26 엘지전자 주식회사 제어 장치 및 그의 동작 방법, 서버 및 그의 동작 방법
US9741004B1 (en) * 2012-08-16 2017-08-22 Nintex Pty Limited Apparatus and method for transforming web services into managed workflow actions
US10129328B2 (en) 2013-09-26 2018-11-13 Oracle International Corporation Centralized management of webservice resources in an enterprise
US9467533B2 (en) * 2014-03-21 2016-10-11 Ptc Inc. System and method for developing real-time web-service objects
WO2015143416A1 (en) 2014-03-21 2015-09-24 Ptc Inc. Systems and methods for developing and using real-time data applications
US9292270B2 (en) * 2014-03-27 2016-03-22 Microsoft Technology Licensing, Llc Supporting dynamic behavior in statically compiled programs
US9389890B2 (en) 2014-03-27 2016-07-12 Microsoft Technology Licensing, Llc Hierarchical directives-based management of runtime behaviors
CN104134156A (zh) * 2014-07-17 2014-11-05 南宁市锋威科技有限公司 一种基于web的网上银行安全系统
US10320935B2 (en) 2015-01-28 2019-06-11 Red Hat, Inc. Cache data validation
US20180189080A1 (en) * 2015-06-30 2018-07-05 Societal Innovations Ipco Limited System And Method For Reacquiring A Running Service After Restarting A Configurable Platform Instance
CN105159974A (zh) * 2015-08-27 2015-12-16 浪潮软件股份有限公司 一种跨数据源的web服务自动生成方法
US10319043B1 (en) * 2016-01-29 2019-06-11 Intuit Inc. Methods, systems, and computer program products for linking data schemas to electronic tax return
US10270796B1 (en) * 2016-03-25 2019-04-23 EMC IP Holding Company LLC Data protection analytics in cloud computing platform
CN107943543B (zh) * 2017-11-29 2022-01-14 优速云(福建)科技有限公司 一种web应用热部署的方法和计算机设备
US20190278570A1 (en) * 2018-03-08 2019-09-12 Microsoft Technology Licensing, Llc Annotating Features of a Resource to Facilitate Consumption in Different Computing Environments
US11544617B2 (en) * 2018-04-23 2023-01-03 At&T Intellectual Property I, L.P. Network-based machine learning microservice platform
US11860901B1 (en) * 2019-03-29 2024-01-02 Amazon Technologies, Inc. SQL execution over HTTP for relational databases using connection pooling
CN113901143B (zh) * 2021-10-13 2022-06-28 北京德塔精要信息技术有限公司 前端跨框架通信方法及前端框架结构
CN115062084B (zh) * 2022-08-19 2022-11-04 中关村科学城城市大脑股份有限公司 基于数据库元数据构建api接口方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MXPA03011976A (es) * 2001-06-22 2005-07-01 Nervana Inc Sistema y metodo para la recuperacion, manejo, entrega y presentacion de conocimientos.
US7581231B2 (en) * 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US20030033432A1 (en) * 2001-08-08 2003-02-13 Simpson Shell S. Web based imaging service that converts web pages into content on behalf of another web site
US7343428B2 (en) * 2001-09-19 2008-03-11 International Business Machines Corporation Dynamic, real-time integration of software resources through services of a content framework
US7296061B2 (en) * 2001-11-21 2007-11-13 Blue Titan Software, Inc. Distributed web services network architecture
US20040044656A1 (en) 2002-08-29 2004-03-04 Manoj Cheenath System for web service generation and brokering
US20040045004A1 (en) 2002-08-29 2004-03-04 Manoj Cheenath System for runtime web service to java translation
US7349980B1 (en) * 2003-01-24 2008-03-25 Blue Titan Software, Inc. Network publish/subscribe system incorporating Web services network routing architecture
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7617480B2 (en) 2004-05-28 2009-11-10 Sap Ag System and method for a Web service virtual interface
US7620934B2 (en) 2004-05-28 2009-11-17 Sap Ag System and method for a Web service definition
KR100630616B1 (ko) 2004-07-15 2006-10-02 주식회사 위즈링크 개인 맞춤 온-라인 상시 웹 서비스 제공 시스템 및 방법
JP2006072785A (ja) 2004-09-03 2006-03-16 Hitachi Electronics Service Co Ltd サービス利用のためのリクエストメッセージ制御方法、および、サービス提供システム
US7590988B2 (en) 2005-03-08 2009-09-15 Microsoft Corporation Dynamic service generation for legacy components
US7571447B2 (en) 2005-06-20 2009-08-04 International Business Machines Corporation Loose coupling of web services
US20070067384A1 (en) 2005-09-21 2007-03-22 Angelov Dimitar V System and method for web services configuration creation and validation
US20070073844A1 (en) 2005-09-28 2007-03-29 International Business Machines Corporation Method, system, and program product for web services orchestration
KR100660289B1 (ko) 2005-12-24 2006-12-20 주식회사 케이티 인터넷 사이트의 액세스 데이터 용량 정보 제공 시스템 및방법

Also Published As

Publication number Publication date
CN101690123A (zh) 2010-03-31
EP2151118A1 (en) 2010-02-10
KR101055030B1 (ko) 2011-08-05
US7865535B2 (en) 2011-01-04
KR20100027124A (ko) 2010-03-10
US20080288547A1 (en) 2008-11-20
WO2008141905A1 (en) 2008-11-27

Similar Documents

Publication Publication Date Title
CN101690123B (zh) 用于由数据服务器管理的web服务运行时的装置、系统和方法
US7580946B2 (en) Smart integration engine and metadata-oriented architecture for automatic EII and business integration
US10129116B2 (en) Techniques for capturing execution time data in dataflow graphs
US7167874B2 (en) System and method for command line administration of project spaces using XML objects
AU2004200639B2 (en) Integrating design, deployment, and management phases for systems
CN101256650B (zh) 一种基于业务实体的企业数据提取方法与系统
US20080208806A1 (en) Techniques for a web services data access layer
US7844612B2 (en) Method for pruning objects in a service registry and repository
US20090055430A1 (en) Method and system for model-based replication of data
US8689179B2 (en) Transportable refactoring object
US7725469B2 (en) System and program products for pruning objects in a service registry and repository
JP2018514012A (ja) ネットワーク上のデータソースへの照会
CN113220633B (zh) 统一文件编码管理方法及系统
Altendorf et al. Using J2EE on a large, Web-based project
Papamarkos et al. Event-condition-action rules on RDF metadata in P2P environments
CN102567517A (zh) 发布数据库数据的装置和方法
CN113568676B (zh) 一种商业平台上互联网服务快速发布的通用方法
JP2006302159A (ja) データベースアクセス支援システム
US7702661B2 (en) Managing checked out files in a source control repository
KR20000047631A (ko) 데이터베이스 액세스방법, 데이터베이스 클라이언트애플리케이션 및 기계판독가능매체 웹서버
Collins et al. Grid Data Services-Relational Database Management Systems
Loeser et al. dLIMIT—A middleware framework for loosely-coupled database federations
Zhao et al. Using SAS® to Handle HL7 Messages in A Health Information Exchange
Sipos Synchronization with SyncML
Collins et al. Grid Data Services–Relational Database Management Systems–Version 1.1–16Jul2002

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130612

Termination date: 20160430

CF01 Termination of patent right due to non-payment of annual fee