欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

個性化服務(wù)器統(tǒng)一用戶特征集的制作方法

文檔序號:6423083閱讀:285來源:國知局
專利名稱:個性化服務(wù)器統(tǒng)一用戶特征集的制作方法
技術(shù)領(lǐng)域
一般地,本發(fā)明涉及來自多個資源的數(shù)據(jù)的集成。
背景技術(shù)
企業(yè)一直在尋找更好的方法,以將新信息與其現(xiàn)存數(shù)據(jù)集成,如可以從第三方資源獲取的有關(guān)當前或可能客戶的信息。為使這種集成有效,公司必須能夠簡化該集成過程,去除不必要的費用或采購,并去除中斷時間,一般需要該中斷時間以實現(xiàn)新的數(shù)據(jù)系統(tǒng)或修改現(xiàn)存數(shù)據(jù)結(jié)構(gòu)。
例如,一個企業(yè)可能希望將額外的用戶特征集數(shù)據(jù)整合到其已確立的用戶數(shù)據(jù)中。該額外的特征集數(shù)據(jù)可以被分離的資源(如個性化服務(wù)器)所配置與維護。經(jīng)常該企業(yè)具有原來就存在的企業(yè)客戶或用戶數(shù)據(jù),這些數(shù)據(jù)在該個性化服務(wù)器范圍之外。該數(shù)據(jù)一般位于現(xiàn)存企業(yè)數(shù)據(jù)庫中,可能包括每個客戶的信息,如名稱、社會保險號碼、和/或公司特有的信息,例如特定航空公司的常客的飛行里程。該企業(yè)會希望將該數(shù)據(jù)無縫地集成到其個性化解決方案之中,從而盡可能地避免數(shù)據(jù)遷移的困難。
因此本發(fā)明的目的在于為來自現(xiàn)存數(shù)據(jù)源的數(shù)據(jù)與來自外部來源的數(shù)據(jù)之間的集成,開發(fā)一種無縫的方法。

發(fā)明內(nèi)容
本發(fā)明包括一種用來生成統(tǒng)一用戶特征集(unified user profile)的系統(tǒng)。該系統(tǒng)包括第一數(shù)據(jù)源與第二數(shù)據(jù)源。用服務(wù)器來訪問第一與第二數(shù)據(jù)源。該服務(wù)器使用用戶組件,該用戶組件適用于將來自第一與第二數(shù)據(jù)源的數(shù)據(jù)聚合到統(tǒng)一用戶特征集中。
本發(fā)明還包括用來生成統(tǒng)一用戶特征集的結(jié)構(gòu)。該結(jié)構(gòu)可以建立在基本用戶企業(yè)Java Bean之上,該基本用戶企業(yè)Java Bean可以被擴展以整合來自用戶數(shù)據(jù)存儲的現(xiàn)存用戶數(shù)據(jù)。然后可以生成用戶特有企業(yè)Java Bean,其允許對現(xiàn)存用戶數(shù)據(jù)的透明讀和寫訪問。
本發(fā)明還包括一種用來生成統(tǒng)一用戶特征集的方法。在一個實施例中,取得了適用于通過個性化服務(wù)器工作以訪問個性化數(shù)據(jù)庫的基本用戶JavaBean。該基本用戶Java Bean提供了一種透明接口,通過該接口可以檢索并更新隱式與顯式的屬性。然后創(chuàng)建企業(yè)Java Bean,以擴展該基本用戶JavaBean,以便也可以從外部用戶數(shù)據(jù)庫檢索并更新隱式與顯式的屬性。
本發(fā)明還包括一種用來透明地訪問多個數(shù)據(jù)源的方法。在該方法中,取得了適用于通過服務(wù)器工作以訪問內(nèi)部數(shù)據(jù)源的基本用戶Java Bean。該基本用戶Java Bean提供了一種透明接口,通過該接口可以從該內(nèi)部數(shù)據(jù)源檢索并更新隱式與顯式的屬性。然后擴展該基本用戶Java Bean,以便可以進一步提供一種透明接口,通過該接口可以從至少一個外部數(shù)據(jù)源中檢索并更新隱式與顯式的屬性。
本發(fā)明還包括一種用來透明地訪問多個數(shù)據(jù)源的系統(tǒng)。該系統(tǒng)使用服務(wù)器與多個數(shù)據(jù)源通信。在該系統(tǒng)中包括了擴展的用戶Java Bean,該Java Bean適用于提供通過該服務(wù)器的對數(shù)據(jù)源的透明訪問。


圖1示出根據(jù)本發(fā)明的一個實施例的UUP配置;圖2示出根據(jù)本發(fā)明的一個實施例的UUP配置;圖3示出根據(jù)本發(fā)明的一個實施例的UUP配置;圖4示出根據(jù)本發(fā)明的一個實施例的UUP配置;圖5(a)與5(b)的流程圖示出根據(jù)本發(fā)明的一個實施例的為隱式與顯式的情況調(diào)用setUserPoints()的步驟;
圖6的流程圖示出根據(jù)本發(fā)明的一個實施例的運行ejbFind例程的步驟。
具體實施例方式
根據(jù)前面對本發(fā)明的概述,以下給出本發(fā)明實施例的詳細描述,該實施例目前被認為是最好的模式。
本發(fā)明的結(jié)構(gòu)定義了現(xiàn)存用戶數(shù)據(jù)可以與更易動態(tài)變化的個性化數(shù)據(jù)進行整合的途徑。在服務(wù)器中,例如用來為特定用戶或用戶組個性化內(nèi)容或服務(wù)的個性化服務(wù)器,系統(tǒng)用戶一般由用戶特征集表示。用戶特征集提供了用戶ID(標識)以及對用戶屬性的訪問,如年齡或電子郵件地址。屬性值可以是單值的或多值的,并可以通過將屬性名稱作為鍵值的getProperty()函數(shù)或類似方法請求。
本發(fā)明的用戶特征集的優(yōu)點在于其可以被擴展并定制,以從現(xiàn)存數(shù)據(jù)源檢索用戶信息。例如,與服務(wù)器(如個性化服務(wù)器)或解決方案一起裝上的用戶特征集,可以將用戶屬性(如來自個性化服務(wù)器數(shù)據(jù)庫的屬性與來自LDAP服務(wù)器或本領(lǐng)域已知的遺留數(shù)據(jù)庫的用戶屬性)組合到單一用戶特征集之中,以備在應(yīng)用中使用。然后,開發(fā)人員與系統(tǒng)用戶就不必擔心不同的底層數(shù)據(jù)源。為取得用戶信息,該用戶特征集是唯一需要訪問的地方。
本發(fā)明的統(tǒng)一用戶特征集(Unified User Profile,UUP)包括這種屬性聚合,其將來自現(xiàn)存數(shù)據(jù)源與個性化服務(wù)器數(shù)據(jù)庫表的屬性聚合到單一的定制的用戶特征集之中。更具體地,UUP通過擴展用戶組件,結(jié)合了現(xiàn)存用戶/客戶數(shù)據(jù)。通過將該個性化服務(wù)器數(shù)據(jù)庫表裝入現(xiàn)存數(shù)據(jù)庫實例之中,并且擴展用戶實現(xiàn),開發(fā)人員就能夠迅速創(chuàng)建定制的UUP,其能夠從現(xiàn)存數(shù)據(jù)庫中檢索屬性,并將屬性存儲/更新到現(xiàn)存數(shù)據(jù)庫中。需要這種靈活性是因為其允許對現(xiàn)存數(shù)據(jù)的訪問,而不對使用該數(shù)據(jù)的現(xiàn)存應(yīng)用進行數(shù)據(jù)遷移或中斷。然而應(yīng)該理解,如果需要,現(xiàn)存數(shù)據(jù)可以被遷移到分離的個性化服務(wù)器數(shù)據(jù)庫實例中。
與其他服務(wù)器解決方案相比,該UUP的一個主要優(yōu)點在于該UUP不需要在數(shù)據(jù)庫管理系統(tǒng)(如客戶的關(guān)系型數(shù)據(jù)庫管理系統(tǒng))中進行數(shù)據(jù)庫模式更新或數(shù)據(jù)遷移。該UUP最好通過編寫擴展EJB來創(chuàng)建,而不是通過更新數(shù)據(jù)庫表,或運行數(shù)據(jù)遷移腳本。現(xiàn)有技術(shù)的服務(wù)器經(jīng)常要求為額外的用戶屬性而更新用戶數(shù)據(jù)庫表模式。
圖1-4顯示本發(fā)明的UUP系統(tǒng)的可能配置。在圖1的第一配置100中,企業(yè)、遺留(legacy)、或其他外部數(shù)據(jù)庫102與個性化服務(wù)器數(shù)據(jù)庫104向個性化服務(wù)器110提供屬性數(shù)據(jù)。個性化服務(wù)器110還從用戶數(shù)據(jù)存儲106接收信息,如驗證信息、用戶列表、組列表、以及組成員。該用戶數(shù)據(jù)存儲可以是任何適當?shù)南到y(tǒng),如本領(lǐng)域已知的LDAP、Unix或NT系統(tǒng)。用戶數(shù)據(jù)存儲106還包括用于驗證的安全區(qū)108。個性化服務(wù)器數(shù)據(jù)庫104與安全區(qū)108在本配置中保持分離,因為可能需要這種對驗證與檢索的分離,然而這對本發(fā)明的實現(xiàn)不是必須的。當用戶或組已經(jīng)存在于某類數(shù)據(jù)存儲時,如LDAP目錄,可以使用該配置。然后該現(xiàn)存的用戶屬性數(shù)據(jù)被個性化服務(wù)器110所取得,并被與個性化數(shù)據(jù)合并以生成UUP 112。
當用戶或組已經(jīng)存在于用戶數(shù)據(jù)存儲204(如LDAP目錄)中,并且沒有現(xiàn)存用戶數(shù)據(jù)必須被結(jié)合到UUP 210中時,如圖2所示的第二配置200可能有用。此時,所有的用戶與組屬性數(shù)據(jù)最好都存儲在個性化服務(wù)器數(shù)據(jù)庫202中。在本配置中,個性化服務(wù)器208最好仍利用用戶數(shù)據(jù)存儲204的安全區(qū)206。
在沒有現(xiàn)存用戶與組的存儲的情形,如圖3所示的第三配置300可能有用。個性化服務(wù)器數(shù)據(jù)庫302的表包含所有的用戶與組數(shù)據(jù),并且最好還包含獨立的安全區(qū)304。此時個性化服務(wù)器306在生成UUP 308時只需要查看個性化服務(wù)器數(shù)據(jù)庫302。
當用戶、組、以及屬性數(shù)據(jù)位于企業(yè)、遺留、或其他外部數(shù)據(jù)庫402中,并且必須由個性化服務(wù)器408聚合到UUP 410中時,如圖4所示的第四配置400可能有用。此時必須創(chuàng)建定制安全區(qū)404以通過個性化服務(wù)器使用現(xiàn)存用戶與組。該定制安全區(qū)不必一定與外部數(shù)據(jù)庫402存儲在一起,但可以被聚合到個性化數(shù)據(jù)庫406之中。同樣,檢索與驗證區(qū)最好保持分離。
本發(fā)明的結(jié)構(gòu)的一個實施例依賴于三個主要來源以將數(shù)據(jù)聚合到UUP中(1)基本用戶企業(yè)Java Bean(EJB),(2)用戶數(shù)據(jù)存儲,以及(3)用戶特用企業(yè)Java Bean(EJB)。
基本用戶EJB為最好由個性化客戶所擴展的JAVA類,以將現(xiàn)存用戶數(shù)據(jù)聚合到個性化解決方案之中。
基本用戶EJB最好提供單一的透明接口,通過該接口可以檢索或更新隱式的屬性與顯式的屬性。該基本用戶EJB利用屬性集合,可以使用該集合以給出屬性的命名空間限定,以及定義屬性類型、允許值等等。屬性集合的行為類似用于用戶屬性的數(shù)據(jù)模式。此處所指的透明性一般指用戶或應(yīng)用可以進行調(diào)用或請求,而不用關(guān)心數(shù)據(jù)存儲在哪里或者該數(shù)據(jù)使用哪種命名約定(naming convention)。如果該數(shù)據(jù)在遺留數(shù)據(jù)庫中而不是個性化數(shù)據(jù)庫中,則UUP將自動處理該請求,而該用戶或應(yīng)用永遠不用知道其位置或名稱。
在本發(fā)明的一個實施例中,基本用戶EJB的子類使用兩種方法以檢索或更新getProperty與setProperty。這些方法對隱式的或顯式的屬性都可以檢索和/或更新。這些方法可以設(shè)置如下public Object getProperty(String propertySetName,Stringproper tyName);public void setProperty(String propertySetName,StringpropertyName,Object propertyValue);這些方法最后使用兩個主要的屬性propertySetName與propertyName。propertySetName屬性指明此調(diào)用所采用的數(shù)據(jù)模式。這樣,propertySetName作為待檢索或更新的屬性的命名空間。propertyName屬性指明待更新或檢索的屬性的名稱。使用propertySetName-propertyName對的一個優(yōu)點是可以在多個應(yīng)用或子應(yīng)用范圍內(nèi)使用單一的propertyName。屬性名稱的多個實例也可以對應(yīng)不同的定義。從基本用戶Bean檢索的屬性將被稱為隱式屬性。
用戶數(shù)據(jù)存儲可能在聚合之前就已經(jīng)存在,一般是其中存儲有關(guān)當前用戶或客戶數(shù)據(jù)的數(shù)據(jù)庫或表。該表可以與個性化服務(wù)器的數(shù)據(jù)庫實例位于一處。該現(xiàn)存用戶數(shù)據(jù)存儲可以包含獨立于個性化服務(wù)器數(shù)據(jù)庫表而存在的用戶數(shù)據(jù)。該個性化服務(wù)器可以要求現(xiàn)存用戶數(shù)據(jù)存儲與個性化服務(wù)器表存在于同一RDBMS實例中。
表1顯示了示例的“AcmeCustomer”RDBMS表。該表為每個客戶定義三個值(1)Customer_Name(客戶名稱),(2)Acme_Point(頂點),以及(3)Acme_DisCount(頂點折扣)。Customer_Name被用作每個客戶的唯一標識符。一旦集成完成后,該唯一標識符最好被用來在整個個性化服務(wù)器內(nèi)唯一地辨別用戶。Acme_Points為樣品客戶價值。頂點客戶(Acme customer)可能在他或她購買頂點產(chǎn)品(Acme products)時收集點數(shù)。Acme_Discount為客戶在每次購買頂點產(chǎn)品時所獲得的折扣。
表1-AcmeCustmer(頂點客戶)RDBMS表

一旦完全理解了現(xiàn)存數(shù)據(jù)存儲,則可以編寫擴展基本用戶EJB的EJB,其利用透明的值檢索與更新服務(wù)。計算機領(lǐng)域的技術(shù)人員應(yīng)該熟知擴展JavaBean的方法。
為集成現(xiàn)存用戶數(shù)據(jù)與由個性化服務(wù)器所提供的個性化表,可以編寫EJB以擴展用戶Bean,該用戶Bean可以與個性化服務(wù)器一起提供。一旦完成了該Bean,個性化服務(wù)器的客戶就具有對以前存儲在用戶特有數(shù)據(jù)庫表(顯式的屬性)中的屬性、以及存儲在個性化服務(wù)器的屬性表集合中的屬性(隱式的屬性)的透明讀和寫訪問。
繼續(xù)“頂點客戶”數(shù)據(jù)存儲的例子,可以編寫AcmeUser EJB(頂點用戶EJB),其提供對現(xiàn)存表的數(shù)據(jù)更新與檢索機制。為在本發(fā)明的限定內(nèi)運行,該AcmeUser EJB可以定義如下方法public Long getAcmePoints()-返回客戶到目前為止所收集的點數(shù)。
public void setAcmePoints(Long newAcmePointsValue)-更新客戶的頂點點數(shù)。
public Double getAcmeDiscount()-返回客戶當前的折扣。
public void setAcmeDiscount()-更新客戶的頂點折扣。
從擴展的用戶Bean所檢索的屬性被稱為顯式的屬性。
一旦實現(xiàn)了擴展Bean的方法,則頂點點數(shù)與頂點折扣都可以用由基本用戶EJB所實現(xiàn)的getProperty()與setProperty()的繼承方法進行檢索。
因此,例如對用戶bsmith,下面的兩個方法都返回一包含值50000的長整形public Long getAcmePoints();
public Object getProperty(anyPropertySetName,“acmePoints”);類似地,下面的每個方法都將bsmith的頂點點數(shù)更新為60,000public void setAcmePoints(new Double(60000));public void setProperty(anyPropertySetName,“acmetPoints”,newDouble(60000));在其對透明屬性更新與檢索的實現(xiàn)中,UUP最好使用Java自反性(reflection)的概念,以在將屬性當作隱式的處理并使用屬性集合的概念之前確定該屬性是否為顯式的。自反性是Java編程語言的一項特點,其使運行的Java程序能夠檢查或反省自身,以操縱該程序的內(nèi)部屬性。如果propterName對應(yīng)顯式的屬性,則最后在隱式的屬性之前進行顯式的屬性的更新與檢索。由于此搜索順序,如果正在更新或檢索顯式的屬性,則實際屬性集合的名稱無關(guān)緊要。
下面的例子展示了假想公司使用UUP以利用現(xiàn)存客戶數(shù)據(jù)。該例子擴展了用戶Bean并且從先前存在的數(shù)據(jù)庫中檢索數(shù)據(jù)。該例子顯示了如何能夠相對較容易地創(chuàng)建滿足應(yīng)用的保存(persistence)需求的定制的UUP。下面的表2解釋了可以擴展什么以創(chuàng)建定制UUP。
表2-示例擴展以創(chuàng)建定制UUP

UUP為ConfigurableEntity這一事實意味著用戶特征集具有顯式地或隱式地設(shè)置與獲取屬性的概念。此處所稱的顯式地設(shè)置屬性指直接調(diào)用屬性的設(shè)置方法。隱式地設(shè)置屬性指在沒有顯式的設(shè)置方法時,通過setProperty()方法來設(shè)置屬性。例如,如果UUP包含屬性“userPoints”,直接調(diào)用setUserPoints()將顯式地設(shè)置userPoints屬性。用鍵值“userPoints”調(diào)用setProperty()將隱式地設(shè)置userPoints屬性。在被調(diào)用時,setProperty()先在用戶特征集中查找setUserPoints()設(shè)置方法來調(diào)用。如果存在這種設(shè)置方法,則該方法被調(diào)用,以設(shè)置該屬性,并進行任何與值中修改有關(guān)的必要處理。最終,由UUP實現(xiàn)來負責保存被顯式設(shè)置的屬性值,即使其是通過setProperty()被隱式調(diào)用的。最好只有在不存在顯式的設(shè)置方法時,ConfigurableEntity才處理被隱式設(shè)置的屬性的保存。
圖5(a)與圖5(b)分別畫出了對setUserPoints()的顯式550與隱式500調(diào)用。在這兩種情況中,由UUP Bean負責存儲userPoints值。如果在UUP Bean中不存在setUserPoints()方法,則ConfiruableEntity實現(xiàn)將處理userPoints值的存儲。在圖5(a)的隱式情況中,調(diào)用setProperty()502。系統(tǒng)檢查是否存在serUserPoints()方法。如果存在,則調(diào)用setUserPoints()506。如果不存在,則系統(tǒng)繼續(xù)執(zhí)行setProperty 508。對于圖5(b)的顯式情況,對setUserPoints()552的調(diào)用將只調(diào)用setUserPoints()554。
這種隱式與顯式地設(shè)置屬性的概念允許在UUP實現(xiàn)中更高的靈活性。如果在獲取或設(shè)置屬性時需要發(fā)生任何特殊的邏輯,例如計算另一個值,則可以使用該屬性的設(shè)置或獲取方法來實現(xiàn)之。UUP之外的功能可以確信具有用于屬性訪問的setProperty()方法與getProperty()方法,從而不再需要知道屬性是否有自己的設(shè)置或獲取方法。例如,即使UUP只提供了getUserPoints()方法來檢索userPoints,<umgetproperty>JSP標記也可以檢索userPoints屬性值。這是因為UUP的getProperty()方法可以在檢查其他地方之前先檢查其是否具有g(shù)etUserPoints()。具有顯式的設(shè)置與獲取方法的屬性被稱為“顯式屬性”,而只能通過調(diào)用setProperty()來進行設(shè)置的屬性被稱為“隱式屬性”。
在實現(xiàn)定制UUP EJB時,可能只需要為UUP的顯式屬性實現(xiàn)顯式的獲取與設(shè)置方法。然后,這些設(shè)置與獲取的實現(xiàn)將在現(xiàn)存數(shù)據(jù)存儲中設(shè)置并檢索這些屬性值。
在一個實施例中,對UUP中所有的顯式屬性設(shè)置與獲取都采用了獲取PropertyName()/設(shè)置PropertyName()的方式。如果UUP具有顯式userPoints屬性,則提供顯式getUserPoints()方法,因為retrieveUserPoints()將不工作。類似地,用setUserPoints()方法設(shè)置userPoints。在該實施例中,當通過隱式調(diào)用獲取和設(shè)置屬性時,getProperty()與setProperty()方法查找符合此約定的獲取與設(shè)置方法。不允許重設(shè)setProperty()或getProperty()。對顯式屬性的獲取與設(shè)置通過獲取與設(shè)置方法完成。顯式獲取與設(shè)置方法使用并返回對象。基本數(shù)據(jù)類型如長整形與浮點數(shù)被包裹起來,如在java.lang.Long與java.lang.Float對象中,以與ConfigurableEntity的getProperty()與setProperty()方法相容。
如果提供了獲取方法,則最好也提供設(shè)置方法,反之亦然,這是因為不能預測用戶或應(yīng)用何時會想設(shè)置或獲取屬性。例如,如果提供了獲取方法用來從數(shù)據(jù)庫表中檢索屬性值,但沒有相應(yīng)的設(shè)置方法,則調(diào)用setProperty()將把該屬性存儲到個性化服務(wù)器表中。這不是我們所需要的,因為該值是從一個地方檢索的,但是在另一個地方設(shè)置。下次檢索該屬性時,其將具有原來的值—而不是已設(shè)置的值。如果要提供只讀屬性,則可以實現(xiàn)空設(shè)置方法。
ConfigurableEntity的getProperty()方法的優(yōu)選定義如下Public Object getProperty(String propertySet,String propertyName,ConfigurableEntity explicitSuccessor,Object defaultValue);getProperty()方法最好按特定順序搜索屬性。例如,如果對用戶沒有發(fā)現(xiàn)屬性,則可查詢組來找該值。在這種情況中,該用戶將從組繼承該屬性值。用ConfigurableEntity的術(shù)語來說,組是用戶的“后繼(successor)”。如果在ConfigurableEntity中未發(fā)現(xiàn)屬性,則查詢ConfigurableEntity的后繼。這樣,ConfigurableEntity可以從父輩實體繼承并重設(shè)值。
后繼可以是隱式或顯式的。隱式后繼是ConfigurableEntity的缺省后繼,或者為特定屬性集所設(shè)定的后繼。顯式后繼最好是可以作為參數(shù)傳遞給getProperty()方法的ConfigurableEntity。下面是在優(yōu)選ConfigurableEntity中存在的getProperty()屬性搜索的順序為所指明的屬性集合的該屬性查看該實體。
為缺省(空)屬性集合中的該屬性查看該實體。
為保留的屬性集合中的該屬性(如果使用LDAP域,則為來自LDAP的屬性)查看該實體。
在該實體的顯式后繼(如果已指明)中尋找該屬性。
在所指明的屬性集合的該實體的后繼中尋找該屬性。
在該實體的缺省后繼中尋找該屬性。
如果指明了(非空)屬性集合,則尋找在該屬性集合中所定義的缺省值。
返回傳入getProperty()方法的defaultValue(缺省值)。
ConfigurableEntity的setProperty()方法的優(yōu)選定義如下所示
Public Object setProperty(String propertySet,String propertyName,Object value);如果在該優(yōu)選方法中,setProperty()被用來為屬性集合設(shè)置不符合屬性集合定義的屬性,則拋出異常。例如,假設(shè)“UnifiedUserExample”屬性集合被定義為具有整型的userPoints屬性。如果有人試圖為將“UnifiedUserExample”屬性集合的userPoints屬性設(shè)置為“abc”,則拋出異常,這是因為userPoints被定義為整型,而“abc”為文本。類似地,將布爾型屬性值設(shè)置為“bar”也將導致異常,這是因為布爾型值限定于布爾型對象。
如果調(diào)用setProperty()并且傳遞空作為屬性集合,則可以在空屬性集合中設(shè)置該屬性值,該空屬性集合被稱為缺省屬性集合。如上所述的getProperty()搜索循序,最好在“保留”屬性集合與后繼中查找該屬性值之前搜索該缺省屬性集合。
“保留”屬性集合最好為可以用來承載來自外部數(shù)據(jù)存儲的屬性值的只讀屬性集合?!氨A簟睂傩约峡梢栽趥€性化服務(wù)器中使用,如當從LDAP目錄檢索屬性值時。試圖設(shè)置“保留”屬性集合中的屬性可以導致拋出異常?!氨A簟睂傩约现械膶傩约氨A魧傩约媳旧聿荒芡ㄟ^用戶管理工具編輯。優(yōu)選的用戶管理工具使用戶與組的屬性規(guī)范可以從LDAP或其他服務(wù)器中檢索。然后在運行時,只檢索這些屬性。
可以通過setProperty()用不存在的特定屬性集合設(shè)置屬性。這可能不是我們所希望的。當這樣做時,并沒有為所指明的屬性集合名稱臨時創(chuàng)建屬性集合。而是所指明的屬性集合名稱只作為該屬性的命名空間。類似地,我們可能不希望通過setProperty()來為現(xiàn)存屬性集合設(shè)置在該屬性集合中不存在的屬性。通過這些途徑設(shè)置的屬性不能通過用戶管理工具編輯,而在“空”或“缺省”屬性集合中的屬性可以用戶管理工具編輯。
如果調(diào)用setProperty()時傳遞java.lang.Integer對象值,則調(diào)用getProperty()時最好返回java.lang.Long對象。檢索此類屬性的代碼可能如下所示Object value=myUser.getProperty(“my_property_set”,“my_integer_property”,null,null);Number tempNumber=(Number)value;
int realValue=tempNumber.intValue();如果以java.lang.Float對象調(diào)用setProperty(),則調(diào)用getProperty()時最好返回java.lang.Double對象。檢索此類屬性的代碼可能如下所示Object value=myUser.getProperty(“my_property_set”,“my_float_property”,null,null);Number tempNumber=(Number)value;float realValue=tempNumber.intValue();用戶對象最好提供用于EJB查找操作的功能,該功能將簡化UUP與個性化服務(wù)器的集成。圖6示出ejbFind()操作的流程圖。擴展的UUP ejbFind()在現(xiàn)存數(shù)據(jù)存儲中搜索記錄602。如果成功,則調(diào)用super.ejbFind()604,即用戶對象ejbFind()。如果成功,則該用戶對象ejbFind()將為該UUP在個性化服務(wù)器數(shù)據(jù)庫表中創(chuàng)建所需的記錄(如果這些記錄不存在的話610),并返回適當?shù)闹麈I。如果用戶對象ejbFind()失敗,則檢查的底層安全域608,以確定該用戶名是否與有效用戶對應(yīng)。如果是,則用戶對象ejbFind()創(chuàng)建所需記錄610,由此消除了查找方法錯誤以及原來將用戶數(shù)據(jù)遷移到個性化服務(wù)器用戶數(shù)據(jù)庫表中所需的時間。如果ebjFind()失敗或者該域中不存在該用戶,則會遇到查找方法錯誤606。如果沒遇到查找方法錯誤,則返回適當?shù)闹麈I612。
如果此配置中該域無法確認用戶的存在,但又必須創(chuàng)建該用戶,則可由EJB負責來創(chuàng)建原來未找到的超類記錄。
在生成定制UUP的一個實施例的最后一步,要求將UUP在個性化或其他服務(wù)器上注冊,例如通過用戶管理工具。為了注冊該UUP,優(yōu)選的用戶管理工具使用下表3表3-注冊UUP(例子)

通過將UUP在個性化服務(wù)器上注冊,便可以用<umgetprofile>JSP標記請求該新特征集類型<umgetprofile profileType=“UnifiedUserExample”profileKey=“<%=username%>”/>
這樣便可能通過<umgetproperty>與<umsetproperty>JSP標記使用UUP。
LDAP屬性檢索支持除對隱式與顯式屬性的透明檢索/更新外,統(tǒng)一用戶特征集機制的一個實施例還支持從LDAP服務(wù)器檢索用戶數(shù)據(jù),而不需要來自個性化服務(wù)器客戶的Java代碼。借助一組管理工具,可以在應(yīng)用運行時用屬性請求從LDAP服務(wù)器檢索用戶與組屬性的規(guī)范。優(yōu)選的方案是對個性化服務(wù)器客戶檢索LDAP屬性的唯一要求就是該客戶部署LDAP安全域。在運行時,UUP查詢特定配置信息,以檢測當前是否在使用LDAP安全域。如果是,則待檢索的用戶與組屬性的名稱可以從LDAPConfiguration(LDAP配置)會話Bean得到,并且f檢索當前用戶的適當屬性??梢圆灰罂蛻羰褂肔DAP安全域,也能獲得其他UUP功能的好處。
本發(fā)明的其他特征、方面與目標可以從附圖與權(quán)利要求中發(fā)現(xiàn)。應(yīng)該理解可以開發(fā)本發(fā)明的其他實施例,而其都落入本發(fā)明與權(quán)利要求的精神與范圍內(nèi)。
以上對本發(fā)明優(yōu)選實施例的描述用于顯示與說明目的。其并非窮盡,也非用來將本發(fā)明限定于所公開的具體形式中。顯然,對本領(lǐng)域的普通技術(shù)人員來講,明顯可有許多改進與變化。選擇并描述實施例是為了最清楚地解釋本發(fā)明的原理及其實際的應(yīng)用,以使本領(lǐng)域其他技術(shù)人員能夠理解本發(fā)明,其可應(yīng)用于與所構(gòu)想的特定用途相適應(yīng)的各種實施例與各種修改。本發(fā)明的范圍由所附權(quán)利要求界定。
權(quán)利要求
1.一種用于生成統(tǒng)一用戶特征集的系統(tǒng),以允許對多個數(shù)據(jù)源的透明訪問,該系統(tǒng)包括(a)第一數(shù)據(jù)源;(b)第二數(shù)據(jù)源;以及(3)服務(wù)器,適用于訪問所述第一與第二數(shù)據(jù)源,所述服務(wù)器包括組件,該組件適用于將來自所述第一與第二數(shù)據(jù)源的數(shù)據(jù)聚合到統(tǒng)一用戶特征集內(nèi)。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中所述第一數(shù)據(jù)源選自包括遺留數(shù)據(jù)庫、企業(yè)數(shù)據(jù)庫以及用戶數(shù)據(jù)存儲的組。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中所述第一數(shù)據(jù)源包含選自包括驗證信息、用戶列表、組列表、與組成員的組的數(shù)據(jù)。
4.根據(jù)權(quán)利要求1的系統(tǒng),還包括安全域,該安全域適用于允許對在所述第一數(shù)據(jù)源與第二數(shù)據(jù)源中至少一個中的數(shù)據(jù)的驗證。
5.根據(jù)權(quán)利要求1的系統(tǒng),其中所述服務(wù)器為個性化服務(wù)器。
6.根據(jù)權(quán)利要求1的系統(tǒng),其中所述組件包含企業(yè)Java Bean。
7.根據(jù)權(quán)利要求6的系統(tǒng),其中所述企業(yè)Java Bean使用選自getProperty()與setProperty()組的方法,檢索并更新在所述第一數(shù)據(jù)源與第二數(shù)據(jù)源中至少一個中的數(shù)據(jù)。
8.根據(jù)權(quán)利要求1的系統(tǒng),其中所述組件包含擴展的Java Bean。
9.根據(jù)權(quán)利要求1的系統(tǒng),其中所述組件提供透明接口,通過該接口可以檢索并更新隱式與顯式的屬性。
10.根據(jù)權(quán)利要求9的系統(tǒng),其中所述組件包含屬性集合,所述屬性集合適給出所述隱式與顯式的屬性的命名空間限定。
11.根據(jù)權(quán)利要求1的系統(tǒng),其中所述組件包含獲取方法與設(shè)置方法屬性。
12.根據(jù)權(quán)利要求1的系統(tǒng),其中所述組件提供透明接口,該接口適用于從所述第一數(shù)據(jù)源與所述第二數(shù)據(jù)源存儲并檢索數(shù)據(jù)。
13.根據(jù)權(quán)利要求1的系統(tǒng),其中所述第二數(shù)據(jù)源為個性化數(shù)據(jù)庫。
14.一種用于生成用來透明訪問現(xiàn)存用戶數(shù)據(jù)的統(tǒng)一用戶特征集的結(jié)構(gòu),該結(jié)構(gòu)包括(a)基本用戶企業(yè)Java Bean,所述基本用戶企業(yè)Java Bean能夠被擴展以整合所述現(xiàn)存用戶數(shù)據(jù);(b)用戶數(shù)據(jù)存儲,適用于包含所述現(xiàn)存用戶數(shù)據(jù);以及(c)用戶特有企業(yè)Java Bean,適用于提供對所述現(xiàn)存用戶數(shù)據(jù)的透明讀和寫訪問。
15.根據(jù)權(quán)利要求14的結(jié)構(gòu),還包括包含所述現(xiàn)存用戶數(shù)據(jù)之外的數(shù)據(jù)的數(shù)據(jù)源。
16.根據(jù)權(quán)利要求15的結(jié)構(gòu),其中所述用戶特有企業(yè)Java Bean還允許對所述數(shù)據(jù)源內(nèi)的所述數(shù)據(jù)的透明讀和寫訪問。
17.根據(jù)權(quán)利要求14的結(jié)構(gòu),還包括服務(wù)器,該服務(wù)器適用于向所述統(tǒng)一用戶特征集的用戶提供所述讀和寫訪問。
18.根據(jù)權(quán)利要求17的結(jié)構(gòu),其中所述服務(wù)器為個性化服務(wù)器。
19.根據(jù)權(quán)利要求14的結(jié)構(gòu),其中所述用戶數(shù)據(jù)存儲為內(nèi)部數(shù)據(jù)源中的表,該內(nèi)部數(shù)據(jù)源選自包括遺留數(shù)據(jù)庫、企業(yè)數(shù)據(jù)庫以及客戶數(shù)據(jù)庫的組。
20.根據(jù)權(quán)利要求14的結(jié)構(gòu),其中所述用戶數(shù)據(jù)存儲包含選自包括驗證信息、用戶列表、組列表、與組成員的組的數(shù)據(jù)。
21.根據(jù)權(quán)利要求14的結(jié)構(gòu),還包括安全域,該安全域適用于允許對所述用戶數(shù)據(jù)存儲內(nèi)的數(shù)據(jù)的驗證。
22.根據(jù)權(quán)利要求14的結(jié)構(gòu),其中所述用戶特有企業(yè)Java Bean利用屬性集合,所述屬性集合適用于給出所述現(xiàn)存用戶數(shù)據(jù)的隱式與顯式的屬性的命名空間限定。
23.根據(jù)權(quán)利要求14的結(jié)構(gòu),其中所述用戶特有企業(yè)Java Bean利用獲取方法與設(shè)置方法屬性。
24.一種用于生成用來提供對個性化數(shù)據(jù)庫與外部用戶數(shù)據(jù)庫的透明訪問的統(tǒng)一用戶特征集的方法,所述方法包括下列步驟(a)取得基本用戶Java Bean,該基本用戶Java Bean適用于通過個性化服務(wù)器工作,以訪問所述個性化數(shù)據(jù)庫,所述基本用戶Java Bean適用于提供透明接口,通過該接口可以從該個性化數(shù)據(jù)庫檢索并更新隱式與顯式的屬性;以及(b)創(chuàng)建企業(yè)Java Bean,以擴展基本用戶企業(yè)Java Bean,使可以進一步從外部用戶數(shù)據(jù)庫檢索并更新隱式與顯式的屬性。
25.根據(jù)權(quán)利要求24的方法,還包括通過所述擴展的基本用戶JavaBean,生成對所述外部數(shù)據(jù)庫的透明讀和寫訪問。
26.根據(jù)權(quán)利要求24的方法,還包括配置服務(wù)器以提供所述讀和寫訪問。
27.根據(jù)權(quán)利要求26的方法,其中所述服務(wù)器為個性化服務(wù)器。
28.根據(jù)權(quán)利要求24的方法,其中所述外部用戶數(shù)據(jù)庫選自包括遺留數(shù)據(jù)庫、企業(yè)數(shù)據(jù)庫以及客戶數(shù)據(jù)庫的組。
29.根據(jù)權(quán)利要求24的方法,其中所述外部用戶數(shù)據(jù)包含選自包括驗證信息、用戶列表、組列表、與組成員的組的數(shù)據(jù)。
30.根據(jù)權(quán)利要求24的方法,還包括步驟獲取安全域,該安全域適用于允許對所述個性化數(shù)據(jù)庫與所述外部用戶數(shù)據(jù)庫內(nèi)的數(shù)據(jù)的驗證。
31.根據(jù)權(quán)利要求24的方法,其中所述擴展的基本用戶Java Bean利用屬性集合,所述屬性集合適用于給出所述個性化數(shù)據(jù)庫中所述數(shù)據(jù)的隱式與顯式的屬性的命名空間限定。
32.根據(jù)權(quán)利要求31的方法,其中所述隱式與顯式的屬性包含獲取方法與設(shè)置方法屬性。
33.一種用來透明地訪問多個數(shù)據(jù)源的方法,所述方法包括以下步驟(a)取得基本用戶Java Bean,該基本用戶Java Bean適用于通過服務(wù)器工作,以訪問內(nèi)部數(shù)據(jù)源,所述基本用戶Java Bean適用于提供透明接口,通過該接口可以檢索并更新隱式與顯式的屬性;以及(b)擴展基本用戶Java Bean,使所述基本用戶Java Bean進一步適用于提供透明接口,通過該接口可以從至少一個外部數(shù)據(jù)源檢索并更新隱式與顯式的屬性。
34.根據(jù)權(quán)利要求33的方法,還包括步驟配置服務(wù)器,以操作所述透明接口。
35.根據(jù)權(quán)利要求33的方法,還包括步驟獲取安全域,該安全域適用于允許對所述內(nèi)部數(shù)據(jù)源與所述外部數(shù)據(jù)源內(nèi)的數(shù)據(jù)的驗證。
36.根據(jù)權(quán)利要求33的方法,還包括步驟為擴展的用戶Java Bean配置屬性集合。
37.根據(jù)權(quán)利要求35的方法,其中所述屬性集合適用于給出所述內(nèi)部數(shù)據(jù)源與外部數(shù)據(jù)源內(nèi)所述數(shù)據(jù)的隱式與顯式的屬性的命名空間限定。
38.根據(jù)權(quán)利要求37的方法,其中所述隱式與顯式的屬性包含獲取方法與設(shè)置方法屬性。
39.根據(jù)權(quán)利要求37的方法,還包括步驟使用自反性以確定所述內(nèi)部數(shù)據(jù)源與外部數(shù)據(jù)源內(nèi)所述數(shù)據(jù)的屬性是否為顯式的。
40.一種用于透明地訪問多個數(shù)據(jù)源的系統(tǒng),所述系統(tǒng)包括(a)多個數(shù)據(jù)源;(b)與每個所述數(shù)據(jù)源進行通信的服務(wù)器;以及(c)擴展的用戶Java Bean,該擴展的用戶Java Bean適用于提供通過所述服務(wù)器對所述多個數(shù)據(jù)源的透明訪問。
41.根據(jù)權(quán)利要求40的系統(tǒng),其中所述數(shù)據(jù)源中至少一個選自包括遺留數(shù)據(jù)庫、企業(yè)數(shù)據(jù)庫以及用戶數(shù)據(jù)存儲的組。
42.根據(jù)權(quán)利要求40的系統(tǒng),還包括安全域,該安全域適用于允許對所述多個數(shù)據(jù)源中至少一個內(nèi)的數(shù)據(jù)的驗證。
43.根據(jù)權(quán)利要求40的系統(tǒng),其中所述服務(wù)器為個性化服務(wù)器。
44.根據(jù)權(quán)利要求40的系統(tǒng),其中所述擴展的用戶Java Bean使用選自包括getProperty()與setProperty()組的方法,檢索并更新在所述多個數(shù)據(jù)源中至少一個中的數(shù)據(jù)。
45.根據(jù)權(quán)利要求40的系統(tǒng),其中所述擴展的用戶Java Bean適用于允許對所述多個數(shù)據(jù)源內(nèi)的數(shù)據(jù)的隱式與顯式的屬性的檢索與更新。
46.根據(jù)權(quán)利要求45的系統(tǒng),其中所述擴展的用戶Java Bean用屬性集合,所述屬性集合適用于給出所述隱式與顯式的屬性的命名空間限定。
47.根據(jù)權(quán)利要求45的系統(tǒng),其中所述隱式與顯式的屬性包含獲取方法與設(shè)置方法屬性。
48.一種用于統(tǒng)一多個數(shù)據(jù)源的系統(tǒng),所述系統(tǒng)包括(a)一套命名約定,在存儲與訪問數(shù)據(jù)源內(nèi)的數(shù)據(jù)時應(yīng)該遵守該約定;(b)多個數(shù)據(jù)源,至少一個數(shù)據(jù)源包含不遵循所述命名約定的數(shù)據(jù)項;(c)標識符對集合,每對標識符相應(yīng)于不遵循所述命名約定的數(shù)據(jù)項,該標識符對包括項名稱及遵循命名約定的相應(yīng)名稱;以及(d)與每個所述數(shù)據(jù)源及標識符對集合進行通信的服務(wù)器,該服務(wù)器適用于允許遵循所述命名約定的請求對數(shù)據(jù)源的訪問。
49.根據(jù)權(quán)利要求48的系統(tǒng),其中所述多個數(shù)據(jù)源中的至少一個選自包括遺留數(shù)據(jù)庫、企業(yè)數(shù)據(jù)庫以及用戶數(shù)據(jù)存儲的組。
50.根據(jù)權(quán)利要求48的系統(tǒng),還包括安全域,該安全域適用于允許對在所述多個數(shù)據(jù)源的至少一個中的數(shù)據(jù)的驗證。
51.一種用于生成適用于允許對多個數(shù)據(jù)源的透明訪問的統(tǒng)一用戶特征集的系統(tǒng),該包括服務(wù)器的系統(tǒng)包括(a)第一組件,適用于訪問第一數(shù)據(jù)源;(b)第二組件,適用于訪問第二數(shù)據(jù)源;以及(c)用戶組件,適用于將來自第一與第二數(shù)據(jù)源的數(shù)據(jù)聚合到統(tǒng)一用戶特征集中。
52.根據(jù)權(quán)利要求51的系統(tǒng),還包括組件,該組件適用于訪問安全域,以對在所述第一數(shù)據(jù)源與第二數(shù)據(jù)源的至少一個中的數(shù)據(jù)進行驗證。
53.根據(jù)權(quán)利要求51的系統(tǒng),其中用戶組件包含企業(yè)Java Bean。
54.根據(jù)權(quán)利要求51的系統(tǒng),其中用戶組件使用選自包括getProperty()與setProperty()組的方法,檢索并更新所述第一數(shù)據(jù)源與第二數(shù)據(jù)源的至少一個中的數(shù)據(jù)。
55.根據(jù)權(quán)利要求51的系統(tǒng),其中用戶組件提供透明接口,通過該接口可以檢索并更新隱式與顯式的屬性。
56.根據(jù)權(quán)利要求55的系統(tǒng),其中用戶組件包含屬性集合,所述屬性集合適用于給出所述隱式與顯式的屬性的命名空間限定。
57.根據(jù)權(quán)利要求51的系統(tǒng),其中用戶組件包含獲取方法與設(shè)置方法屬性。
58.一種用于生成適用于提供對用戶數(shù)據(jù)的訪問的特征集的結(jié)構(gòu),該結(jié)構(gòu)包括(a)基本用戶企業(yè)Java Bean,所述基本用戶企業(yè)Java Bean能夠整合用戶數(shù)據(jù);以及(b)用戶特有企業(yè)Java Bean,適用于提供對用戶數(shù)據(jù)的透明讀和寫訪問。
59.根據(jù)權(quán)利要求58的結(jié)構(gòu),還包括服務(wù)器,該服務(wù)器適用于提供對用戶數(shù)據(jù)的讀和寫訪問。
60.根據(jù)權(quán)利要求58的結(jié)構(gòu),其中所述用戶數(shù)據(jù)存儲包含選自包括驗證信息、用戶列表、組列表、與組成員的組的數(shù)據(jù)。
61.根據(jù)權(quán)利要求58的結(jié)構(gòu),其中所述用戶特有企業(yè)Java Bean利用屬性集合,所述屬性集合適用于給出用戶數(shù)據(jù)的隱式與顯式的屬性的命名空間限定。
62.根據(jù)權(quán)利要求59的結(jié)構(gòu),其中用戶特有企業(yè)Java Bean利用獲取方法與設(shè)置方法屬性。
63.一種包含指令的計算機可讀介質(zhì),該指令由服務(wù)器執(zhí)行時,使該服務(wù)器執(zhí)行以下步驟(a)取得基本用戶Java Bean,該基本用戶Java Bean適用于通過該服務(wù)器工作,以訪問第一數(shù)據(jù)庫,所述基本用戶Java Bean適用于提供透明接口,通過該接口可以從第一數(shù)據(jù)庫檢索并更新隱式與顯式的屬性;以及(b)創(chuàng)建企業(yè)Java Bean以擴展基本用戶Java Bean,使所述隱式與顯式的屬性也可以從第二數(shù)據(jù)庫檢索并更新。
64.根據(jù)權(quán)利要求63的計算機可讀介質(zhì),其中該介質(zhì)還使服務(wù)器通過所述擴展的基本用戶Java Bean,生成對第二數(shù)據(jù)庫的透明讀和寫訪問。
65.根據(jù)權(quán)利要求63的計算機可讀介質(zhì),其中該介質(zhì)還使服務(wù)器獲取安全域,該安全域適用于允許對在第一數(shù)據(jù)庫與第二數(shù)據(jù)庫內(nèi)的數(shù)據(jù)的驗證。
66.根據(jù)權(quán)利要求63的計算機可讀介質(zhì),其中擴展的基本用戶Java Bean利用屬性集合,所述屬性集合適用于第一數(shù)據(jù)庫中所述數(shù)據(jù)的隱式與顯式的屬性的命名空間限定。
67.根據(jù)權(quán)利要求63的計算機可讀介質(zhì),其中擴展的基本用戶Java Bean使用獲取方法與設(shè)置方法屬性。
全文摘要
本發(fā)明包括利用統(tǒng)一用戶特征集(112)的系統(tǒng)及用來生成統(tǒng)一用戶特征集(112)的方法,該統(tǒng)一用戶特征集用來提供對多個數(shù)據(jù)源的透明接口。取得基本用戶Java Bean以通過個性化服務(wù)器(110)工作,并訪問個性化數(shù)據(jù)庫(104)。該基本用戶Java Bean提供了透明接口,通過該接口可以檢索并更新隱式與顯式的屬性。然后創(chuàng)建企業(yè)Java Bean,以擴展該基本用戶Java Bean,使隱式與顯式的屬性也可以通過該透明接口從外部用戶數(shù)據(jù)庫進行檢索與更新。
文檔編號G06F17/30GK1516839SQ02812143
公開日2004年7月28日 申請日期2002年4月25日 優(yōu)先權(quán)日2001年4月25日
發(fā)明者米歇爾·比森, 米歇爾 比森, 布里登, 蒂莫西·布里登, 帕克拉特, 查爾斯·帕克拉特, 斯塔姆, 湯姆·斯塔姆, 威爾科克斯, 史蒂文·威爾科克斯 申請人:Bea系統(tǒng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蓝山县| 囊谦县| 庐江县| 雅江县| 格尔木市| 威宁| 长阳| 斗六市| 镇坪县| 陇西县| 云阳县| 吴江市| 安平县| 惠水县| 新绛县| 新竹市| 田林县| 大兴区| 大余县| 肇庆市| 宁海县| 广德县| 湖州市| 新巴尔虎右旗| 南京市| 龙泉市| 瑞安市| 陕西省| 山丹县| 惠州市| 普洱| 浦江县| 威海市| 康保县| 乐业县| 忻城县| 巫溪县| 武清区| 青浦区| 潼南县| 高平市|