专利名称:用于自动soa应用部署的soa注册处、方法和平台管理器的制作方法
技术领域:
本发明涉及用于将SOA应用自动部署到平台上的SOA注册处、方法和平台管理器。
背景技术:
现代软件应用通常包括许多各自实现部分应用的不同组件。组件一起工作以便提供整个应用的功能。在该环境中,面向服务的架构(SOA)的概念被日益使用,其中松散耦合的SOA组件(例如web服务)执行处理逻辑并且与其它SOA组件(例如数据库、web服务器等)通信。SOA组件的描述可存储在SOA注册处中,即,SOA注册处包括表示SOA组件的条目。
在开发这种SOA应用的现有技术的方法中,必须使SOA应用适合于它假定要部署到其上的平台。例如,如果SOA应用使用数据存储来存储它的信息,要选择某种数据库产品来实现该数据存储功能,并且其它SOA组件要设计为使得它们可访问该数据库。
在SOA应用的生命周期期间,有时候必须将SOA应用重新部署到不同的目标平台上,例如部署到开发部分SOA应用的开发平台上,部署到测试平台上以运行应用,并且当完成SOA应用的开发时最后部署到产品平台上。
然而,每种不同的平台可具有不同的特定特性,例如像操作系统、可用语言等。此外,上述的示例数据存储功能可在产品平台上由上述数据库实现,但是还可在开发平台上由基于文件的存储器来实现。
在现有技术的方法中,在该环境中,当将SOA应用重新部署到新平台上时,必须手工执行对SOA应用的组件的高代价的,费时的和易错的适应性改变,即使示例数据存储中的实际功能在所有平台上是相同的也是如此。
考虑到以上,由此本发明的根本技术问题是高效地自动将SOA应用部署到平台上,因而至少部分地克服了现有技术的缺点。
发明内容
该问题根据本发明的一个方面由用于将至少一个SOA应用自动部署到至少一个平台上的SOA注册处来解决,所述至少一个SOA应用包括一个或多个组件,SOA注册处包括
a. 与一个或多个抽象组件描述有关的至少一个SOA应用描述,该一个或多个抽象组件描述描述了至少一个SOA应用的组件;
b. 所述一个或多个抽象组件描述中每一个抽象组件描述的至少一个具体组件描述,该至少一个具体组件描述包括目标平台上的相应组件的一个或多个需求;和
c. 至少一个平台描述符,其包括至少一个平台的一个或多个特性;
因此,实施例定义了 SOA注册处,其包括以具体形式和以抽象形式表示SOA应用组件的两层体系结构,以及两层之间的关系。在最上层,优选地以抽象(独立于平台)术语描述SOA应用及其组件。在下层中,表示抽象(独立于平台)应用组件的注册条目各自与(0至n个)表示具体(特定于平台)应用组件的条目有关,即适于可具有目标平台的一个或多个需求的某种目标平台的组件。这些需求的示例可以是特定版本的操作系统或运行时环境。此外,注册处可包括所谓的平台描述符,其打包了特定平台,例如所提供操作系统等的信息。给出某种目标平台,这允许关于抽象描述符应用安装过程(参见下面),并且因而提供了部署过程中更多的灵活性。
在本发明的一个方面中,至少一个平台的一个或多个特性可包括所提供平台组件的名称和/或版本号。在本发明的另一个方面中, 一个或多个需求可包括所需平台组件的名称和/或版本号以及任何数量的逻辑操作符。
因此,这允许例如通过定义最低需要的版本,来定义需要运行在特定平台上的组件的复杂需求,如在下面的详细描述中进一步概述的。在部署过程中,可基于组件的需求和目标平台的特性来选择适合的组件。
在本发明的另一个方面中,通过至少一个本体描述至少一个平台的一个或多个需求和/或一个或多个特性。本体允许对某个域中条目和它们的关
系的形式化定义。使用例如像万维网联盟(W3C)规定的web本体语言(OWL) —样的标准描述语言,允许软件应用"理解"并且处理这些本体。
根据本发明的另一个方面,提供了用于将至少一个SOA应用自动部署到至少一个平台上的方法,所述至少一个SOA应用包括一个或多个组件,方法包括以下步骤
a. 从根据上面SOA注册处中的任何一个的SOA注册处选择至少一个SOA应用的SOA应用描述和至少一个平台的平台描述符;
b. 对于所选择应用描述的一个或多个抽象组件描述中的每一个,选择至少一个具体组件描述中的一个;和
c. 将对应于所选择具体组件描述的组件部署到平台上。方法优选地接收两个输入参数,即要部署的SOA应用的SOA应用描
述符和目标平台的平台描述符。优选地,参数是指向如上所定义的SOA注册处的条目的指针。对于SOA应用的每个抽象组件,即对于SOA注册处中的相应抽象组件描述选择具体组件描述符,并且将对应组件部署到目标平台上。
在本发明的另一个方面中,步骤b.中的选择可包括针对至少一个具体组件描述中的每一个,测试对应于平台描述符的平台是否满足一个或多个需求,并且选择第一匹配的具体组件描述。因此,基于具体组件描述的需求和平台描述符中定义的平台的特性来选择组件。可在下面的详细描述中找到选择过程的示例。
此外,步骤b.中的测试可通过根据推断比较至少一个平台的一个或多个需求和一个或多个特性来执行。这在需求和/或平台特性由本体描述时尤其有利,如下面的详细描述中进一步概述的。
根据本发明的另一个方面,仅在针对一个或多个抽象描述中的每一个可以选择具体组件描述中的至少一个的情况下,可执行步骤c.中的部署。
7这确保仅在组件中的每一个都能够运行在目标平台上的情况下部署SOA应用,即它的组件,否则不部署任何组件。
在本发明的又另一方面中,方法还可包括生成报告的步骤,该报告描述对于一个或多个抽象组件描述中的每一个,已部署了哪个组件。
在进一步的从属权利要求中定义本发明的SOA注册处和方法的实施例的另外有利修改。
最后,本发明还涉及用于将至少一个SOA应用自动部署到至少一个平台上的平台管理器,所述至少一个SOA应用包括一个或多个组件,平台管理器适于实现上面定义方法的任何一个。
在随后的详细描述中,参考下面的附图进一步描述本发明的当前优选实施例
图l:根据本发明实施例的示例SOA注册处的示意图2:包括四个抽象组件的示例应用;图3:两个示例平台的特性示例;图4:平台特性的两个示例分类;图5:组件需求的示例XML列表;图6:报告的示例XML列表;
具体实施例方式
在下面,相关于如图1中示意性示出的SOA注册处1描述本发明的当前优选实施例。如所看到的,示例SOA注册处1包括SOA应用的表示,即,它存储SOA应用描述Al。 SOA应用描述Al与三个抽象组件描述AC1、 AC2、 AC3有关,该三个抽象组件描述AC1、 AC2、 AC3与具体组件描述CCll、 CC12、 CC21、 CC22禾Q CC31有关。图1还描绘了两个平台描述符Pl和P2。优选地,SOA注册处1分别对于每个真实的SOA应用,包括一个表示(SOA应用描述),并且对于每个真实组件,包括一个表示(具体组件描述)。因此,术语"SOA应用"和"SOA应用描述"、"组件"和"具体组件描述"等在下面可互换地使用。
优选地,抽象组件描述AC1、 AC2、 AC3中的每一个是SOA应用Al 的一种功能的表示,像SOA应用Al提供的某些服务,或者组成SOA应 用Al的不同组件(web浏览器、后端服务器等)。如上面已经描述的, 抽象组件描述AC1、 AC2、 AC3以抽象术语(即独立于平台的术语)定义 SOA应用Al的组件,因为它们不提供组件的任何详细技术规范。
根据现有技术实例化SOA应用Al (即在真实平台上实现应用)的一 种方式是手工提供抽象组件描述AC1、 AC2、 AC3的具体实例。这例如可 通过以下方式来实现下载并安装Java开发包(JDK) 、 Tamino数据库、 Tomcat服务器和Axis,使用Tamino Java API用Java写服务,编译它们并 且使用适合的Axis工具来部署它们。Web应用例如可实现为Java服务器 页面(JSP)。然而,应用的组件的这种手工实现是困难、低效的,并且 更重要的是,引入了在实现中插入错误的高风险,这可导致不按期望工作 或者在最坏情况下崩溃的应用。
因此,针对抽象组件描述AC1、 AC2、 AC3中的每一个,SOA注册处 1还包括优选地多于一个具体组件描述CCll、 CC12、 CC21、 CC22、 CC31。然而,这不是本发明的需求,并且对于每个抽象组件描述,SOA 注册处1也可仅包括一个具体组件描述。具体组件描述CCll、 CC12、 CC21、 CC22、 CC31例如通过包括到真实组件的代码文件的链接而优选地 相关于真实组件。另一个示例是web应用组件(像web浏览器)的具体组 件描述CCll、 CC12、 CC21、 CC22、 CC31,其包括到对应war文件的链 接。具体组件描述CCll、 CC12、 CC21、 CC22、 CC31还可包括部署相应 组件需要的另外信息。
该信息可以类型/名称方式结构化。不特定于实际对象,而是特定于其 类型的所有部署考虑关联于类型。例如,可从某个web地址获得Tomcat 的事实是关联于类型"Tomcat应用服务器"的信息位。类型"Java服务" 的对象分别包含指向它们的Java代码文件的指针,即关联到名称,但是 Java服务需要以某种方式部署的信息属于类型本身。
因为抽象组件描述AC1、 AC2、 AC3是独立于平台的定义,优选地没有真实的对应物存在。上述抽象和具体层之间的关系例如可通过注册条目
之间的引用来实现。应当注意,尽管下面的示例由XML列表示出,但是 XML注册处仅仅是实现本发明的各种可能性之一 。
为了简单,图1中SOA应用描述Al所表示的SOA应用是极度简化 的,以便说明本发明。应当清楚的是,SOA应用可以是复杂得多的,并且 在某些情况下可包括例如1000个或更多的不同组件。
图2中示出了 SOA应用的更具体的示例,即用于经由因特网读取电 子字典的字典应用,其由web服务维护。示例应用因而包括四个抽象组件 描述,该四个抽象组件描述定义了用于读取、写入和删除字典条目的三个
服务(服务读取、服务写入、服务删除),以及用于浏览字典的
web应用(WebApp:浏览)。每个抽象组件描述与许多具体组件描述有 关,即服务和web应用的具体实现(Rl-R4、 Wl-W2、 Dl-D3、 Bl-B2)。
示例字典应用要部署到两个平台上,该两个平台由两个平台描述符 Pl、 P2在SOA注册处l中描述。平台描述符P1、 P2可包括相应平台的细 节的特性(即信息),例如平台提供的平台组件(例如操作系统(包括它 的版本)、可用运行时环境、应用服务器、servlet引擎等)。如从图3可 看到的,平台描述符Pl定义了对应平台运行版本为10的Solaris操作系 统,提供编程语言Java 1.4.2 Update 7,具有servlet引擎Tomcat 5.5丄17、 web服务栈Axis V2 1.4和两个数据库,即Tamino 4.4和Oracle。
在某些实施例中,平台特性可作为XML条目存储在符合XML注册处 的Java API (JAXR)标准的SOA注册处1中。某些注册处标准已经包括 许多注册条目的预定义类型,但是可不包括类型"平台描述符"。
为此,SOA注册处l可以分类形式按用户定义的类型扩展。分类定义 了概念的树状结构,并且注册条目可通过引用按分类概念来分类。图4示 出了两个分类的示例,即归类不同操作系统的分类OS和归类不同数据库 系统的分类DBS。图4还描绘了示例平台描述符Pl,其包括对分类条目 的引用,以便定义对应平台提供了哪些平台组件。在所描绘示例中,平台 描述符Pl定义的平台运行Solaris 10并且安装有两个数据库系统(Tamino
104.4和Oracle)。应当理解,图3和4中示出的平台特性被极度简化。复杂 得多的定义是可能的,例如通过使用web本体语言(OWL)以本体描述平 台特性。
如上面已经提及的,具体组件描述CCll、 CC12、 CC21、 CC22、 CC31可定义特定平台上相应SOA应用组件的需求。例如,某个服务可适 于仅仅运行在特定版本的web服务栈上。需求以及平台特性可以用本体来 定义,例如以上面提及的OWL来定义。图5示出了来自图2的组件R1的 示例具体组件描述的简化需求定义(其是"服务读取"的具体实现)。 为了简单,图5示出了采用XML的非常简单的示例。通过像OWL—样的 本体语言,复杂得多的需求定义是可能的。如所看到的,图5定义了组件 Rl需要至少版本为9的Solaris,具有更新7或9的Java 1.4.2,从5.5开始 的任何版本的Tomcat,任何子版本的Axis2的Axis,和任何版本的 Tamino数据库。为此,可通过将所需平台组件的名称和/或版本号用逻辑 操作符连接来指定需求,逻辑操作符例如是"大于"、"和"、"或" 等。应当理解,这里描述的示例仅仅示出了需求定义的少数选择,并且就 本发明而言,复杂得多的定义是可能的。
为了在SOA注册处1中存储上面说明的需求信息,许多候选方式是 可能的。 一种可能性是在单独的储存库中存储作为XML文档的需求定 义,并且经由引用链接注册条目。
使用上述信息,可执行部署过程,其将SOA应用描述Al定义的示例 SOA应用部署到平台描述符Pl定义的平台上。部署过程优选地由称为平 台管理器的模块执行,但是也可以任何其它方式实现。
在现有技术的方法中,SOA注册处可仅仅存储适于特定平台的应用组 件的具体组件描述。现有技术安装程序(例如像msi、 InstallShield等), 然后可通过基于该信息部署每个具体组件来部署应用。然而,部署所需的 所有信息在注册处1中以结构化和独立于平台的形式可用的事实允许更加 自动化,尤其当部署到多于一个目标平台上时。
使用根据本发明的SOA注册处1中的两层数据模型,可根据应用的 抽象描述Al连同目标平台Pl的描述来应用部署过程。对于应用的抽象组件AC1、 AC2、 AC3中的每一个,然后可在具体组件描述CCll、 CC12、 CC21、 CC22、 CC31中搜索适于特定目标平台的具体实现。如果没有找 到,部署过程可停止并且可生成包括部署中断原因的报告。在成功的情况 下,报告可包括部署的摘要,即已部署哪些组件和所选择组实际上需要哪 些平台组件的描述。此外,如果己选择了相应组件,具体组件描述 CCll、 CC12、 CC21、 CC22、 CC31或抽象组件描述AC1、 AC2、 AC3可 包括另外的信息,该信息包括在报告中。
参考图2中的示例,首先需要实现"服务读取"的具体组件。在某 些实施例中,具体组件描述CCll、 CC12、 CC21、 CC22、 CC31可包括序 列号,以便确定部署顺序。在图2的示例中,具体组件Rl可因而是根据 顺序的第一组件。针对平台特性测试组件Rl的需求。因为平台描述符Pl 定义的平台满足具体组件Rl的需求,因此选择Rl作为"服务读取"的 实现。过程然后可继续进行到下一抽象组件描述(服务写入),等等。
在特定的优选实施例中,具体组件的需求和平台的特性由本体定义, 例如使用web本体语言(OWL)来定义,如上所述。平台管理器然后可自 动通过推断针对平台特性测试需求。推断是计算机科学中的方法,其允许 自动从逻辑语句导出结论,这在上述本体的环境中是尤其有利的。
如果优选地,对于应用的每个抽象组件找到至少一个具体组件,具体 组件最后部署到平台上,否则不部署任何组件。然而,可理解,就本发明 而言,例如用于部分部署的其它部署过程也是可能的。
在上面的示例中,部署报告包括可包括如下信息为抽象组件"服 务读取"选择了具体组件Rl,版本9的Solaris是足够的,以及不需要 Oracle数据库。
然而,示例应用Al部署到平台P2不能使用具体组件Rl,因为Java 版本不匹配(平台P2仅提供Java 1.4.2 Update 8,参见图3)。报告因而 可包括该信息,如图6中所描绘。
本发明的尤其有利的特征是自动将应用重新部署到许多不同平台上, 如上所述。因为应用以独立于平台(抽象)的术语在SOA注册处1中定 义一次并且对于应用的抽象组件描述中的每一个优选地提供许多不同具体实现,而实现此有利特征。
此外,本发明不限于部署一个单个SOA应用。相反,可在SOA注册 处1中描述多个SOA应用,其中SOA应用可具有重叠的功能,即SOA应 用描述可与共享的抽象组件描述有关。在该情况下,抽象和具体组件之间 的关系可在SOA应用之间共享。
1权利要求
1.一种用于将至少一个SOA应用自动部署到至少一个平台上的SOA注册处(1),所述至少一个SOA应用包括一个或多个组件,所述SOA注册处(1)包括a.与一个或多个抽象组件描述(AC1、AC2、AC3)有关的至少一个SOA应用描述(A1),该一个或多个抽象组件描述(AC1、AC2、AC3)描述了所述至少一个SOA应用的组件;b.所述一个或多个抽象组件描述(AC1、AC2、AC3)中每一个抽象组件描述的至少一个具体组件描述(CC11、CC12、CC21、CC22、CC31),所述至少一个具体组件描述(CC11、CC12、CC21、CC22、CC31)包括目标平台上的相应组件的一个或多个需求;和c.至少一个平台描述符(P1、P2),其包括所述至少一个平台的一个或多个特性。
2. 根据权利要求1所述的SOA注册处(1),其中所述至少一个平 台的 一个或多个特性包括所提供平台组件的名称和/或版本号。
3. 根据权利要求l或2所述的SOA注册处(1),其中所述至少一个 平台的一个或多个特性作为条目存储在所述SOA注册处(1)的至少一个 分类中,并且其中所述至少一个平台描述符(Pl、 P2)包括对所述条目的 引用。
4. 根据前述权利要求中任何一个所述的SOA注册处(1),其中所 述一个或多个需求包括所需平台组件的名称和/或版本号以及任何数量的逻 辑操作符。
5. 根据前述权利要求中任何一个所述的SOA注册处(1),其中通 过至少一个本体来描述所述至少一个平台的一个或多个需求和/或一个或多 个特性。
6. 根据前述权利要求中任何一个所述的SOA注册处(1),其中所 述一个或多个抽象组件描述(AC1、 AC2、 AC3)、所述至少一个具体组 件描述(CCll、 CC12、 CC21、 CC22、 CC31)和/或所述至少一个平台描述符(Pl、 P2)包括名称和/或类型。
7. 根据前述权利要求中任何一个所述的SOA注册处(1),其中所 述至少一个具体组件描述(CCll、 CC12、 CC21、 CC22、 CC31)包括用 于确定部署顺序的序列号。
8. 根据前述权利要求中任何一个所述的SOA注册处(1),其中所 述一个或多个需求存储在SOA注册处(1)外部,并且所述至少一个具体 组件描述(CCll、 CC12、 CC21、 CC22、 CC31)包括对所述需求的引 用。
9. 根据前述权利要求中任何一个所述的SOA注册处(1),其中所 述SOA注册处(1)分布在多个SOA注册处之间。
10. —种用于将至少一个SOA应用自动部署到至少一个平台上的方 法,所述至少一个SOA应用包括一个或多个组件,所述方法包括以下步 骤a. 从根据权利要求l-9中任何一个的SOA注册处(1)选择所述至少 一个SOA应用的SOA应用描述(Al)和所述至少一个平台的平台描述符(Pl、 P2);b. 针对所选择的应用描述(Al)的一个或多个抽象组件描述 (AC1、 AC2、 AC3)中的每一个,选择至少一个具体组件描述(CCll、CC12、 CC21、 CC22、 CC31)中的一个;和c. 将对应于所选择的具体组件描述(CCll、 CC12、 CC21、 CC22、 CC31)的组件部署到所述平台上。
11. 根据权利要求IO所述的方法,其中步骤b.中的所述选择包括 针对所述至少一个具体组件描述(CCll、 CC12、 CC21、 CC22、 CC31) 中的每一个,测试对应于所述平台描述符(Pl、 P2)的平台是否满足所述 一个或多个需求,并且选择第一匹配的具体组件描述。
12. 根据权利要求11所述的方法,其中步骤b.中的所述测试可通过 根据推断比较所述一个或多个需求和所述至少一个平台的一个或多个特性 来执行。
13. 根据前述权利要求10-12中任何一个所述的方法,其中仅在针对所述一个或多个抽象描述(AC1、 AC2、 AC3)中的每一个可以选择所述 具体组件描述(CCll、 CC12、 CC21、 CC22、 CC31)中的至少一个的情 况下,执行步骤c.中的所述部署。
14. 根据前述权利要求10-13中任何一个所述的方法,还包括生成报 告的步骤,该报告描述对于所述一个或多个抽象组件描述(AC1、 AC2、 AC3)中的每一个,已部署了哪个组件。
15. —种用于将至少一个SOA应用自动部署到至少一个平台上的平 台管理器,所述至少一个SOA应用包括一个或多个组件,所述平台管理 器适于实现前述方法权利要求10-14中的任何一个。
全文摘要
公开了用于自动SOA应用部署的SOA注册处、方法和平台管理器。本发明涉及一种用于将至少一个SOA应用自动部署到至少一个平台上的SOA注册处(1),所述至少一个SOA应用包括一个或多个组件,所述SOA注册处(1)包括a.与一个或多个抽象组件描述(AC1、AC2、AC3)有关的至少一个SOA应用描述(A1),该一个或多个抽象组件描述(AC1、AC2、AC3)描述了所述至少一个SOA应用的组件;b.所述一个或多个抽象组件描述(AC1、AC2、AC3)中每一个抽象组件描述的至少一个具体组件描述(CC11、CC12、CC21、CC22、CC31),所述至少一个具体组件描述(CC11、CC12、CC21、CC22、CC31)包括目标平台上的相应组件的一个或多个需求;和c.至少一个平台描述符(P1、P2),其包括所述至少一个平台的一个或多个特性。
文档编号G06F9/44GK101655790SQ20091016338
公开日2010年2月24日 申请日期2009年8月17日 优先权日2008年8月18日
发明者凯·汉斯-彼得·温克尔, 哈拉德·斯隆宁, 朱利安·哈巴斯, 雨朵·哈非曼, 马卡斯·格雷纳尔 申请人:软件股份公司