| 引言 在本系列的第 1 部分,我們引入了服務(wù)組件體系結構作為編程模型來(lái)構建和組裝集成解決方案,簡(jiǎn)要介紹了什么是 SCA,以及一些相關(guān)術(shù)語(yǔ)的定義。在第 2 部分,我們討論了引用和限定符,并說(shuō)明了如何將各種組件連接到一起以創(chuàng )建 SCA 模塊。在第 3 部分,我們將深入了解構建 SCA 模塊的主要好處之一,即能以各種組件為基礎垂直構建集成解決方案。 隨著(zhù)系統不斷發(fā)展而變得更為復雜,有必要將各種解決方案進(jìn)行水平集成;組織中的不同部門(mén)可能需要構建自己的解決方案并稍后將其集成到一起,或者可能不同的業(yè)務(wù)合作伙伴將需要通過(guò) Internet 集成其解決方案。圖 1 顯示了一個(gè)此類(lèi)水平集成的示例: 圖 1. 集成系統 我們在第 1 部分中定義了 SCA 導入和導出,但我們將在本文中對其進(jìn)行更為深入的研究,并繼續構建我們的精簡(jiǎn)示例。具體來(lái)說(shuō),將重點(diǎn)討論使用 SCA 綁定的 SCA 導入和導出。SCA 綁定允許一個(gè)模塊中的 SCA 組件使用 SCA 編程模型與另一個(gè)模塊中的 SCA 組件通信。 在本文中,我們還將升級到 IBM WebSphere Integration Developer V6.0.1,該版本允許構建特定的集成解決方案,以將 IBM WebSphere Process Server V6.0.1 或 IBM WebSphere Enterprise Service Bus V6.0.1 解決方案結合使用。在這個(gè)新版本中,我們還添加了對構建各種企業(yè)服務(wù)總線(xiàn)(Enterprise Service Bus,ESB)中介的支持。(WebSphere ESB 運行時(shí)是 WebSphere Process Server 的子集;有關(guān)更多信息,請參閱參考資料。)
導入與導出回顧 正如在第 1 部分中提到的,用于進(jìn)行模塊到模塊和模塊到外部服務(wù)調用的機制分別稱(chēng)為導入和導出。導入和導出是從模塊角度而言,而模塊是一個(gè)執行特定業(yè)務(wù)功能的自包含組件包: -
當模塊希望為其他實(shí)體(外部服務(wù)或其他模塊)提供調用業(yè)務(wù)功能的能力時(shí),它將導出此功能。導出還提供通過(guò)各種不同的傳輸協(xié)議提供此服務(wù)的能力。導出與模塊內的特定組件關(guān)聯(lián)。 -
當模塊希望利用其他實(shí)體(外部服務(wù)或模塊)的功能時(shí),該模塊將導入此功能。導入還提供通過(guò)各種傳輸協(xié)議與服務(wù)提供者交換的能力。 圖 2 顯示了一個(gè)使用導入和導出的 SCA 組裝。該圖表明,導出是外部的入口點(diǎn),而導入則允許您調用模塊外的功能。 圖 2. SCA 導入和導出 當通過(guò)導入和導入調用 SCA 組件時(shí),參數將按值傳遞,即參數將從一個(gè)結構中復制到另一個(gè)結構。圖 3 顯示了兩個(gè)彼此進(jìn)行通信的 SCA 模塊,并說(shuō)明了 SCA 導入如何與 SCA 導出匹配。 圖 3. SCA 導入和導出 將 SCA 組件粘附到一起的連接機制抽象出了大部分基礎結構級的代碼。例如,可以將連接機制定義為同步或異步的,操作可以為單向的或為請求-響應型,或者可以定義組件間的事務(wù)處理行為。SCA 將為您處理基礎結構細節。 導入和導出可以與其他技術(shù)綁定,如 JMS、Enterprise JavaBeans (EJB) 或 Web 服務(wù),如圖 4 所示。通過(guò)綁定到這些技術(shù),可以通過(guò)使用 SCA 編程模型來(lái)讓 Web 服務(wù)客戶(hù)機調用 SCA 模塊,或者讓 SCA 模塊調用現有 EJB 模塊(由于 EJB 導入是由 Java? 接口定義的,所以使用 EJB 導入有一些限制;因此,BPEL 之類(lèi)——要求合作伙伴支持 WSDL——無(wú)法調用 EJB 導入。詳見(jiàn)后文)。 圖 4. 與其他技術(shù)的導入與導出
導入/導出綁定 面向服務(wù)的體系結構的一個(gè)關(guān)鍵在于能夠公開(kāi)采用大量綁定選項的服務(wù),以及能夠使用行業(yè)規范調用服務(wù)。正如所指出的,WebSphere Process Server 和 WebSphere ESB 提供了一系列不同的綁定類(lèi)型來(lái)幫助滿(mǎn)足此類(lèi)需求。綁定類(lèi)型使用 Assembly Editor 與導出和導入關(guān)聯(lián)。目前有五種主要的綁定類(lèi)型: -
SCA——用于模塊間的 SCA 調用的綁定類(lèi)型。該綁定類(lèi)型是配置最簡(jiǎn)單的類(lèi)型,可提供模塊間的無(wú)縫集成。 -
Web 服務(wù)——可提供調用外部 Web 服務(wù)和將模塊內的功能作為 Web 服務(wù)公開(kāi)的功能。缺省情況下,Web 服務(wù)將使用 doc-lit 包裝樣式,可以與 HTTP 和 JMS 協(xié)議一起使用。Web 服務(wù)綁定功能是從基礎 WebSphere Application Server 基本 Web 服務(wù)引擎派生的,受到相同的限制。 -
企業(yè)信息系統(Enterprise Information Systems,EIS)——提供通過(guò) WebSphere JCA Adapter 集成到現有 EIS 系統的功能。此綁定類(lèi)型的可用配置將根據目標不同而有所改變(SAP、JDBC Adapter 等等)。企業(yè)數據發(fā)現服務(wù)通常與每個(gè)適配器一起提供,以幫助創(chuàng )建業(yè)務(wù)對象和導入與導出綁定。 -
Java Messaging Service——提供與使用 JMS 作為消息傳遞協(xié)議的端點(diǎn)進(jìn)行集成的功能。在這種情況下,導入和導出使用數據綁定來(lái)幫助解析正確的業(yè)務(wù)對象/操作組合。 -
無(wú)狀態(tài)會(huì )話(huà) Bean——提供使用 Java 接口與無(wú)狀態(tài)會(huì )話(huà) Bean 集成的功能。此功能只有在將 Java 引用連接到 Java 接口時(shí)才可用。在 WebSphere Integration Developer 中,使用 WSDL 引用的組件不允許連接到無(wú)狀態(tài)會(huì )話(huà) Bean 提供的 Java 接口。在此情況下,要求使用具有 WSDL 接口和 Java 引用的中間組件。 在本文中,我們將更深入地討論 SCA 綁定的情況。本系列的后續文章將對其他導入/導出綁定進(jìn)行更為深入的分析。
SCA 綁定 SCA 綁定提供了一致的方法來(lái)在 WebSphere Process Server 或 WebSphere ESB 環(huán)境中跨模塊邊界進(jìn)行通信。將基于客戶(hù)機模塊使用的調用模式自動(dòng)選擇 SCA 綁定所使用的基礎協(xié)議。 SCA 提供四種調用模式。 - 同步——客戶(hù)機發(fā)出請求,并等待響應。
- 異步單向——客戶(hù)機發(fā)出請求,不等待響應。
- 異步延遲響應——客戶(hù)機發(fā)出請求,客戶(hù)機將在稍后請求響應。
- 異步回調——客戶(hù)機發(fā)出請求,目標將調用使用響應調用客戶(hù)機實(shí)現的服務(wù)。
WebSphere Process Server 或 WebSphere ESB SCA 運行時(shí)將確定何時(shí)使用基礎系統集成總線(xiàn)(對于異步調用模式)或 RMI/IIOP(對于同步調用模式)。 SCA 綁定是由導出驅動(dòng)的。在 SCA 模塊安裝到 WebSphere Process Server 的過(guò)程中,將創(chuàng )建必要的支持構件: - 對于異步調用,將在 SCA.SYSTEM.<cell name>.Bus 中創(chuàng )建計算單元范圍內的服務(wù)集成總線(xiàn)(Service Integration Bus,SIBus)目的地。
- 對于同步通信,將創(chuàng )建一個(gè)指向模塊會(huì )話(huà) Bean 的計算單元范圍內的名稱(chēng)空間綁定;模塊會(huì )話(huà) Bean 是無(wú)狀態(tài)會(huì )話(huà) Bean,供模塊用于各種目的,如作為工作邊界、安全配置等的單元。
導入和導出文件一起工作,其中導入文件包含關(guān)于導出的重要信息,可幫助任意數量的客戶(hù)機導入目標服務(wù)。 SCA 運行時(shí)通過(guò)使用 .import 文件中的信息和調用模式(sync 或 async),可確定是使用 SIBus 目的地還是 WebSphere 名稱(chēng)空間綁定。 將創(chuàng )建一系列 SIBus(請參閱參考資料)目的地來(lái)支持 WebSphere Process Server 和 WebSphere ESB 提供的各種異步調用類(lèi)型;將為模塊、組件、導入和導出創(chuàng )建目的地。每個(gè)目的地和轉發(fā)路由路徑將確保將消息路由到正確的目標服務(wù)。圖 5 顯示了 SIBus 目的地的一個(gè)示例。 圖 5. SIBus 目的地 此外,將為模塊中的每個(gè) SCA 導出創(chuàng )建一個(gè)名稱(chēng)空間綁定,如圖 6 中所示。此綁定將在計算單元范圍內創(chuàng )建,并遵循以下命名模式: sca_ + <Module Name> + _export_ + <ExportName>。 圖 6. 名稱(chēng)空間綁定 在給定這兩組構件范圍的情況下,SCA 導出綁定在整個(gè)計算單元內都可見(jiàn)??蛻?hù)端模塊和目標模塊可以放置在計算單元內的任何 WebSphere Process Server 或 WebSphere ESB 服務(wù)器上,且仍然能夠進(jìn)行通信。
導出限定符 使用 SCA 綁定的導入是 SCA 組件在另一個(gè)模塊中的邏輯表示。因此,可以采用與圖 7 所示相同的方法在指向導出的引用上定義限定符。 圖 7. 添加限定符 導出并不包含任何限定符;相反,將要在導出的組件上放置限定符,詳見(jiàn)第 2 部分中的說(shuō)明。
庫項目 跨越模塊邊界,必須考慮共享協(xié)定這一事實(shí)。應用程序通過(guò)接口進(jìn)行通信,彼此傳遞數據對象。這意味著(zhù)接口和業(yè)務(wù)對象應對模塊可見(jiàn),或位于與模塊相同的位置。為了減少在每個(gè)模板中重復定義相同的接口和數據對象,WebSphere Integration Developer 包括了一個(gè)特殊的 SCA 庫模塊,可以將其添加到 SCA 模塊,就像 Java JAR 文件可以為 EAR 文件中獨立的 JAR 一樣。(事實(shí)上,WebSphere Integration Developer 就是這樣處理庫的。)這就允許您在單個(gè)位置中定義接口和業(yè)務(wù)對象,然后讓所有模塊對其進(jìn)行共享。稍后我們將給出一個(gè) SCA 庫示例。 我們的示例應用程序 我們將繼續使用在整個(gè)系列中使用的 Credit Approval 應用程序。在本文中,我們將演示如何通過(guò)將 Credit History 和 Credit Agency 模塊外部化來(lái)使各個(gè)模塊分離,以了解如何配置導出和導入。為了進(jìn)行說(shuō)明,我們還將演示如何在模塊間共享 SCA 庫。 為了運行此示例,您將需要正確安裝 WebSphere Integration Developer V6.0.1(該版本支持 WebSphere ESB)并在您的計算機上運行(請參閱參考資料),還要獲取本文所附的下載材料,其中包含兩個(gè) SCA 模塊(Credit Agency 和 Credit History 模塊)和一個(gè)具有共享接口及業(yè)務(wù)對象的 SCA 庫。 -
設置工作區。 -
啟動(dòng) WebSphere Integration Developer。打開(kāi)新工作區并關(guān)閉歡迎屏幕。 -
您將需要導入所下載的 Project Interchange。為了導入 Project Interchange,在 Business Integration 視圖內單擊右鍵,然后選擇 Import,如圖 8 所示。 圖 8. Eclipse 導入向導 -
選擇 Project Interchange,然后選擇 Next (圖 9)。 圖 9. 導入 Project Interchange -
選擇下載文件 <Download_root>/SCAArticlePart3.zip,然后單擊 Select All,并單擊 Finish (圖 10)。 圖 10. Select All
-
檢查我們剛剛導入的構件: -
從 Business Integration 透視圖中展開(kāi) CreditApprovalLibrary。正如前面提到的,SCA 庫可以用于方便地保存模塊間共享的業(yè)務(wù)對象和接口。圖 11 顯示了 Business Integration 視圖中的 CreditApprovalLibrary。 圖 11. CreditApprovalLibrary 通過(guò)在 Business Integration 透視圖內上下文有關(guān)的菜單中選擇 New => Library,可以方便地創(chuàng )建 Library 項目。在此例中,我們已經(jīng)提供了接口和數據對象。 -
展開(kāi) CreditAgencySCAModule 和 CreditHistory 模塊。 -
為每個(gè)模塊打開(kāi) Assembly Editor。在前面的第 2 部分中的示例中,我們在單個(gè)模塊中包含了多個(gè)組件。在此示例中,我們將對實(shí)現進(jìn)行分離,以模擬多個(gè)獨立的解決方案。通常,SCA 具有包含多個(gè)組件的完整解決方案。對于本文,我們假定這些為不同開(kāi)發(fā)組(不同的管理人員、日程安排和項目規劃)開(kāi)發(fā)的完整解決方案。圖 12 顯示了 Business Integration 視圖中的 SCA 模塊。 圖 12. SCA 模塊 -
這兩個(gè) SCA 模塊都依賴(lài)于 SCA 庫模塊;這個(gè)依賴(lài)關(guān)系可以在 Dependency Editor 看到。分別右鍵單擊每個(gè) SCA 模塊,并選擇 Open Dependency Editor(圖 13)。 圖 13. 打開(kāi) Dependency Editor -
檢查每個(gè)模塊對應的 Dependency Editor,以確保在兩個(gè)模塊間共享了 CreditApprovalLibrary,如果是這樣,CreditApprovalLibrary 將顯示為圖 14 所示的情況。 圖 14. CreditApprovalLibrary - 關(guān)閉編輯器。
創(chuàng )建 SCA 導出 接下來(lái),我們將為每個(gè)模塊創(chuàng )建 SCA 導出,以便可以從其他 SCA 模塊調用此模塊。 -
為 CreditAgencySCAModule 創(chuàng )建導出: -
在 WebSphere Integration Developer 中,打開(kāi) CreditAgencySCAModule Assembly Editor。在 Business Integration 視圖中展開(kāi) CreditAgencySCAModule,并雙擊 CreditAgencySCAModule Assembly Editor 圖標,如下面的圖 15 中所示。 圖 15. 打開(kāi) Assembly Editor -
要創(chuàng )建導出,請右鍵單擊 CreditApproval 組件,并選擇 Export =>SCA Binding(圖 16)。 圖 16. 創(chuàng )建具有 SCA 綁定的 SCA 導出 -
將自動(dòng)為 CreditAgency 組件創(chuàng )建具有 SCA 綁定的導出,如圖 17 中所示。 圖 17. SCA 導出 -
在 Assembly Editor 中選中此導出的同時(shí)查看 Properties 視圖,以檢查導出的各個(gè)屬性。您將會(huì )在 Details 選項卡中看到操作的 SCA 詳細信息,如圖 18 中所示。 圖 18. SCA 導出詳細信息 -
切換到 Qualifiers 選項卡(圖 19)。您會(huì )發(fā)現無(wú)法添加任何限定符。這是因為導出將使用其所指向的組件的限定符。 圖 19. 導出沒(méi)有限定符 -
保存并關(guān)閉 Assembly Editor。 -
采用類(lèi)似的方法為 CreditHistorySCAModule 創(chuàng )建導出: -
和前面一樣,為 CreditHistorySCAModule 打開(kāi) Assembly Editor。 -
和前面一樣,生成具有 SCA 綁定的導出(圖 20)。 圖 20. SCA 導出 -
保存并關(guān)閉編輯器。
創(chuàng )建 Credit Approval 模塊 現在我們將創(chuàng )建要通過(guò)導入調用其他兩個(gè)模塊的 CreditApprovalModule。 -
首先,創(chuàng )建一個(gè)新的 SCA 模塊: -
在 Business Integration 視圖中單擊右鍵,然后選擇 New => Module。 -
將該模塊命名為 CreditApprovalSCAModule(圖 21)。確保選中 Use Default,然后單擊 Finish。 圖 21. 新建 SCA 模塊 -
右鍵單擊新創(chuàng )建的 CreditApprovalSCAModule,并選擇 Open Dependency Editor(圖 22)。 圖 22. 打開(kāi) Dependency Editor -
由于 CreditApproval 模塊將調用其他兩個(gè)模塊,因此需要共享在其間傳遞的接口和業(yè)務(wù)對象。請記住,我們要使用庫來(lái)存儲這些接口和業(yè)務(wù)對象。在 Dependency Editor 中的 Libraries 節中選擇 Add,如圖 23 所示。 圖 23. 向 SCA 模塊添加庫 -
選擇 CreditApprovalLibrary,然后單擊 OK。 -
現在將創(chuàng )建一個(gè)調用組件。出于演示目的,我們將使用基于 Java 的簡(jiǎn)單組件;在以后的文章中,我們將展示調用各種組件和模塊的 BPEL 流。 -
雙擊 CreditApprovalSCAModule Assembly 圖標,以打開(kāi) CreditApprovalSCAModule Assembly Editor(圖 24)。 圖 24. 打開(kāi) SCA Assembly Editor -
將 SCA 組件 (圖 25)拖放到 Assembly Editor 上。 圖 25. 將 SCA 組件拖放到 Assembly Editor 上 -
單擊文本,并鍵入名稱(chēng),從而將組件重命名為 CreditApproval,如圖 26 中所示。 圖 26. 更改組件名稱(chēng)
-
接下來(lái),我們將向該組件添加接口。我們將接口存儲在庫項目中。 -
在組件上單擊 Interface 圖標(圖 27 的圓圈內),然后從菜單中選擇 CreditRequest。 圖 27. 向 SCA 組件添加接口 -
單擊 OK。 我們剛剛創(chuàng )建了一個(gè) SCA 組件。該組件將通過(guò)導入調用其他兩個(gè)模塊。
創(chuàng )建導入 我們已經(jīng)完成了導出的創(chuàng )建,現在就可以開(kāi)始創(chuàng )建 SCA 導入了。我們需要為要調用的每個(gè)導出創(chuàng )建一個(gè) SCA 導入。在我們的示例中,我們將進(jìn)行以下工作: - 調用 CreditAgency 和 CreditHistory 模塊。
- 更新 CreditHistory 導入的限定符,以在異步調用組件時(shí)正確地處理事務(wù)處理行為。
- 假定 History 請求需要花一定的時(shí)間進(jìn)行調用,那么我們將異步發(fā)出 History 請求。
- 在請求之后,同步調用 CreditAgency 模塊。
- 獲取信用分數后,以延遲方式獲取 History Response。
-
首先,為 CreditAgency 調用創(chuàng )建導入: -
從面板上將 import 圖標拖放到 Assembly Editor 上(圖 28)。 圖 28. 將導入拖放到 Assembly Editor 上 -
單擊文本并鍵入 CreditAgencyImport,從而重命名導入,如圖 29 中所示。 圖 29. 重命名導入
-
接下來(lái),我們將添加相應的接口。在此情況下,導入的接口必須與 CreditAgencySCAModule 中對應的導出的導入匹配。 單擊 Import 上方的 Interface 圖標(圖 30 的圓圈內),然后選擇 CreditAgency 接口。 圖 30. 向 SCA 導入添加導入 -
添加相應的綁定,在此例中,添加 SCA 綁定: -
右鍵單擊導入,并選擇 Generate Binding => SCA Binding(圖 31)。 圖 31. 向導入添加 SCA 綁定 -
在 Assembly Editor 中突出顯示導入,轉到 Properties 視圖,并選擇 Binding 部分(圖 32)。單擊 Browse。 圖 32. 瀏覽導出 -
選擇 CreditAgencyExport(圖 33)。 圖 33. 選擇導出
-
接下來(lái),我們需要將 CreditApproval 組件連接到 CreditAgencyImport。 -
在 Assembly Editor 中選擇 CreditApproval 組件,并將一個(gè) wire 拖放到 CreditAgencyImport。 圖 34. 將 SCA 組件連接到 SCA 導入 -
在對話(huà)框中單擊 OK,以在 CreditApproval 組件上創(chuàng )建引用(圖 35)。(在第 2 部分中對引用進(jìn)行了討論。) 圖 35. 確認引用創(chuàng )建 -
保存編輯器,并使其保持為打開(kāi)狀態(tài)。下面的圖顯示了已連接的組件的最終結果。 圖 36. 已連接的 SCA 模塊
-
接下來(lái),我們將為 CreditHistoryModule 創(chuàng )建導入。 -
和前面一樣,將另一個(gè) import 拖放到 Assembly Editor 并將其命名為 CreditHistoryImport。 -
向導入添加 CreditHistory 接口,如圖 37 中所示。 圖 37. 添加 Credit History 接口 -
生成 SCA 綁定,并將 CreditApproval 連接到 CreditHistoryImport。圖 38 顯示了最終的結果。 圖 38. 最終結果
請記住,我們假定 Credit History 組件的處理時(shí)間會(huì )稍微長(cháng)一些,因此首先將觸發(fā)異步請求以獲取 History,并在稍后檢索響應。在 CreditHistory 運行的同時(shí),我們將從 CreditAgency 模塊獲取 Credit Score。然后我們將從 CreditHistory 捕獲響應。我們可以為“服務(wù)”使用正確的 SCA API 來(lái)對 Credit History 模塊進(jìn)行異步調用。在這種情況下,我們希望使用前面描述的延遲響應調用模式。
生成實(shí)現 -
我們現在將為 CreditApproval 組件創(chuàng )建一個(gè)實(shí)現。在我們的示例中,將使用一個(gè)簡(jiǎn)單的 Java 組件。 -
在 Assembly Editor 中,右鍵單擊 CreditApproval 組件,并選擇 Generate Implementation => Java。 圖 39. 生成 Java 實(shí)現 -
暫時(shí)將該類(lèi)放在缺省包中(圖 40)。 圖 40. 缺省包 -
如果希望在稍后添加本地 Java 客戶(hù)機,請在 Implement As... 對話(huà)框中選擇 Yes,以創(chuàng )建一個(gè)匹配的 Java 接口(圖 41)。 圖 41. 為本地 Java 客戶(hù)機創(chuàng )建 Java 接口
-
現在我們將編寫(xiě)實(shí)現的代碼。 -
應在 Java 編輯器中打開(kāi)實(shí)現類(lèi)。正如您在 Java 編輯器中看到的,WebSphere Integration Developer 添加了方便的 Helper,以通過(guò)檢查模塊組裝來(lái)獲取合作伙伴。如果我們首先生成 Java 類(lèi),則這些方法將不存在。 public CreditAgency locateService_CreditAgencyPartner() { return (CreditAgency) ServiceManager.INSTANCE .locateService("CreditAgencyPartner"); } public CreditHistory locateService_CreditHistoryPartner() { return (CreditHistory) ServiceManager.INSTANCE .locateService("CreditHistoryPartner"); } | -
將下面的代碼(在 <download_root>/SCAArticleSeries3/codeSnippet1.txt 中)粘貼到 calulateCreditScore 方法內。異步調用模式以粗體突出顯示。 ServiceManager serviceManager = new ServiceManager(); // create credit rating return data object using the BO factory BOFactory bof = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory" ); DataObject creditRating = bof.create("http://CreditApproval", "CreditRating"); creditRating.setString("customerId", creditApp.getString("customerId")); // create and call credit history service using async deferred response invocation // pattern. CreditHistoryAsync cha = (CreditHistoryAsync) serviceManager.locateService("CreditHistoryPartner"); Ticket tix = cha.getCreditLimitAsync(creditApp); CreditAgency creditAgency = (CreditAgency) locateService_CreditAgencyPartner(); Integer creditScore = creditAgency.getCreditScore(creditApp); Double creditLimit = cha.getCreditLimitResponse(tix, Service.WAIT); creditRating.setInt("creditScore", creditScore.intValue()); creditRating.setDouble("creditLimit", creditLimit.doubleValue()); return creditRating; | -
因為缺少導入,因此在 Eclipse Editor 中應報告一些編譯錯誤(假定啟動(dòng)了自動(dòng)生成功能)。在 Java 編輯器中任意位置單擊右鍵,并選擇 Source => Organize Imports,如圖 42 中所示。 圖 42. Organize imports -
將 BOFactory 接口解析到 com.ibm.websphere.bo,如圖 43 中所示。 圖 43. 解析 BOFactory -
將 Service 接口解析到 com.ibm.websphere.sca,如圖 44 中所示。 圖 44. 將服務(wù)導入解析到 com.ibm.websphere.sca -
保存 Assembly Editor。
測試解決方案 現在可以測試我們的解決方案了。集成模塊時(shí),每個(gè)模塊首先應進(jìn)行相應的單元測試。在本文中,我們將假定各個(gè)開(kāi)發(fā)團隊(CreditHistory 和 CreditAgency)都已對其組件進(jìn)行了相應的測試。 -
將所有三個(gè)模塊都添加到 WebSphere Process Server: -
在 WebSphere Integration Developer 中,轉到 Servers 視圖,右鍵單擊 WebSphere Process Server,并選擇 Add/Romove Project(圖 45)。 圖 45. 向 WebSphere Process Server 添加或刪除項目 -
選擇 Add All,以將全部 SCA 模塊添加到服務(wù)器(圖 46)。 圖 46. 添加所有模塊 -
單擊 Finish。 -
通過(guò) WebSphere Integration Developer 組件測試工具啟動(dòng)服務(wù)器。 - 從 CreditApproval 模塊的 Assembly Editor 中,右鍵單擊 CreditApproval 組件,并選擇 Test Component,如圖 47 所示。
圖 47. 啟動(dòng) Test Component 功能 -
轉到 Configurations 選項卡并刪除兩個(gè)模擬器,如圖 48 中所示。如果合作伙伴不可用,可以使用模擬器來(lái)進(jìn)行模擬,由于我們有實(shí)際的組件,因此不需要模擬器。 圖 48. 刪除模擬器 -
回到 Events 頁(yè),在 Initial 響應參數中輸入一些輸入數據,如圖 49 中所示,然后單擊 Continue。 圖 49. 運行組件測試 -
在 Deployment Location 對話(huà)框中,選擇 WebSphere Process Server v6.0。(圖 50) 圖 50. 選擇 WebSphere Process Server 運行時(shí)
-
現在我們將對調用路徑和結果進(jìn)行檢查。 -
回到 Events 選項卡。從調用路徑中選擇最后一個(gè) Return,以創(chuàng )建結果,如圖 51 中所示。 圖 51. 選擇 Return -
應該看到與圖 52 類(lèi)似的結果。 圖 52. 結果 -
如果分析調用順序,將會(huì )發(fā)現采用了異步調用:我們沒(méi)有采用“請求-響應-請求-響應”的模式,而是使用了“異步請求-請求-響應-異步響應”模式。(圖 53) 圖 53. 異步調用路徑 -
不保存,直接關(guān)閉測試編輯器并停止服務(wù)器。
|