操纵soa注册表中的对象的方法

文档序号:6583160阅读:279来源:国知局
专利名称:操纵soa注册表中的对象的方法
技术领域
本发明涉及操纵SOA注册表(registry)中的对象的方法。
背景技术
现代的应用(application)(特别是在面向服务的体系结构(SOA)的环境中)经 常包括进行协作以提供该应用的整体功能的多个独立组件。为此,SOA注册表可用于发布、 发现和利用这些组件。在"电子黄页"的意义上,SOA注册表通常是一种存储对SOA组件的 描述的共享资源,以及在SOA注册表中查询某些组件的手段。此外,SOA注册表不仅能够存 储对SOA中常用的web服务的描述,而且可以通过定义自定义类型(custom type)来描述 任意种类的组件。 在现有技术中,存在定义了 SOA注册表的内容的结构和信息模型的许多注册表规 范,例如ebXML和UDDI。为了使得应用能够访问SOA注册表的内容(即,发布新的组件、查 找现有的组件等等),现有技术中已知的是应用编程接口 (API),最流行的是用于XML注册 表的Java API (JAXR)。 JAXR是一种一般性的API,这是因为其提供对各种类型的SOA注册表的访问,例如 对符合上述规范的SOA注册表的访问。因此,JAXR定义了一种信息模型,该信息模型试图 对不同注册表规范的不同信息模型进行统一。 然而,由于JAXR是一般性的这一事实,利用了 JAXR的对应用进行编程的任务是非
常复杂的并且需要对底层的JAXR信息模型的详细了解。例如,在SOA注册表中创建某一自
定义类型的注册表对象的过程需要应用执行类似于以下的多个步骤创建一般性的注册表
对象,创建自定义概念以及通过分类对象而将注册表对象与概念相链接。当访问现有的注
册表对象时,不得不定义相似的步骤。每次创建和搜索新的注册表对象时通常不得不重复
这些步骤,这样效率低下并且容易出错,使得被编程的应用的操作很可能失败。 鉴于以上,以下问题因而是本发明的技术问题改善应用通过JAXR对SOA注册表
的访问,以使得对注册表对象的操纵更加高效且更少出错,并从而至少部分地克服现有技
术的缺点。

发明内容
根据本发明的一个实施例,该问题是通过一种通过应用来操纵SOA注册表的至少 一个注册表对象的方法来解决的,该至少一个注册表对象可通过用于XML注册表的Java API (JAXR)来访问。在一个实施例中,该方法包括以下步骤 a.定义至少一个注册表对象类型和至少一个应用对象类型之间的映射,其中该映 射通过一个和多个Java注解(annotation)来描述; b.例示至少一个应用对象类型以向应用提供与该至少一个注册表对象相对应的 至少一个应用对象;以及 c.通过应用来操纵该至少一个应用对象,该操纵经由JAXR而引起对相应的至少一个注册表对象的相关操纵。 因此,定义一种映射,该映射将注册表对象类型映射到应用对象类型,S卩,应用对 象(其是应用对象类型的实例)用作SOA注册表中注册表对象(其是注册表对象类型的实 例)的一种代理(surrogate)。该映射是由一个或多个Java注解进行描述的,这允许一种 简明并且易读的可灵活适应的映射定义,如在以下的详细描述中进一步概述的。该映射通 常是一种l : 1映射,即,其将一个应用对象类型映射到一个相应注册表对象类型。然而, 在本发明中,l : n的映射也是可能的,S卩,将一个应用对象类型映射到多于一个的注册表 对象类型,或者甚至可以定义m : n映射。 然后,向应用提供至少一个所例示的应用对象。通过应用对应用对象的操纵通过 JAXR而引起对相应的至少一个注册表对象的相关操纵。这可以实现,因为应用对象优选地 向应用提供一组简单的操作并且在内部利用复杂的JAXR,从而隐匿了从应用来访问JAXR 的繁琐细节。 在发明的一个方面中,至少一个注册表对象可以包括至少一个属性,并且映射可 以包括至少一个属性到相应应用对象的至少一个属性的映射。 JAXR信息模型可以定义注册表对象的属性的不同概念,例如,对象属性、对象槽位 (slot)以及JAXR定义的对象类型的属性,这将在以下的详细描述进行描述。然而,一种应 用可以包括不同的属性概念,例如,可通过获取(get)操作和设置(set)操作而访问的私有 性质(attribute)。因此,JAXR属性概念被映射到应用属性概念。该映射的目的是,当应用 操纵应用对象时(即,通过设置应用对象的属性值),应用对象例如通过利用JAXR而能够设 置相应注册表对象的相应属性。 在发明的另一方面,至少一个注册表对象的至少一个属性可以具有至少一个字符
串值,并且到相应应用对象的至少一个属性的映射包括到字符串值的转换。 JAXR信息模型中的某些类型的属性(例如对象槽位)可被限制为存储类型值字符
串,即简单的字符序列。另一方面,应用可以支持各种其他类型,诸如整数、布尔值、日期、日
历等等。由于将应用对象属性的值被转换为字符串,所以他们能够蔓延到注册表对象的相
应属性,反之亦然。 在发明的又一方面中,至少一个注册表对象可通过一个或多个关联对象 (association object)而与至少一个第二注册表对象相关联,并且至少一个应用对象可通 过一个或多个聚集(aggregation)和/或依赖(d印endency)关系而与至少一个第二应用 对象相关联,并且,映射可以包括一个或多个关联对象到一个或多个聚集和/或依赖关系 的映射。 此外,至少一个注册表对象可通过一个或多个分类对象而与SOA注册表的至少一 个概念相关联,至少一个应用对象可通过一个或多个聚集和/或组成关系而与至少一个第 二应用对象相关联,并且映射可以包括一个或多个分类对象到一个或多个聚集和/或组成 关系的映射。 另外或者作为替换,至少一个注册表对象可以通过一个或多个分类对象而与至少 一个分类方案(classification scheme)相关联,该至少一个分类方案定义S0A注册表中 的至少一个分类法(taxonomy),并且映射可以包括至少一个注册表对象到相应至少一个应 用对象的映射。
此外,至少一个第二注册表对象可通过一个或多个分类对象而与至少一个概念相 关联,该至少一个概念是至少一个分类法中的子概念。另一方面,至少一个第二应用对象可 通过继承(inheritance)关系而与至少一个应用对象相关联,并且该映射可以包括至少一 个第二注册表对象到至少一个第二应用对象的映射。 可以看到,JAXR信息模型可以定义XML注册表中的注册表对象之间的各种关系概 念,例如关联、分类和分类法(即分类方案)。这些概念可被映射到应用域的合适概念上,例 如聚集、组成、依赖和继承关系。在以下详细的描述中将进一步说明具体的JAXR概念、应用 概念以及映射。 在发明的一个方面中,步骤b.可以包括在SOA注册表中创建与至少一个应用对象 相对应的至少一个注册表对象的步骤。此外,步骤b.可以包括在SOA注册表中查询与至少 一个应用对象相对应的至少一个注册表对象的步骤。这两个方面允许应用在S0A注册表中 创建新的条目(即新的注册表对象)以及查找现有的注册表对象。 在发明的另一方面中,映射的定义是基于一组预定义的映射规则的,并且该方法 还包括定义至少一个新的映射规则的步骤。如以上所说明的,该方法提供用于将JAXR信息 模型的概念映射到应用的概念上的映射规则。为了使得能够将映射规则扩展到其他概念, 可以定义新的映射规则。这确保了例如自定义应用能够提供最初并非由该方法提供的映射 规则的其自己实现方式。然后,该方法可以使用这些自定义映射规则来处理自定义映射,以 使得该方法可以灵活地适应于新的自定义概念和信息模型。 在又一方面中,至少一个应用对象适合于仅当属性或关系被至少一个应用所访问 时加载属性或关系。因此,可能直到属性或关系实际被应用访问时才将属性或关系加载到 应用对象。这在加载具有许多属性和关系的复杂应用对象或者具有大量数据的应用对象的 时候尤为有利,这些应用对象通常将需要应用程序中的大量的处理能力和存储器。这对于 组成注册表对象(即,包括其他对象的对象)也是有利的。 在发明的又一方面中,至少一个应用对象是Java Bean并且应用对象类型是Java Bean的接口定义。Java Bean是包括许多类和接口的特定类型的Java程序。在以下详细 描述中将说明Java Bean概念。 最后,发明还涉及一种包括用于执行任意上述方法的指令的计算机程序。


在以下的详细描述中,参考以下附图进一步描述本发明当前优选的实施例
图1 :根据现有技术、应用访问SOA注册表的示意图;
图2 :本发明的一个实施例的示意图; 图3 :属性和关系的JAXR概念以及相应的应用概念的概图; 图4 :应用对象属性和注册表对象属性之间的映射的更详细视图; 图5 :应用对象关系和注册表对象关系之间的映射的更详细视图; 图6 :应用对象类型层级和注册表对象分类法之间的映射的更详细视图; 图7 :示出RegistryBean的主要类型的类图; 图8 :示出映射类的主要类型的类图; 图9 :示出RegistryBean的注解的主要类型的类图;以及
图10 :示出示例性Java bean的创建和更新的序列图。
具体实施例方式
以下,将针对图2所示意性示出的情况来描述本发明当前优选的实施例。可以看 到,例如可以是XML注册表的SOA注册表2包括注册表对象20。图2还示出假定用于操 纵SOA注册表2中的注册表对象20的应用1。在现有技术中(如图1所示),应用1可以 直接利用用于XML注册表的JavaAPI(JAXR)40(如图1中箭头所示)。如以上已经描述的, JAXR 40是用于访问各种类型的S0A注册表(例如UDDI和ebXML注册表)的应用编程接口 (API),其是非常一般性的且强大的,但是具有高的复杂性级别。因此,图1所示的现有技术 方法可能由于JAXR 40的复杂性而在应用1中导致复杂的且容易出错的应用代码。
相比之下,图2所示的本发明的方法隐藏了 JAXR 40的复杂性,并且允许应用1以 更高效且简单的方式来操纵注册表对象20。这是以下述方式实现的应用1设有应用对象 IO,应用对象10用作注册表对象20的一种代理。应用1对应用对象10的操纵引起对相应 的注册表对象20的相关操纵,例如应用对象IO可以在内部利用JAXR 40(如图1的水平箭 头所示),从而对应用1隐藏了 JAXR40的复杂性。 JAXR 40为SOA注册表2中的注册表对象定义信息模型,也就是,其定义注册表对 象20可以包括某些类型的属性和与其他注册表对象的关系。另一方面,取决于应用1的具 体实现方式,应用l可以定义属性和关系的不同概念。因此,本发明将JAXR信息模型概念 映射到应用1的相关概念。 以下,首先概括地描述映射概念,然后通过JAXR概念到例如在申请人的 CentraSite中使用的Java bean的概念的一种具体映射(参见图3)来说明映射概念。 CentraSite是一种用于对SOA应用的开发的SOA支配和寿命周期管理的平台。然而,应当 认识到,Java bean仅是应用1的各种实现方式中的一种,并且本发明的有利概念可容易地 适用于其他编程语言。因此,本发明不限于像CentraSite或JAXR那样的具体产品,而是也 可以用在其他情况中。此外,尽管图2仅示出了一个示例性注册表对象20和相应的应用对 象IO,但是应当认识到,本发明可针对SOA注册表2中任意数量的对象而工作。
将注册表对象映射到应用对象 通过图2所示的映射30来确定哪一个应用对象10是哪一个注册表对象20的代 理。映射30是在类型级别上定义的,即,在应用对象类型110和注册表对象类型220之间 定义的。从而,应用对象10(其是应用对象类型110的一个实例)用作注册表对象20(其 是注册表对象类型220的一个实例)的一种代理。
以下代码示出了使用Java注解的映射30的一个具体示例 可以看到,接口 Item(项目)(对应于应用对象类型110)的接口定义是通过@ RegistryObject注解来作注解的,@RegistryObject注解以宣告方式经由objectTypeName 参数而将Item接口映射到相应的注册表对象类型220(指定为仏ttp:〃namespaces.
7CentraSite. com/csaf}Item).
映射属件 JAXR信息模型包括注册表对象的至少三种属性概念JAXR对象属性、JAXR对象 槽位以及JAXR定义的对象类型的属性(即,特定于JAXR定义的对象类型的属性,与一般 JAXR对象类型"RegistryEntry"的一般性属性(诸如"name(名称)"或"description(描 述)")相对)。JAXR对象槽位提供一种在运行时向注册表对象添加任意性质的动态方式, 这允许了信息模型内的可扩展性。另一方面,应用中例如像Java bean那样的应用对象包 括bean属性和相应的获取操作和设置操作以读取和操纵bean属性。 图4示出了应用1中的应用对象10如何包括属性100。属性100通过映射30而 被映射到SOA注册表2中相应注册表对象20所包含的相应属性200。应当认识到,在技术 上,属性是在类型级别上(即,在应用对象类型110中)定义的并且在对象级别上例示的。 以下,为了简单起见而仅描述对象级别。 因此,可通过如下所示的直接属性到属性映射(direct property-to-propertymapping)而将标准JAXR注册表对象属性映射到bean属性
@Property
String getDescription (); 可以看至IJ,应用对象10的bean属性description (描述)(由其获取操作 getDescription ()表示)被映射到相应的JAXR注册表对象属性。由于在没有参数的情况 下使用tProperty注解,所以在缺省情况下可以将bean属性description映射到具有相同 名称的JAXR注册表对象属性。在具有不同名称的JAXR注册表对象属性被做为目标的情况 下,可以相应地使用形式为@Property (target = "anotherRegistry0bjectProperty,,)的 注解。 此外,可以将JAXR对象槽位映射到bean属性,像以下代码清单中那样
@Slot(name=〃 {http://namespaces. CentraSite. com/csaf} shortName〃 )
String getShortName (); JAXR 40可以仅允许对象槽位具有字符串值。然而,Java bean可以利用许多其他 属性类型,像整数、布尔值、日期、日历等等。因此,优选地将bean属性转换为字符串值。
可以使用类似于以下描述的专用注解来将JAXR定义的对象类型的属性(S卩,某些 特定于JAXR的类型的JAXR注册表对象属性(例如JAXR标准所定义的Tel印honeNumber 或者PersonName))映射到bean属性
@TelephoneNumbers
Tel印honeNumbers getTel印hone () 1 ;
映射关系 注册表对象之间的JAXR关系可以通过三个对象来表示,例如源注册表对象可以 通过关联对象而与目标注册表对象相关。该概念在图5中描述,其中注册表对象20通过关 联对象25而与注册表对象21相关联。 另一方面,应用1可以知道两个对象所表示的关系,例如应用对象IO通过聚集或 依赖关系15而与应用对象11相关联,其中聚集或依赖关系15不是对象。在Java bean的 环境中,聚集关系可以由Java bean(其表示应用对象10)的bean属性的获取操作表示,其中获取操作的返回值确定目标应用对象(应用对象11)。以下代码清单说明了这方面
@Association(type =〃 HasAction〃 ,targetType = Action, class,
m即pedTo = M即pedTo. ASSOCIATION—OBJECT) List〈Action〉getActions(); 可以看到,通过将tAssociation注解的m即pedTo参数设置为关联的目标对象, bean属性action (动作)(由其获取操作getActions ()表示)被映射到相应的JAXR关联 对象本身。type参数确定关联对象的类型(即,表示关联的JAXR概念)并且targetType 参数指示关联目标的类型,即,作为关联目标的bean的类型。在该示例中,bean的类型被 映射到关联对象。作为替换,可以使用m即pedTo = M即pedTo. ASS0CIATI0N_TARGET,因为 targetType参数指定被映射到关联目标的bean的类型。另外,可以在被映射到关联的bean 内使用tAssociationTarget注解,从而指定以该注解进行注解的属性被映射到相应关联 的目标对象。应当认识到,以上映射针对应用域中的聚集和依赖概念二者。在实现方式级 别上,这两个概念之间不存在清楚的边界,但是该区别在相当程度上基于应用正在如何处 理bean属性。 此外,JAXR信息模型可以包括分类关系,其利用某一概念对注册表对象进行分类。 为此,在图5中,注册表对象20通过分类对象26而与概念22相关。 另一方面,应用l可能不知道分类的概念。因此,同样如图5所示,分类对象26被 映射到应用对象10和11之间的聚集或组成关系16。在Java bean的环境中,这可以通过 OClassification和@Classif icationConc印t注解来实现,如以下代码清单所示
0Classification(classificationScheme = 〃 My Taxonomy〃 ,
conceptPath =〃 Root Concept/Concept/Subconcept〃 , targetType = Subconcept. class) List〈Subconc印t〉getSubconc印ts (); 0Classification(classificationScheme = 〃 My Taxonomy〃 ,
conceptPath =〃 Root Conc印t/Conc印t/Subconc印t2〃 ) Subconc印t2getSubconc印t2 (); 从以上示例性清单可以看到,JAXR信息模型包括称为"分类法"的概念,其以树状 结构对S0A注册表的对象进行分类或归类。在JAXR信息模型中,分类法树的根由分类方案 表示并且分类法树的子节点由概念来表示。然后,通过概念之一对注册表对象的分类确定 该注册表对象被分类在分类法的哪一级别上。例如,Geography分类方案能够提供这样的 分类法系统其定义了具有大陆、大陆内的国家、国家内的州(或者省或内部的子划分)以 及州内的市和城镇的地理结构。 因此,以上代码清单指示subconc印t应用对象属性到所有分类的映射,其中JAXR 概念是分类法"My Taxonomy,,中的"Root Conc印t/Conc印t/Subconc印t"。作为替换,通过 使用参数m即pedTo = M即pedTo. TARGET_C0NCEPT,该映射可被应用到概念本身。存在对正 被映射到属性的分类进行过滤的各种方式概念路径、概念关键字、母路径、或者母关键字。 在后两种情况中,可以规定母概念(conc印t parent)。这通常在以下情况中使用,即分类从 预定义的一组替换物中选择元素的情况。此外,使用targetType参数来指定作为分类目标 的应用对象。在单个结果对象的情况中,不需要指定目标类型,因为结果类型(以上实例中的getSubcon印t2)可以作为缺省值而被使用。 此外,可以在映射到分类本身的bean中使用@ClassificationConc印t注解,以便 将bean属性映射到该分类的底层概念,如以下代码清单所示
@Registryobject (objectTypeKey = Constants 图6的示例示出了 SOA注册表2的分类法29,其中(通过分类27)将注册表对象 20分类为位于分类法29的根部的分类方案50并且(通过分类28)将注册表对象21分类 为分类法29的子概念51。 另一方面,应用可能不知道分类法的概念,但在应用对象(或者分别地,应用对象 类型)之间提供继承的概念。图6示出了应用10如何通过继承关系17而与应用对象11 相关联。在编程语言层面上,这将意味着与应用对象11相对应的应用对象类型是应用对象 类型110的子类型,从而继承其所有的属性和关系,B卩,类型构建了一种类型层级。
如图6所示,分类法和类型层级之间的映射可以按下述方式实现应用对象10和 11分别根据它们在分类法29内的级别以及继承层级而被各自映射到注册表对象20和21 。 在Java bean的环境下,以下的代码清单示出了该映射30可以如何通过Java注解进行定 义





.OBJECT_TYPE_KEY_Classification)
public interface Finding extends RegistryBean 0Classif icationConc印t public MyConc印tBean getConc印tBean() 5
鹏寸脆















@Registry0bj ect(obj ectTypeName =
〃 {http://namespaces. CentraSite. com/csaf}Action〃 ) 0Classifiedlnstances(
beanType = Ac 0Classifiedlnstance(
■eme = 〃 CSAF_Taxonomy 〃 Classificationlnstances.
■eme = 〃 CSAF_Taxonomy 〃 Classificationlnstances.
public interface Action extends RegistryBean {}[O川] @RegistryObj ect(obj ectTypeName = 〃 {http://namespaces. CentraSite. com/csaf}Action〃 ) public interface Actionl extends Action {
OClassifiedlnstanceProperty @Slot(name=〃 {http://namespaces.CentraSite.com/ csaf} customerPro j ect〃 ) String getCustomerPro j ect (); } 可以看到,应用对象11的应用对象类型(接口 Actionl)是由extends关键字确
定的应用对象类型IIO(接口 Action)的子类型。此外,如以上已经描述的,接口 Action 通过@Registry0bject注解而被映射到相应的注册表对象类型"仏ttp:〃namespaces. CentraSite. com/csaf}Action,,。 此夕卜,接口 Action的注解@Classifiedlnstances描 述了分类法29如何被映射到(通过Action和Actionl形成的)bean的类层级,其中该 注解包括两个@ClassiftedInstance注解,这两个@Classifiedlnstance注解指定从来 自分类法的概念到来自bean类层级的bean的映射。子类型Actionl进一步包括注解@ ClassifiedInstancePropery,用于访问被表示为特定于类型的分类对象的一部分的属性。 classificationScheme参数指定分类方案的名称,其中用于对该注册表对象进行分类的概 念属于该分类方案(如以上所说明的,分类方案表明分类法)。conc印tPath参数唯一表明 分类法中的概念。最后,BeanType参数对被例示并被映射到底层JAXR注册表对象的bean 的类型进行指定。
方法的应用情形 通过利用上述的映射概念中一个或多个,应用1可以通过相应的应用对象10而高 效地操纵注册表对象20。例如,通过使用本发明的方法,可以高效地实现创建自定义类型的 新注册表对象并设置其名称属性的任务,如以下代码清单所说明的 BeanPool pool = context. getBeanPool (); Application app = pool, create (Application, class); app. setName(" My Application Number Demo Test 2〃 ); pool, update (即p) 可以看到,应用l设有应用对象10app,其是应用对象类型110A卯lication的一种
实例。然后,应用1通过调度相应的setName()操作来设置应用对象10的name属性。如 上面已经说明的,通过以下所注解的对应用对象类型110 (Application)的类型定义来实 现应用对象类型110到相应注册表对象类型220的映射30以及name属性的映射30 : @Registry0bject(objectTypeName = BeanPoolExample. 0BJ_TYPE_APPLICATI0N) public interface Application extends RegistryBean{ @Property public String getName (); public void setName(String name); }
可以看到,应用对象类型110 (Application)经由@RegistryObject注解而映射到 相应的注册表对象类型220,并且名称属性lOO(getName())经由@Property注解而被映射 到注册表对象类型220 (和注册表对象20)的相应对象类型200。 为了处理以上所定义的映射,优选地以框架意义上的计算机程序来实现本发明 的方法。 一种示例性的框架例如可以包括管理会话中的bean寿命周期的BeanPool (bean 池),例如其创建应用l所请求的bean。其还可以用作会话bean缓存。此外,其可以为 bean提供CRUD接口 (创建、读取、更新、删除)以及各种查找操作。bean到JAXR的映射 器(Beans-to-JAXR-Mapper)可以处理bean与JAXR注册表对象之间的上述映射,其中该 映射器在被BeanPool调用时对定义了映射的Java注解进行解析。最后,注册表访问器 (RegistryAccessor)可以对JAXR操作进行封装,并且可适合于供Ma卯er类使用。说明当 创建和更新bean时上述框架的联网的示例性序列图在图10中示出。 上述bean是示例性框架的体系结构的中心点。这些bean优选地仅包括数据而不 包括处理逻辑。在该示例性框架中,bean需要对所提供的基类类进行扩展,即,它们需要实 现RegistryBean接口并且扩展其缺省的实施方式DynamicRegistryBean。 bean可以或多 或少地遵循值对象(Value0bject)和数据传送对象(Data Transfer Object)设计模式,以 对数据进行封装并将其经由应用层而传输。这种应用层的一种典型示例是表示层、商业逻 辑层和数据层,这是对现代的应用经常使用的一种体系结构中。表示层可以处理应用向用 户的可视化。商业逻辑可以对应用内的所有商业规则进行封装。最后,数据层可以对在SOA 注册表中检索和存储数据进行处理。所有的层需要交互以便提供应用的功能,通常是表示 逻辑与商业逻辑交互并且商业逻辑与数据层交互。在该情况下,层之间的信息可以按bean 的形式进行传输,即,bean "传播"经过这些层。 图7中的类图概述了包括示例性框架中的基本bean层级的主类。主接口是 RegistryBean。图7示出了两种实现方式,作为抽象类的AbstractRegistryBean和作为具 体实现方式的DynamicRegistryBean。这些类可被应用使用以促进应用bean的实现。加于 应用bean之上的限制仅仅是它们不得不扩展RegistryBean接口 。 如以上已经说明的,通过在示例性框架中使用被宣告为Java注解的映射规则而 提供将bean映射到JAXR注册表对象的机制,bean和JAXR注解之间的映射隐藏了 JAXR的 复杂性。图8的类图概述了示例性框架中映射器(其处理映射规则)的主类和接口。可以 看到,两个主接口是BeanMa卯er和PropertyMapper 。前者处理bean到注册表对象的映射, 后者将bean属性映射到JAXR注册表对象属性、槽位、关联、分类等等,如以上已经描述的。 为此,两个接口定义两种方法,tojaxr()和toBean(),这两种方法在两个向上相应地处理 映射。图8中的其他类示出了这些接口的具体实现方式,例如SlotMa卯er是一种处理bean 属性到槽位的映射的PropertyMapper。 DefaultBeanMapper是用于将bean (RegistryBean) 映射到JAXR注册表对象的BeanM即per的缺省实现方式。 此外,图8中的CustomM即per和AnotherCustomM即per描述了实现自定义映射的 特定于应用的映射器。这说明了本发明的一个非常有利的特征,也就是其可扩展性机制。例 如,应用可以引入自身的注解和相应的映射规则,并且可以配置框架以当bean正被以自定 义注解进行注解的时候例示和使用自定义映射器。图9示出了对在示例性框架中实现的上 述注解类型的概述。
根据上述本发明的方法的框架可以提供许多另外的特征,这些特征在以下说明。
在bean (通过其属性和关系)具有对相当数量的其他bean的参考的某些情况下,当将bean加载到应用的存储器中时可能需要巨大量的数据。因此,直到应用实际请求bean的关系和属性的时候,框架可能才将它们加载。在框架的环境下,通过使用代理模式,可以透明地或相对独立于其他功能(除了映射器和bean池)来实现该概念。然后BeanPool可能具有将代理类附着到如下bean的责任当应的获取操作被调用时,该bean将加载数据。
此外,可能希望框架在多个用户同时访问相同资源的情况下工作。为了使得复杂性最小化,框架因此可以依赖于并使用底层的JAXR层所提供的功能,例如事务的支持、锁定、线程安全性等等。
1权利要求
一种通过应用(1)来操纵SOA注册表(2)的至少一个注册表对象(20)的方法,所述至少一个注册表对象(20)可经由用于XML注册表的Java API(JAXR)(40)而被访问,该方法包括以下步骤a.定义至少一个注册表对象类型(220)和至少一个应用对象类型(110)之间的映射(30),其中映射(30)由一个或多个Java注解来描述;b.例示所述至少一个应用对象类型(110),以向所述应用(1)提供与所述至少一个注册表对象(20)相对应的至少一个应用对象(10);以及c.通过所述应用(1)来操纵所述至少一个应用对象(10),该操纵通过所述JAXR(40)而引起对相应的所述至少一个注册表对象(20)的相关操纵。
2. 如权利要求l所述的方法,其中,所述至少一个注册表对象(20)包括至少一个属性 (200),并且所述映射(30)包括所述至少一个属性(200)到相应的应用对象(10)的至少一 个属性(100)的映射。
3. 如权利要求2所述的方法,其中,所述至少一个注册表对象(20)的至少一个属性 (200)能够保持至少一个字符串值,并且,到相应的应用对象(10)的至少一个属性(100)的 所述映射(30)包括到字符串值的转换。
4. 如权利要求1至3中任一项所述的方法,其中,所述至少一个注册表对象(20)通过 一个或多个关联对象(25)而与至少一个第二注册表对象(21)相关联,并且所述至少一个 应用对象(10)通过一个或多个聚集和/或依赖关系(15)而与至少一个第二应用对象(11) 相关联,并且,所述映射(30)包括所述一个或多个关联对象(25)到所述一个或多个聚集和 /或依赖关系(15)的映射。
5. 如权利要求1至4中任一项所述的方法,其中,所述至少一个注册表对象(20)通过 一个或多个分类对象(26)而与所述SOA注册表(2)的至少一个概念(22)相关联,并且所 述至少一个应用对象(10)通过一个或多个聚集和/或组成关系(16)而与至少一个第二应 用对象(11)相关联,并且,所述映射(30)包括所述一个或多个分类对象(26)到所述一个 或多个聚集和/或组成关系(16)的映射。
6. 如权利要求1至5中任一项所述的方法,其中,所述至少一个注册表对象(20)通 过一个或多个分类对象(27)而与至少一个分类方案(50)相关联,所述至少一个分类方案 (50)定义所述SOA注册表(2)中的至少一个分类法(29),并且,所述映射(30)包括所述至 少一个注册表对象(20)到相应的至少一个应用对象(10)的映射。
7. 如权利要求6所述的方法,其中,至少一个第二注册表对象(21)通过一个或多个分 类对象(28)而与至少一个概念(51)相关联,所述至少一个概念(51)是所述至少一个分类 法(29)中的子概念,至少一个第二应用对象(11)通过继承关系(17)而与所述至少一个应 用对象(10)相关联,并且所述映射(30)包括所述至少一个第二注册表对象(21)到所述至 少一个第二应用对象(11)的映射。
8. 如权利要求l至7中任一项所述的方法,其中,步骤b.包括在所述SOA注册表(2) 中创建与所述至少一个应用对象(10)相对应的至少一个注册表对象(20)的步骤。
9. 如权利要求l至8中任一项所述的方法,其中,步骤b.包括为在所述SOA注册表(2) 中查询与所述至少一个应用对象(10)相对应的至少一个注册表对象(20)的步骤。
10. 如权利要求1至9中任一项所述的方法,其中,对所述映射(30)的定义是基于一组预定义的映射规则的,并且该方法还包括定义至少一个新的映射规则的步骤。
11. 如权利要求1至10中任一项所述的方法,其中,仅当属性(100)或关系(15,16, 17)时被所述至少一个应用(1)访问时,所述至少一个应用对象(10)适合于加载所述属性 (100)或关系(15, 16, 17)。
12. 如权利要求1至11中任一项所述的方法,其中,所述至少一个应用对象(10)是 Java Bean,并且所述应用对象类型(110)是Java Bean的接口定义。
13. —种包括用于实现权利要求1至12中任一项的指令的计算机程序。
全文摘要
本发明涉及操纵SOA注册表中的对象的方法,并公开了一种通过应用(1)来操纵SOA注册表(2)的至少一个注册表对象(20)的方法,该至少一个注册表对象(20)可通过用于XML注册表的Java API(JAXR)(40)而被访问,该方法包括以下步骤a.定义至少一个注册表对象类型(220)和至少一个应用对象类型(110)之间的映射(30),其中映射(30)由一个或多个Java注解来描述;b.例示至少一个应用对象类型(110)以向应用(1)提供与至少一个注册表对象(20)相对应的至少一个应用对象(10);以及c.通过应用(1)来操纵至少一个应用对象(10),该操纵通过JAXR(40)而引起对相应的至少一个注册表对象(20)的相关操纵。
文档编号G06F9/44GK101719059SQ200910211668
公开日2010年6月2日 申请日期2009年9月18日 优先权日2008年9月18日
发明者乔陈·韦德曼, 亚历山大·潘克维, 卓根米尔·尼科洛维, 哈若德·斯彻宁 申请人:软件股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1