国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      操縱soa注冊表中的對象的方法

      文檔序號:6583160閱讀:312來源:國知局
      專利名稱:操縱soa注冊表中的對象的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及操縱SOA注冊表(registry)中的對象的方法。
      背景技術(shù)
      現(xiàn)代的應(yīng)用(application)(特別是在面向服務(wù)的體系結(jié)構(gòu)(SOA)的環(huán)境中)經(jīng) 常包括進行協(xié)作以提供該應(yīng)用的整體功能的多個獨立組件。為此,SOA注冊表可用于發(fā)布、 發(fā)現(xiàn)和利用這些組件。在"電子黃頁"的意義上,SOA注冊表通常是一種存儲對SOA組件的 描述的共享資源,以及在SOA注冊表中查詢某些組件的手段。此外,SOA注冊表不僅能夠存 儲對SOA中常用的web服務(wù)的描述,而且可以通過定義自定義類型(custom type)來描述 任意種類的組件。 在現(xiàn)有技術(shù)中,存在定義了 SOA注冊表的內(nèi)容的結(jié)構(gòu)和信息模型的許多注冊表規(guī) 范,例如ebXML和UDDI。為了使得應(yīng)用能夠訪問SOA注冊表的內(nèi)容(即,發(fā)布新的組件、查 找現(xiàn)有的組件等等),現(xiàn)有技術(shù)中已知的是應(yīng)用編程接口 (API),最流行的是用于XML注冊 表的Java API (JAXR)。 JAXR是一種一般性的API,這是因為其提供對各種類型的SOA注冊表的訪問,例如 對符合上述規(guī)范的SOA注冊表的訪問。因此,JAXR定義了一種信息模型,該信息模型試圖 對不同注冊表規(guī)范的不同信息模型進行統(tǒng)一。 然而,由于JAXR是一般性的這一事實,利用了 JAXR的對應(yīng)用進行編程的任務(wù)是非
      常復(fù)雜的并且需要對底層的JAXR信息模型的詳細(xì)了解。例如,在SOA注冊表中創(chuàng)建某一自
      定義類型的注冊表對象的過程需要應(yīng)用執(zhí)行類似于以下的多個步驟創(chuàng)建一般性的注冊表
      對象,創(chuàng)建自定義概念以及通過分類對象而將注冊表對象與概念相鏈接。當(dāng)訪問現(xiàn)有的注
      冊表對象時,不得不定義相似的步驟。每次創(chuàng)建和搜索新的注冊表對象時通常不得不重復(fù)
      這些步驟,這樣效率低下并且容易出錯,使得被編程的應(yīng)用的操作很可能失敗。 鑒于以上,以下問題因而是本發(fā)明的技術(shù)問題改善應(yīng)用通過JAXR對SOA注冊表
      的訪問,以使得對注冊表對象的操縱更加高效且更少出錯,并從而至少部分地克服現(xiàn)有技
      術(shù)的缺點。

      發(fā)明內(nèi)容
      根據(jù)本發(fā)明的一個實施例,該問題是通過一種通過應(yīng)用來操縱SOA注冊表的至少 一個注冊表對象的方法來解決的,該至少一個注冊表對象可通過用于XML注冊表的Java API (JAXR)來訪問。在一個實施例中,該方法包括以下步驟 a.定義至少一個注冊表對象類型和至少一個應(yīng)用對象類型之間的映射,其中該映 射通過一個和多個Java注解(annotation)來描述; b.例示至少一個應(yīng)用對象類型以向應(yīng)用提供與該至少一個注冊表對象相對應(yīng)的 至少一個應(yīng)用對象;以及 c.通過應(yīng)用來操縱該至少一個應(yīng)用對象,該操縱經(jīng)由JAXR而引起對相應(yīng)的至少一個注冊表對象的相關(guān)操縱。 因此,定義一種映射,該映射將注冊表對象類型映射到應(yīng)用對象類型,S卩,應(yīng)用對 象(其是應(yīng)用對象類型的實例)用作SOA注冊表中注冊表對象(其是注冊表對象類型的實 例)的一種代理(surrogate)。該映射是由一個或多個Java注解進行描述的,這允許一種 簡明并且易讀的可靈活適應(yīng)的映射定義,如在以下的詳細(xì)描述中進一步概述的。該映射通 常是一種l : 1映射,即,其將一個應(yīng)用對象類型映射到一個相應(yīng)注冊表對象類型。然而, 在本發(fā)明中,l : n的映射也是可能的,S卩,將一個應(yīng)用對象類型映射到多于一個的注冊表 對象類型,或者甚至可以定義m : n映射。 然后,向應(yīng)用提供至少一個所例示的應(yīng)用對象。通過應(yīng)用對應(yīng)用對象的操縱通過 JAXR而引起對相應(yīng)的至少一個注冊表對象的相關(guān)操縱。這可以實現(xiàn),因為應(yīng)用對象優(yōu)選地 向應(yīng)用提供一組簡單的操作并且在內(nèi)部利用復(fù)雜的JAXR,從而隱匿了從應(yīng)用來訪問JAXR 的繁瑣細(xì)節(jié)。 在發(fā)明的一個方面中,至少一個注冊表對象可以包括至少一個屬性,并且映射可 以包括至少一個屬性到相應(yīng)應(yīng)用對象的至少一個屬性的映射。 JAXR信息模型可以定義注冊表對象的屬性的不同概念,例如,對象屬性、對象槽位 (slot)以及JAXR定義的對象類型的屬性,這將在以下的詳細(xì)描述進行描述。然而,一種應(yīng) 用可以包括不同的屬性概念,例如,可通過獲取(get)操作和設(shè)置(set)操作而訪問的私有 性質(zhì)(attribute)。因此,JAXR屬性概念被映射到應(yīng)用屬性概念。該映射的目的是,當(dāng)應(yīng)用 操縱應(yīng)用對象時(即,通過設(shè)置應(yīng)用對象的屬性值),應(yīng)用對象例如通過利用JAXR而能夠設(shè) 置相應(yīng)注冊表對象的相應(yīng)屬性。 在發(fā)明的另一方面,至少一個注冊表對象的至少一個屬性可以具有至少一個字符
      串值,并且到相應(yīng)應(yīng)用對象的至少一個屬性的映射包括到字符串值的轉(zhuǎn)換。 JAXR信息模型中的某些類型的屬性(例如對象槽位)可被限制為存儲類型值字符
      串,即簡單的字符序列。另一方面,應(yīng)用可以支持各種其他類型,諸如整數(shù)、布爾值、日期、日
      歷等等。由于將應(yīng)用對象屬性的值被轉(zhuǎn)換為字符串,所以他們能夠蔓延到注冊表對象的相
      應(yīng)屬性,反之亦然。 在發(fā)明的又一方面中,至少一個注冊表對象可通過一個或多個關(guān)聯(lián)對象 (association object)而與至少一個第二注冊表對象相關(guān)聯(lián),并且至少一個應(yīng)用對象可通 過一個或多個聚集(aggregation)和/或依賴(d印endency)關(guān)系而與至少一個第二應(yīng)用 對象相關(guān)聯(lián),并且,映射可以包括一個或多個關(guān)聯(lián)對象到一個或多個聚集和/或依賴關(guān)系 的映射。 此外,至少一個注冊表對象可通過一個或多個分類對象而與SOA注冊表的至少一 個概念相關(guān)聯(lián),至少一個應(yīng)用對象可通過一個或多個聚集和/或組成關(guān)系而與至少一個第 二應(yīng)用對象相關(guān)聯(lián),并且映射可以包括一個或多個分類對象到一個或多個聚集和/或組成 關(guān)系的映射。 另外或者作為替換,至少一個注冊表對象可以通過一個或多個分類對象而與至少 一個分類方案(classification scheme)相關(guān)聯(lián),該至少一個分類方案定義S0A注冊表中 的至少一個分類法(taxonomy),并且映射可以包括至少一個注冊表對象到相應(yīng)至少一個應(yīng) 用對象的映射。
      此外,至少一個第二注冊表對象可通過一個或多個分類對象而與至少一個概念相 關(guān)聯(lián),該至少一個概念是至少一個分類法中的子概念。另一方面,至少一個第二應(yīng)用對象可 通過繼承(inheritance)關(guān)系而與至少一個應(yīng)用對象相關(guān)聯(lián),并且該映射可以包括至少一 個第二注冊表對象到至少一個第二應(yīng)用對象的映射。 可以看到,JAXR信息模型可以定義XML注冊表中的注冊表對象之間的各種關(guān)系概 念,例如關(guān)聯(lián)、分類和分類法(即分類方案)。這些概念可被映射到應(yīng)用域的合適概念上,例 如聚集、組成、依賴和繼承關(guān)系。在以下詳細(xì)的描述中將進一步說明具體的JAXR概念、應(yīng)用 概念以及映射。 在發(fā)明的一個方面中,步驟b.可以包括在SOA注冊表中創(chuàng)建與至少一個應(yīng)用對象 相對應(yīng)的至少一個注冊表對象的步驟。此外,步驟b.可以包括在SOA注冊表中查詢與至少 一個應(yīng)用對象相對應(yīng)的至少一個注冊表對象的步驟。這兩個方面允許應(yīng)用在S0A注冊表中 創(chuàng)建新的條目(即新的注冊表對象)以及查找現(xiàn)有的注冊表對象。 在發(fā)明的另一方面中,映射的定義是基于一組預(yù)定義的映射規(guī)則的,并且該方法 還包括定義至少一個新的映射規(guī)則的步驟。如以上所說明的,該方法提供用于將JAXR信息 模型的概念映射到應(yīng)用的概念上的映射規(guī)則。為了使得能夠?qū)⒂成湟?guī)則擴展到其他概念, 可以定義新的映射規(guī)則。這確保了例如自定義應(yīng)用能夠提供最初并非由該方法提供的映射 規(guī)則的其自己實現(xiàn)方式。然后,該方法可以使用這些自定義映射規(guī)則來處理自定義映射,以 使得該方法可以靈活地適應(yīng)于新的自定義概念和信息模型。 在又一方面中,至少一個應(yīng)用對象適合于僅當(dāng)屬性或關(guān)系被至少一個應(yīng)用所訪問 時加載屬性或關(guān)系。因此,可能直到屬性或關(guān)系實際被應(yīng)用訪問時才將屬性或關(guān)系加載到 應(yīng)用對象。這在加載具有許多屬性和關(guān)系的復(fù)雜應(yīng)用對象或者具有大量數(shù)據(jù)的應(yīng)用對象的 時候尤為有利,這些應(yīng)用對象通常將需要應(yīng)用程序中的大量的處理能力和存儲器。這對于 組成注冊表對象(即,包括其他對象的對象)也是有利的。 在發(fā)明的又一方面中,至少一個應(yīng)用對象是Java Bean并且應(yīng)用對象類型是Java Bean的接口定義。Java Bean是包括許多類和接口的特定類型的Java程序。在以下詳細(xì) 描述中將說明Java Bean概念。 最后,發(fā)明還涉及一種包括用于執(zhí)行任意上述方法的指令的計算機程序。


      在以下的詳細(xì)描述中,參考以下附圖進一步描述本發(fā)明當(dāng)前優(yōu)選的實施例
      圖1 :根據(jù)現(xiàn)有技術(shù)、應(yīng)用訪問SOA注冊表的示意圖;
      圖2 :本發(fā)明的一個實施例的示意圖; 圖3 :屬性和關(guān)系的JAXR概念以及相應(yīng)的應(yīng)用概念的概圖; 圖4 :應(yīng)用對象屬性和注冊表對象屬性之間的映射的更詳細(xì)視圖; 圖5 :應(yīng)用對象關(guān)系和注冊表對象關(guān)系之間的映射的更詳細(xì)視圖; 圖6 :應(yīng)用對象類型層級和注冊表對象分類法之間的映射的更詳細(xì)視圖; 圖7 :示出RegistryBean的主要類型的類圖; 圖8 :示出映射類的主要類型的類圖; 圖9 :示出RegistryBean的注解的主要類型的類圖;以及
      圖10 :示出示例性Java bean的創(chuàng)建和更新的序列圖。
      具體實施例方式
      以下,將針對圖2所示意性示出的情況來描述本發(fā)明當(dāng)前優(yōu)選的實施例??梢钥?到,例如可以是XML注冊表的SOA注冊表2包括注冊表對象20。圖2還示出假定用于操 縱SOA注冊表2中的注冊表對象20的應(yīng)用1。在現(xiàn)有技術(shù)中(如圖1所示),應(yīng)用1可以 直接利用用于XML注冊表的JavaAPI(JAXR)40(如圖1中箭頭所示)。如以上已經(jīng)描述的, JAXR 40是用于訪問各種類型的S0A注冊表(例如UDDI和ebXML注冊表)的應(yīng)用編程接口 (API),其是非常一般性的且強大的,但是具有高的復(fù)雜性級別。因此,圖1所示的現(xiàn)有技術(shù) 方法可能由于JAXR 40的復(fù)雜性而在應(yīng)用1中導(dǎo)致復(fù)雜的且容易出錯的應(yīng)用代碼。
      相比之下,圖2所示的本發(fā)明的方法隱藏了 JAXR 40的復(fù)雜性,并且允許應(yīng)用1以 更高效且簡單的方式來操縱注冊表對象20。這是以下述方式實現(xiàn)的應(yīng)用1設(shè)有應(yīng)用對象 IO,應(yīng)用對象10用作注冊表對象20的一種代理。應(yīng)用1對應(yīng)用對象10的操縱引起對相應(yīng) 的注冊表對象20的相關(guān)操縱,例如應(yīng)用對象IO可以在內(nèi)部利用JAXR 40(如圖1的水平箭 頭所示),從而對應(yīng)用1隱藏了 JAXR40的復(fù)雜性。 JAXR 40為SOA注冊表2中的注冊表對象定義信息模型,也就是,其定義注冊表對 象20可以包括某些類型的屬性和與其他注冊表對象的關(guān)系。另一方面,取決于應(yīng)用1的具 體實現(xiàn)方式,應(yīng)用l可以定義屬性和關(guān)系的不同概念。因此,本發(fā)明將JAXR信息模型概念 映射到應(yīng)用1的相關(guān)概念。 以下,首先概括地描述映射概念,然后通過JAXR概念到例如在申請人的 CentraSite中使用的Java bean的概念的一種具體映射(參見圖3)來說明映射概念。 CentraSite是一種用于對SOA應(yīng)用的開發(fā)的SOA支配和壽命周期管理的平臺。然而,應(yīng)當(dāng) 認(rèn)識到,Java bean僅是應(yīng)用1的各種實現(xiàn)方式中的一種,并且本發(fā)明的有利概念可容易地 適用于其他編程語言。因此,本發(fā)明不限于像CentraSite或JAXR那樣的具體產(chǎn)品,而是也 可以用在其他情況中。此外,盡管圖2僅示出了一個示例性注冊表對象20和相應(yīng)的應(yīng)用對 象IO,但是應(yīng)當(dāng)認(rèn)識到,本發(fā)明可針對SOA注冊表2中任意數(shù)量的對象而工作。
      將注冊表對象映射到應(yīng)用對象 通過圖2所示的映射30來確定哪一個應(yīng)用對象10是哪一個注冊表對象20的代 理。映射30是在類型級別上定義的,即,在應(yīng)用對象類型110和注冊表對象類型220之間 定義的。從而,應(yīng)用對象10(其是應(yīng)用對象類型110的一個實例)用作注冊表對象20(其 是注冊表對象類型220的一個實例)的一種代理。
      以下代碼示出了使用Java注解的映射30的一個具體示例 可以看到,接口 Item(項目)(對應(yīng)于應(yīng)用對象類型110)的接口定義是通過@ RegistryObject注解來作注解的,@RegistryObject注解以宣告方式經(jīng)由objectTypeName 參數(shù)而將Item接口映射到相應(yīng)的注冊表對象類型220(指定為仏ttp:〃namespaces.
      7CentraSite. com/csaf}Item).
      映射屬件 JAXR信息模型包括注冊表對象的至少三種屬性概念JAXR對象屬性、JAXR對象 槽位以及JAXR定義的對象類型的屬性(即,特定于JAXR定義的對象類型的屬性,與一般 JAXR對象類型"RegistryEntry"的一般性屬性(諸如"name(名稱)"或"description(描 述)")相對)。JAXR對象槽位提供一種在運行時向注冊表對象添加任意性質(zhì)的動態(tài)方式, 這允許了信息模型內(nèi)的可擴展性。另一方面,應(yīng)用中例如像Java bean那樣的應(yīng)用對象包 括bean屬性和相應(yīng)的獲取操作和設(shè)置操作以讀取和操縱bean屬性。 圖4示出了應(yīng)用1中的應(yīng)用對象10如何包括屬性100。屬性100通過映射30而 被映射到SOA注冊表2中相應(yīng)注冊表對象20所包含的相應(yīng)屬性200。應(yīng)當(dāng)認(rèn)識到,在技術(shù) 上,屬性是在類型級別上(即,在應(yīng)用對象類型110中)定義的并且在對象級別上例示的。 以下,為了簡單起見而僅描述對象級別。 因此,可通過如下所示的直接屬性到屬性映射(direct property-to-propertymapping)而將標(biāo)準(zhǔn)JAXR注冊表對象屬性映射到bean屬性
      @Property
      String getDescription (); 可以看至IJ,應(yīng)用對象10的bean屬性description (描述)(由其獲取操作 getDescription ()表示)被映射到相應(yīng)的JAXR注冊表對象屬性。由于在沒有參數(shù)的情況 下使用tProperty注解,所以在缺省情況下可以將bean屬性description映射到具有相同 名稱的JAXR注冊表對象屬性。在具有不同名稱的JAXR注冊表對象屬性被做為目標(biāo)的情況 下,可以相應(yīng)地使用形式為@Property (target = "anotherRegistry0bjectProperty,,)的 注解。 此外,可以將JAXR對象槽位映射到bean屬性,像以下代碼清單中那樣
      @Slot(name=〃 {http://namespaces. CentraSite. com/csaf} shortName〃 )
      String getShortName (); JAXR 40可以僅允許對象槽位具有字符串值。然而,Java bean可以利用許多其他 屬性類型,像整數(shù)、布爾值、日期、日歷等等。因此,優(yōu)選地將bean屬性轉(zhuǎn)換為字符串值。
      可以使用類似于以下描述的專用注解來將JAXR定義的對象類型的屬性(S卩,某些 特定于JAXR的類型的JAXR注冊表對象屬性(例如JAXR標(biāo)準(zhǔn)所定義的Tel印honeNumber 或者PersonName))映射到bean屬性
      @TelephoneNumbers
      Tel印honeNumbers getTel印hone () 1 ;
      映射關(guān)系 注冊表對象之間的JAXR關(guān)系可以通過三個對象來表示,例如源注冊表對象可以 通過關(guān)聯(lián)對象而與目標(biāo)注冊表對象相關(guān)。該概念在圖5中描述,其中注冊表對象20通過關(guān) 聯(lián)對象25而與注冊表對象21相關(guān)聯(lián)。 另一方面,應(yīng)用1可以知道兩個對象所表示的關(guān)系,例如應(yīng)用對象IO通過聚集或 依賴關(guān)系15而與應(yīng)用對象11相關(guān)聯(lián),其中聚集或依賴關(guān)系15不是對象。在Java bean的 環(huán)境中,聚集關(guān)系可以由Java bean(其表示應(yīng)用對象10)的bean屬性的獲取操作表示,其中獲取操作的返回值確定目標(biāo)應(yīng)用對象(應(yīng)用對象11)。以下代碼清單說明了這方面
      @Association(type =〃 HasAction〃 ,targetType = Action, class,
      m即pedTo = M即pedTo. ASSOCIATION—OBJECT) List〈Action〉getActions(); 可以看到,通過將tAssociation注解的m即pedTo參數(shù)設(shè)置為關(guān)聯(lián)的目標(biāo)對象, bean屬性action (動作)(由其獲取操作getActions ()表示)被映射到相應(yīng)的JAXR關(guān)聯(lián) 對象本身。type參數(shù)確定關(guān)聯(lián)對象的類型(即,表示關(guān)聯(lián)的JAXR概念)并且targetType 參數(shù)指示關(guān)聯(lián)目標(biāo)的類型,即,作為關(guān)聯(lián)目標(biāo)的bean的類型。在該示例中,bean的類型被 映射到關(guān)聯(lián)對象。作為替換,可以使用m即pedTo = M即pedTo. ASS0CIATI0N_TARGET,因為 targetType參數(shù)指定被映射到關(guān)聯(lián)目標(biāo)的bean的類型。另外,可以在被映射到關(guān)聯(lián)的bean 內(nèi)使用tAssociationTarget注解,從而指定以該注解進行注解的屬性被映射到相應(yīng)關(guān)聯(lián) 的目標(biāo)對象。應(yīng)當(dāng)認(rèn)識到,以上映射針對應(yīng)用域中的聚集和依賴概念二者。在實現(xiàn)方式級 別上,這兩個概念之間不存在清楚的邊界,但是該區(qū)別在相當(dāng)程度上基于應(yīng)用正在如何處 理bean屬性。 此外,JAXR信息模型可以包括分類關(guān)系,其利用某一概念對注冊表對象進行分類。 為此,在圖5中,注冊表對象20通過分類對象26而與概念22相關(guān)。 另一方面,應(yīng)用l可能不知道分類的概念。因此,同樣如圖5所示,分類對象26被 映射到應(yīng)用對象10和11之間的聚集或組成關(guān)系16。在Java bean的環(huán)境中,這可以通過 OClassification和@Classif icationConc印t注解來實現(xiàn),如以下代碼清單所示
      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信息模型包括稱為"分類法"的概念,其以樹狀 結(jié)構(gòu)對S0A注冊表的對象進行分類或歸類。在JAXR信息模型中,分類法樹的根由分類方案 表示并且分類法樹的子節(jié)點由概念來表示。然后,通過概念之一對注冊表對象的分類確定 該注冊表對象被分類在分類法的哪一級別上。例如,Geography分類方案能夠提供這樣的 分類法系統(tǒng)其定義了具有大陸、大陸內(nèi)的國家、國家內(nèi)的州(或者省或內(nèi)部的子劃分)以 及州內(nèi)的市和城鎮(zhèn)的地理結(jié)構(gòu)。 因此,以上代碼清單指示subconc印t應(yīng)用對象屬性到所有分類的映射,其中JAXR 概念是分類法"My Taxonomy,,中的"Root Conc印t/Conc印t/Subconc印t"。作為替換,通過 使用參數(shù)m即pedTo = M即pedTo. TARGET_C0NCEPT,該映射可被應(yīng)用到概念本身。存在對正 被映射到屬性的分類進行過濾的各種方式概念路徑、概念關(guān)鍵字、母路徑、或者母關(guān)鍵字。 在后兩種情況中,可以規(guī)定母概念(conc印t parent)。這通常在以下情況中使用,即分類從 預(yù)定義的一組替換物中選擇元素的情況。此外,使用targetType參數(shù)來指定作為分類目標(biāo) 的應(yīng)用對象。在單個結(jié)果對象的情況中,不需要指定目標(biāo)類型,因為結(jié)果類型(以上實例中的getSubcon印t2)可以作為缺省值而被使用。 此外,可以在映射到分類本身的bean中使用@ClassificationConc印t注解,以便 將bean屬性映射到該分類的底層概念,如以下代碼清單所示
      @Registryobject (objectTypeKey = Constants 圖6的示例示出了 SOA注冊表2的分類法29,其中(通過分類27)將注冊表對象 20分類為位于分類法29的根部的分類方案50并且(通過分類28)將注冊表對象21分類 為分類法29的子概念51。 另一方面,應(yīng)用可能不知道分類法的概念,但在應(yīng)用對象(或者分別地,應(yīng)用對象 類型)之間提供繼承的概念。圖6示出了應(yīng)用10如何通過繼承關(guān)系17而與應(yīng)用對象11 相關(guān)聯(lián)。在編程語言層面上,這將意味著與應(yīng)用對象11相對應(yīng)的應(yīng)用對象類型是應(yīng)用對象 類型110的子類型,從而繼承其所有的屬性和關(guān)系,B卩,類型構(gòu)建了一種類型層級。
      如圖6所示,分類法和類型層級之間的映射可以按下述方式實現(xiàn)應(yīng)用對象10和 11分別根據(jù)它們在分類法29內(nèi)的級別以及繼承層級而被各自映射到注冊表對象20和21 。 在Java bean的環(huán)境下,以下的代碼清單示出了該映射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 (); } 可以看到,應(yīng)用對象11的應(yīng)用對象類型(接口 Actionl)是由extends關(guān)鍵字確
      定的應(yīng)用對象類型IIO(接口 Action)的子類型。此外,如以上已經(jīng)描述的,接口 Action 通過@Registry0bject注解而被映射到相應(yīng)的注冊表對象類型"仏ttp:〃namespaces. CentraSite. com/csaf}Action,,。 此夕卜,接口 Action的注解@Classifiedlnstances描 述了分類法29如何被映射到(通過Action和Actionl形成的)bean的類層級,其中該 注解包括兩個@ClassiftedInstance注解,這兩個@Classifiedlnstance注解指定從來 自分類法的概念到來自bean類層級的bean的映射。子類型Actionl進一步包括注解@ ClassifiedInstancePropery,用于訪問被表示為特定于類型的分類對象的一部分的屬性。 classificationScheme參數(shù)指定分類方案的名稱,其中用于對該注冊表對象進行分類的概 念屬于該分類方案(如以上所說明的,分類方案表明分類法)。conc印tPath參數(shù)唯一表明 分類法中的概念。最后,BeanType參數(shù)對被例示并被映射到底層JAXR注冊表對象的bean 的類型進行指定。
      方法的應(yīng)用情形 通過利用上述的映射概念中一個或多個,應(yīng)用1可以通過相應(yīng)的應(yīng)用對象10而高 效地操縱注冊表對象20。例如,通過使用本發(fā)明的方法,可以高效地實現(xiàn)創(chuàng)建自定義類型的 新注冊表對象并設(shè)置其名稱屬性的任務(wù),如以下代碼清單所說明的 BeanPool pool = context. getBeanPool (); Application app = pool, create (Application, class); app. setName(" My Application Number Demo Test 2〃 ); pool, update (即p) 可以看到,應(yīng)用l設(shè)有應(yīng)用對象10app,其是應(yīng)用對象類型110A卯lication的一種
      實例。然后,應(yīng)用1通過調(diào)度相應(yīng)的setName()操作來設(shè)置應(yīng)用對象10的name屬性。如 上面已經(jīng)說明的,通過以下所注解的對應(yīng)用對象類型110 (Application)的類型定義來實 現(xiàn)應(yīng)用對象類型110到相應(yīng)注冊表對象類型220的映射30以及name屬性的映射30 : @Registry0bject(objectTypeName = BeanPoolExample. 0BJ_TYPE_APPLICATI0N) public interface Application extends RegistryBean{ @Property public String getName (); public void setName(String name); }
      可以看到,應(yīng)用對象類型110 (Application)經(jīng)由@RegistryObject注解而映射到 相應(yīng)的注冊表對象類型220,并且名稱屬性lOO(getName())經(jīng)由@Property注解而被映射 到注冊表對象類型220 (和注冊表對象20)的相應(yīng)對象類型200。 為了處理以上所定義的映射,優(yōu)選地以框架意義上的計算機程序來實現(xiàn)本發(fā)明 的方法。 一種示例性的框架例如可以包括管理會話中的bean壽命周期的BeanPool (bean 池),例如其創(chuàng)建應(yīng)用l所請求的bean。其還可以用作會話bean緩存。此外,其可以為 bean提供CRUD接口 (創(chuàng)建、讀取、更新、刪除)以及各種查找操作。bean到JAXR的映射 器(Beans-to-JAXR-Mapper)可以處理bean與JAXR注冊表對象之間的上述映射,其中該 映射器在被BeanPool調(diào)用時對定義了映射的Java注解進行解析。最后,注冊表訪問器 (RegistryAccessor)可以對JAXR操作進行封裝,并且可適合于供Ma卯er類使用。說明當(dāng) 創(chuàng)建和更新bean時上述框架的聯(lián)網(wǎng)的示例性序列圖在圖10中示出。 上述bean是示例性框架的體系結(jié)構(gòu)的中心點。這些bean優(yōu)選地僅包括數(shù)據(jù)而不 包括處理邏輯。在該示例性框架中,bean需要對所提供的基類類進行擴展,即,它們需要實 現(xiàn)RegistryBean接口并且擴展其缺省的實施方式DynamicRegistryBean。 bean可以或多 或少地遵循值對象(Value0bject)和數(shù)據(jù)傳送對象(Data Transfer Object)設(shè)計模式,以 對數(shù)據(jù)進行封裝并將其經(jīng)由應(yīng)用層而傳輸。這種應(yīng)用層的一種典型示例是表示層、商業(yè)邏 輯層和數(shù)據(jù)層,這是對現(xiàn)代的應(yīng)用經(jīng)常使用的一種體系結(jié)構(gòu)中。表示層可以處理應(yīng)用向用 戶的可視化。商業(yè)邏輯可以對應(yīng)用內(nèi)的所有商業(yè)規(guī)則進行封裝。最后,數(shù)據(jù)層可以對在SOA 注冊表中檢索和存儲數(shù)據(jù)進行處理。所有的層需要交互以便提供應(yīng)用的功能,通常是表示 邏輯與商業(yè)邏輯交互并且商業(yè)邏輯與數(shù)據(jù)層交互。在該情況下,層之間的信息可以按bean 的形式進行傳輸,即,bean "傳播"經(jīng)過這些層。 圖7中的類圖概述了包括示例性框架中的基本bean層級的主類。主接口是 RegistryBean。圖7示出了兩種實現(xiàn)方式,作為抽象類的AbstractRegistryBean和作為具 體實現(xiàn)方式的DynamicRegistryBean。這些類可被應(yīng)用使用以促進應(yīng)用bean的實現(xiàn)。加于 應(yīng)用bean之上的限制僅僅是它們不得不擴展RegistryBean接口 。 如以上已經(jīng)說明的,通過在示例性框架中使用被宣告為Java注解的映射規(guī)則而 提供將bean映射到JAXR注冊表對象的機制,bean和JAXR注解之間的映射隱藏了 JAXR的 復(fù)雜性。圖8的類圖概述了示例性框架中映射器(其處理映射規(guī)則)的主類和接口??梢?看到,兩個主接口是BeanMa卯er和PropertyMapper 。前者處理bean到注冊表對象的映射, 后者將bean屬性映射到JAXR注冊表對象屬性、槽位、關(guān)聯(lián)、分類等等,如以上已經(jīng)描述的。 為此,兩個接口定義兩種方法,tojaxr()和toBean(),這兩種方法在兩個向上相應(yīng)地處理 映射。圖8中的其他類示出了這些接口的具體實現(xiàn)方式,例如SlotMa卯er是一種處理bean 屬性到槽位的映射的PropertyMapper。 DefaultBeanMapper是用于將bean (RegistryBean) 映射到JAXR注冊表對象的BeanM即per的缺省實現(xiàn)方式。 此外,圖8中的CustomM即per和AnotherCustomM即per描述了實現(xiàn)自定義映射的 特定于應(yīng)用的映射器。這說明了本發(fā)明的一個非常有利的特征,也就是其可擴展性機制。例 如,應(yīng)用可以引入自身的注解和相應(yīng)的映射規(guī)則,并且可以配置框架以當(dāng)bean正被以自定 義注解進行注解的時候例示和使用自定義映射器。圖9示出了對在示例性框架中實現(xiàn)的上 述注解類型的概述。
      根據(jù)上述本發(fā)明的方法的框架可以提供許多另外的特征,這些特征在以下說明。
      在bean (通過其屬性和關(guān)系)具有對相當(dāng)數(shù)量的其他bean的參考的某些情況下,當(dāng)將bean加載到應(yīng)用的存儲器中時可能需要巨大量的數(shù)據(jù)。因此,直到應(yīng)用實際請求bean的關(guān)系和屬性的時候,框架可能才將它們加載。在框架的環(huán)境下,通過使用代理模式,可以透明地或相對獨立于其他功能(除了映射器和bean池)來實現(xiàn)該概念。然后BeanPool可能具有將代理類附著到如下bean的責(zé)任當(dāng)應(yīng)的獲取操作被調(diào)用時,該bean將加載數(shù)據(jù)。
      此外,可能希望框架在多個用戶同時訪問相同資源的情況下工作。為了使得復(fù)雜性最小化,框架因此可以依賴于并使用底層的JAXR層所提供的功能,例如事務(wù)的支持、鎖定、線程安全性等等。
      1權(quán)利要求
      一種通過應(yīng)用(1)來操縱SOA注冊表(2)的至少一個注冊表對象(20)的方法,所述至少一個注冊表對象(20)可經(jīng)由用于XML注冊表的Java API(JAXR)(40)而被訪問,該方法包括以下步驟a.定義至少一個注冊表對象類型(220)和至少一個應(yīng)用對象類型(110)之間的映射(30),其中映射(30)由一個或多個Java注解來描述;b.例示所述至少一個應(yīng)用對象類型(110),以向所述應(yīng)用(1)提供與所述至少一個注冊表對象(20)相對應(yīng)的至少一個應(yīng)用對象(10);以及c.通過所述應(yīng)用(1)來操縱所述至少一個應(yīng)用對象(10),該操縱通過所述JAXR(40)而引起對相應(yīng)的所述至少一個注冊表對象(20)的相關(guān)操縱。
      2. 如權(quán)利要求l所述的方法,其中,所述至少一個注冊表對象(20)包括至少一個屬性 (200),并且所述映射(30)包括所述至少一個屬性(200)到相應(yīng)的應(yīng)用對象(10)的至少一 個屬性(100)的映射。
      3. 如權(quán)利要求2所述的方法,其中,所述至少一個注冊表對象(20)的至少一個屬性 (200)能夠保持至少一個字符串值,并且,到相應(yīng)的應(yīng)用對象(10)的至少一個屬性(100)的 所述映射(30)包括到字符串值的轉(zhuǎn)換。
      4. 如權(quán)利要求1至3中任一項所述的方法,其中,所述至少一個注冊表對象(20)通過 一個或多個關(guān)聯(lián)對象(25)而與至少一個第二注冊表對象(21)相關(guān)聯(lián),并且所述至少一個 應(yīng)用對象(10)通過一個或多個聚集和/或依賴關(guān)系(15)而與至少一個第二應(yīng)用對象(11) 相關(guān)聯(lián),并且,所述映射(30)包括所述一個或多個關(guān)聯(lián)對象(25)到所述一個或多個聚集和 /或依賴關(guān)系(15)的映射。
      5. 如權(quán)利要求1至4中任一項所述的方法,其中,所述至少一個注冊表對象(20)通過 一個或多個分類對象(26)而與所述SOA注冊表(2)的至少一個概念(22)相關(guān)聯(lián),并且所 述至少一個應(yīng)用對象(10)通過一個或多個聚集和/或組成關(guān)系(16)而與至少一個第二應(yīng) 用對象(11)相關(guān)聯(lián),并且,所述映射(30)包括所述一個或多個分類對象(26)到所述一個 或多個聚集和/或組成關(guān)系(16)的映射。
      6. 如權(quán)利要求1至5中任一項所述的方法,其中,所述至少一個注冊表對象(20)通 過一個或多個分類對象(27)而與至少一個分類方案(50)相關(guān)聯(lián),所述至少一個分類方案 (50)定義所述SOA注冊表(2)中的至少一個分類法(29),并且,所述映射(30)包括所述至 少一個注冊表對象(20)到相應(yīng)的至少一個應(yīng)用對象(10)的映射。
      7. 如權(quán)利要求6所述的方法,其中,至少一個第二注冊表對象(21)通過一個或多個分 類對象(28)而與至少一個概念(51)相關(guān)聯(lián),所述至少一個概念(51)是所述至少一個分類 法(29)中的子概念,至少一個第二應(yīng)用對象(11)通過繼承關(guān)系(17)而與所述至少一個應(yīng) 用對象(10)相關(guān)聯(lián),并且所述映射(30)包括所述至少一個第二注冊表對象(21)到所述至 少一個第二應(yīng)用對象(11)的映射。
      8. 如權(quán)利要求l至7中任一項所述的方法,其中,步驟b.包括在所述SOA注冊表(2) 中創(chuàng)建與所述至少一個應(yīng)用對象(10)相對應(yīng)的至少一個注冊表對象(20)的步驟。
      9. 如權(quán)利要求l至8中任一項所述的方法,其中,步驟b.包括為在所述SOA注冊表(2) 中查詢與所述至少一個應(yīng)用對象(10)相對應(yīng)的至少一個注冊表對象(20)的步驟。
      10. 如權(quán)利要求1至9中任一項所述的方法,其中,對所述映射(30)的定義是基于一組預(yù)定義的映射規(guī)則的,并且該方法還包括定義至少一個新的映射規(guī)則的步驟。
      11. 如權(quán)利要求1至10中任一項所述的方法,其中,僅當(dāng)屬性(100)或關(guān)系(15,16, 17)時被所述至少一個應(yīng)用(1)訪問時,所述至少一個應(yīng)用對象(10)適合于加載所述屬性 (100)或關(guān)系(15, 16, 17)。
      12. 如權(quán)利要求1至11中任一項所述的方法,其中,所述至少一個應(yīng)用對象(10)是 Java Bean,并且所述應(yīng)用對象類型(110)是Java Bean的接口定義。
      13. —種包括用于實現(xiàn)權(quán)利要求1至12中任一項的指令的計算機程序。
      全文摘要
      本發(fā)明涉及操縱SOA注冊表中的對象的方法,并公開了一種通過應(yīng)用(1)來操縱SOA注冊表(2)的至少一個注冊表對象(20)的方法,該至少一個注冊表對象(20)可通過用于XML注冊表的Java API(JAXR)(40)而被訪問,該方法包括以下步驟a.定義至少一個注冊表對象類型(220)和至少一個應(yīng)用對象類型(110)之間的映射(30),其中映射(30)由一個或多個Java注解來描述;b.例示至少一個應(yīng)用對象類型(110)以向應(yīng)用(1)提供與至少一個注冊表對象(20)相對應(yīng)的至少一個應(yīng)用對象(10);以及c.通過應(yīng)用(1)來操縱至少一個應(yīng)用對象(10),該操縱通過JAXR(40)而引起對相應(yīng)的至少一個注冊表對象(20)的相關(guān)操縱。
      文檔編號G06F9/44GK101719059SQ200910211668
      公開日2010年6月2日 申請日期2009年9月18日 優(yōu)先權(quán)日2008年9月18日
      發(fā)明者喬陳·韋德曼, 亞歷山大·潘克維, 卓根米爾·尼科洛維, 哈若德·斯徹寧 申請人:軟件股份公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1