• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            6月1日-----IBM WebSphere 開發(fā)者技術(shù)期刊: 使用服務(wù)組件體系結(jié)構(gòu)(SCA)構(gòu)建 SOA 解決方案——第 3 部分

            在本系列的第 1 部分,我們引入了服務(wù)組件體系結(jié)構(gòu)作為編程模型來構(gòu)建和組裝集成解決方案,簡要介紹了什么是 SCA,以及一些相關(guān)術(shù)語的定義。在第 2 部分,我們討論了引用和限定符,并說明了如何將各種組件連接到一起以創(chuàng)建 SCA 模塊。在第 3 部分,我們將深入了解構(gòu)建 SCA 模塊的主要好處之一,即能以各種組件為基礎(chǔ)垂直構(gòu)建集成解決方案。

            隨著系統(tǒng)不斷發(fā)展而變得更為復雜,有必要將各種解決方案進行水平集成;組織中的不同部門可能需要構(gòu)建自己的解決方案并稍后將其集成到一起,或者可能不同的業(yè)務(wù)合作伙伴將需要通過 Internet 集成其解決方案。圖 1 顯示了一個此類水平集成的示例:


            圖 1. 集成系統(tǒng)
            圖 1. 集成系統(tǒng)

            我們在第 1 部分中定義了 SCA 導入和導出,但我們將在本文中對其進行更為深入的研究,并繼續(xù)構(gòu)建我們的精簡示例。具體來說,將重點討論使用 SCA 綁定的 SCA 導入和導出。SCA 綁定允許一個模塊中的 SCA 組件使用 SCA 編程模型與另一個模塊中的 SCA 組件通信。

            在本文中,我們還將升級到 IBM WebSphere Integration Developer V6.0.1,該版本允許構(gòu)建特定的集成解決方案,以將 IBM WebSphere Process Server V6.0.1 或 IBM WebSphere Enterprise Service Bus V6.0.1 解決方案結(jié)合使用。在這個新版本中,我們還添加了對構(gòu)建各種企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)中介的支持。(WebSphere ESB 運行時是 WebSphere Process Server 的子集;有關(guān)更多信息,請參閱參考資料。)







            導入與導出回顧

            正如在第 1 部分中提到的,用于進行模塊到模塊和模塊到外部服務(wù)調(diào)用的機制分別稱為導入導出。導入和導出是從模塊角度而言,而模塊是一個執(zhí)行特定業(yè)務(wù)功能的自包含組件包:

            • 當模塊希望為其他實體(外部服務(wù)或其他模塊)提供調(diào)用業(yè)務(wù)功能的能力時,它將導出此功能。導出還提供通過各種不同的傳輸協(xié)議提供此服務(wù)的能力。導出與模塊內(nèi)的特定組件關(guān)聯(lián)。

            • 當模塊希望利用其他實體(外部服務(wù)或模塊)的功能時,該模塊將導入此功能。導入還提供通過各種傳輸協(xié)議與服務(wù)提供者交換的能力。

            圖 2 顯示了一個使用導入和導出的 SCA 組裝。該圖表明,導出是外部的入口點,而導入則允許您調(diào)用模塊外的功能。


            圖 2. SCA 導入和導出
            圖 2. SCA 導入和導出

            當通過導入和導入調(diào)用 SCA 組件時,參數(shù)將按值傳遞,即參數(shù)將從一個結(jié)構(gòu)中復制到另一個結(jié)構(gòu)。圖 3 顯示了兩個彼此進行通信的 SCA 模塊,并說明了 SCA 導入如何與 SCA 導出匹配。


            圖 3. SCA 導入和導出
            圖 3. SCA 導入和導出

            將 SCA 組件粘附到一起的連接機制抽象出了大部分基礎(chǔ)結(jié)構(gòu)級的代碼。例如,可以將連接機制定義為同步或異步的,操作可以為單向的或為請求-響應(yīng)型,或者可以定義組件間的事務(wù)處理行為。SCA 將為您處理基礎(chǔ)結(jié)構(gòu)細節(jié)。

            導入和導出可以與其他技術(shù)綁定,如 JMS、Enterprise JavaBeans (EJB) 或 Web 服務(wù),如圖 4 所示。通過綁定到這些技術(shù),可以通過使用 SCA 編程模型來讓 Web 服務(wù)客戶機調(diào)用 SCA 模塊,或者讓 SCA 模塊調(diào)用現(xiàn)有 EJB 模塊(由于 EJB 導入是由 Java? 接口定義的,所以使用 EJB 導入有一些限制;因此,BPEL 之類——要求合作伙伴支持 WSDL——無法調(diào)用 EJB 導入。詳見后文)。


            圖 4. 與其他技術(shù)的導入與導出
            圖 4. 與其他技術(shù)的導入與導出






            導入/導出綁定

            面向服務(wù)的體系結(jié)構(gòu)的一個關(guān)鍵在于能夠公開采用大量綁定選項的服務(wù),以及能夠使用行業(yè)規(guī)范調(diào)用服務(wù)。正如所指出的,WebSphere Process Server 和 WebSphere ESB 提供了一系列不同的綁定類型來幫助滿足此類需求。綁定類型使用 Assembly Editor 與導出和導入關(guān)聯(lián)。目前有五種主要的綁定類型:

            1. SCA——用于模塊間的 SCA 調(diào)用的綁定類型。該綁定類型是配置最簡單的類型,可提供模塊間的無縫集成。

            2. Web 服務(wù)——可提供調(diào)用外部 Web 服務(wù)和將模塊內(nèi)的功能作為 Web 服務(wù)公開的功能。缺省情況下,Web 服務(wù)將使用 doc-lit 包裝樣式,可以與 HTTP 和 JMS 協(xié)議一起使用。Web 服務(wù)綁定功能是從基礎(chǔ) WebSphere Application Server 基本 Web 服務(wù)引擎派生的,受到相同的限制。

            3. 企業(yè)信息系統(tǒng)(Enterprise Information Systems,EIS)——提供通過 WebSphere JCA Adapter 集成到現(xiàn)有 EIS 系統(tǒng)的功能。此綁定類型的可用配置將根據(jù)目標不同而有所改變(SAP、JDBC Adapter 等等)。企業(yè)數(shù)據(jù)發(fā)現(xiàn)服務(wù)通常與每個適配器一起提供,以幫助創(chuàng)建業(yè)務(wù)對象和導入與導出綁定。

            4. Java Messaging Service——提供與使用 JMS 作為消息傳遞協(xié)議的端點進行集成的功能。在這種情況下,導入和導出使用數(shù)據(jù)綁定來幫助解析正確的業(yè)務(wù)對象/操作組合。

            5. 無狀態(tài)會話 Bean——提供使用 Java 接口與無狀態(tài)會話 Bean 集成的功能。此功能只有在將 Java 引用連接到 Java 接口時才可用。在 WebSphere Integration Developer 中,使用 WSDL 引用的組件不允許連接到無狀態(tài)會話 Bean 提供的 Java 接口。在此情況下,要求使用具有 WSDL 接口和 Java 引用的中間組件。

            在本文中,我們將更深入地討論 SCA 綁定的情況。本系列的后續(xù)文章將對其他導入/導出綁定進行更為深入的分析。







            SCA 綁定

            SCA 綁定提供了一致的方法來在 WebSphere Process Server 或 WebSphere ESB 環(huán)境中跨模塊邊界進行通信。將基于客戶機模塊使用的調(diào)用模式自動選擇 SCA 綁定所使用的基礎(chǔ)協(xié)議。

            SCA 提供四種調(diào)用模式。

            • 同步——客戶機發(fā)出請求,并等待響應(yīng)。
            • 異步單向——客戶機發(fā)出請求,不等待響應(yīng)。
            • 異步延遲響應(yīng)——客戶機發(fā)出請求,客戶機將在稍后請求響應(yīng)。
            • 異步回調(diào)——客戶機發(fā)出請求,目標將調(diào)用使用響應(yīng)調(diào)用客戶機實現(xiàn)的服務(wù)。

            WebSphere Process Server 或 WebSphere ESB SCA 運行時將確定何時使用基礎(chǔ)系統(tǒng)集成總線(對于異步調(diào)用模式)或 RMI/IIOP(對于同步調(diào)用模式)。

            SCA 綁定是由導出驅(qū)動的。在 SCA 模塊安裝到 WebSphere Process Server 的過程中,將創(chuàng)建必要的支持構(gòu)件:

            • 對于異步調(diào)用,將在 SCA.SYSTEM.<cell name>.Bus 中創(chuàng)建計算單元范圍內(nèi)的服務(wù)集成總線(Service Integration Bus,SIBus)目的地。
            • 對于同步通信,將創(chuàng)建一個指向模塊會話 Bean 的計算單元范圍內(nèi)的名稱空間綁定;模塊會話 Bean 是無狀態(tài)會話 Bean,供模塊用于各種目的,如作為工作邊界、安全配置等的單元。

            導入和導出文件一起工作,其中導入文件包含關(guān)于導出的重要信息,可幫助任意數(shù)量的客戶機導入目標服務(wù)。

            SCA 運行時通過使用 .import 文件中的信息和調(diào)用模式(sync 或 async),可確定是使用 SIBus 目的地還是 WebSphere 名稱空間綁定。

            將創(chuàng)建一系列 SIBus(請參閱參考資料)目的地來支持 WebSphere Process Server 和 WebSphere ESB 提供的各種異步調(diào)用類型;將為模塊、組件、導入和導出創(chuàng)建目的地。每個目的地和轉(zhuǎn)發(fā)路由路徑將確保將消息路由到正確的目標服務(wù)。圖 5 顯示了 SIBus 目的地的一個示例。


            圖 5. SIBus 目的地
            圖 5. SIBus 目的地

            此外,將為模塊中的每個 SCA 導出創(chuàng)建一個名稱空間綁定,如圖 6 中所示。此綁定將在計算單元范圍內(nèi)創(chuàng)建,并遵循以下命名模式:

            sca_ + <Module Name> + _export_ + <ExportName>。


            圖 6. 名稱空間綁定
            圖 6. 名稱空間綁定

            在給定這兩組構(gòu)件范圍的情況下,SCA 導出綁定在整個計算單元內(nèi)都可見。客戶端模塊和目標模塊可以放置在計算單元內(nèi)的任何 WebSphere Process Server 或 WebSphere ESB 服務(wù)器上,且仍然能夠進行通信。







            導出限定符

            使用 SCA 綁定的導入是 SCA 組件在另一個模塊中的邏輯表示。因此,可以采用與圖 7 所示相同的方法在指向?qū)С龅囊蒙隙x限定符。


            圖 7. 添加限定符
            圖 7. 添加限定符

            導出并不包含任何限定符;相反,將要在導出的組件上放置限定符,詳見第 2 部分中的說明。







            庫項目

            跨越模塊邊界,必須考慮共享協(xié)定這一事實。應(yīng)用程序通過接口進行通信,彼此傳遞數(shù)據(jù)對象。這意味著接口和業(yè)務(wù)對象應(yīng)對模塊可見,或位于與模塊相同的位置。為了減少在每個模板中重復定義相同的接口和數(shù)據(jù)對象,WebSphere Integration Developer 包括了一個特殊的 SCA 庫模塊,可以將其添加到 SCA 模塊,就像 Java JAR 文件可以為 EAR 文件中獨立的 JAR 一樣。(事實上,WebSphere Integration Developer 就是這樣處理庫的。)這就允許您在單個位置中定義接口和業(yè)務(wù)對象,然后讓所有模塊對其進行共享。稍后我們將給出一個 SCA 庫示例。

            我們的示例應(yīng)用程序

            我們將繼續(xù)使用在整個系列中使用的 Credit Approval 應(yīng)用程序。在本文中,我們將演示如何通過將 Credit History 和 Credit Agency 模塊外部化來使各個模塊分離,以了解如何配置導出和導入。為了進行說明,我們還將演示如何在模塊間共享 SCA 庫。

            為了運行此示例,您將需要正確安裝 WebSphere Integration Developer V6.0.1(該版本支持 WebSphere ESB)并在您的計算機上運行(請參閱參考資料),還要獲取本文所附的下載材料,其中包含兩個 SCA 模塊(Credit Agency 和 Credit History 模塊)和一個具有共享接口及業(yè)務(wù)對象的 SCA 庫。

            1. 設(shè)置工作區(qū)。

              1. 啟動 WebSphere Integration Developer。打開新工作區(qū)并關(guān)閉歡迎屏幕。

              2. 您將需要導入所下載的 Project Interchange。為了導入 Project Interchange,在 Business Integration 視圖內(nèi)單擊右鍵,然后選擇 Import,如圖 8 所示。


                圖 8. Eclipse 導入向?qū)?/b>
                圖 8. Eclipse 導入向?qū)? src=
              3. 選擇 Project Interchange,然后選擇 Next (圖 9)。


                圖 9. 導入 Project Interchange
                圖 9. 導入 Project Interchange
              4. 選擇下載文件 <Download_root>/SCAArticlePart3.zip,然后單擊 Select All,并單擊 Finish (圖 10)。


                圖 10. Select All
                圖 10. Select All
            2. 檢查我們剛剛導入的構(gòu)件:

              1. 從 Business Integration 透視圖中展開 CreditApprovalLibrary。正如前面提到的,SCA 庫可以用于方便地保存模塊間共享的業(yè)務(wù)對象和接口。圖 11 顯示了 Business Integration 視圖中的 CreditApprovalLibrary。


                圖 11. CreditApprovalLibrary
                圖 11. CreditApprovalLibrary

                通過在 Business Integration 透視圖內(nèi)上下文有關(guān)的菜單中選擇 New => Library,可以方便地創(chuàng)建 Library 項目。在此例中,我們已經(jīng)提供了接口和數(shù)據(jù)對象。

              2. 展開 CreditAgencySCAModuleCreditHistory 模塊。

              3. 為每個模塊打開 Assembly Editor。在前面的第 2 部分中的示例中,我們在單個模塊中包含了多個組件。在此示例中,我們將對實現(xiàn)進行分離,以模擬多個獨立的解決方案。通常,SCA 具有包含多個組件的完整解決方案。對于本文,我們假定這些為不同開發(fā)組(不同的管理人員、日程安排和項目規(guī)劃)開發(fā)的完整解決方案。圖 12 顯示了 Business Integration 視圖中的 SCA 模塊。


                圖 12. SCA 模塊
                圖 12. SCA 模塊
              4. 這兩個 SCA 模塊都依賴于 SCA 庫模塊;這個依賴關(guān)系可以在 Dependency Editor 看到。分別右鍵單擊每個 SCA 模塊,并選擇 Open Dependency Editor(圖 13)。


                圖 13. 打開 Dependency Editor
                圖 13. 打開 Dependency Editor
              5. 檢查每個模塊對應(yīng)的 Dependency Editor,以確保在兩個模塊間共享了 CreditApprovalLibrary,如果是這樣,CreditApprovalLibrary 將顯示為圖 14 所示的情況。


                圖 14. CreditApprovalLibrary
                圖 14. CreditApprovalLibrary
              6. 關(guān)閉編輯器。






            創(chuàng)建 SCA 導出

            接下來,我們將為每個模塊創(chuàng)建 SCA 導出,以便可以從其他 SCA 模塊調(diào)用此模塊。

            1. 為 CreditAgencySCAModule 創(chuàng)建導出:

              1. 在 WebSphere Integration Developer 中,打開 CreditAgencySCAModule Assembly Editor。在 Business Integration 視圖中展開 CreditAgencySCAModule,并雙擊 CreditAgencySCAModule Assembly Editor 圖標,如下面的圖 15 中所示。


                圖 15. 打開 Assembly Editor
                圖 15. 打開 Assembly Editor
              2. 要創(chuàng)建導出,請右鍵單擊 CreditApproval 組件,并選擇 Export =>SCA Binding(圖 16)。


                圖 16. 創(chuàng)建具有 SCA 綁定的 SCA 導出
                圖 16. 創(chuàng)建具有 SCA 綁定的 SCA 導出
              3. 將自動為 CreditAgency 組件創(chuàng)建具有 SCA 綁定的導出,如圖 17 中所示。


                圖 17. SCA 導出
                圖 17. SCA 導出
              4. 在 Assembly Editor 中選中此導出的同時查看 Properties 視圖,以檢查導出的各個屬性。您將會在 Details 選項卡中看到操作的 SCA 詳細信息,如圖 18 中所示。


                圖 18. SCA 導出詳細信息
                圖 18. SCA 導出詳細信息
              5. 切換到 Qualifiers 選項卡(圖 19)。您會發(fā)現(xiàn)無法添加任何限定符。這是因為導出將使用其所指向的組件的限定符。


                圖 19. 導出沒有限定符
                圖 19. 導出沒有限定符
              6. 保存并關(guān)閉 Assembly Editor。

            2. 采用類似的方法為 CreditHistorySCAModule 創(chuàng)建導出:

              1. 和前面一樣,為 CreditHistorySCAModule 打開 Assembly Editor。

              2. 和前面一樣,生成具有 SCA 綁定的導出(圖 20)。


                圖 20. SCA 導出
                圖 20. SCA 導出
              3. 保存并關(guān)閉編輯器。







            創(chuàng)建 Credit Approval 模塊

            現(xiàn)在我們將創(chuàng)建要通過導入調(diào)用其他兩個模塊的 CreditApprovalModule。

            1. 首先,創(chuàng)建一個新的 SCA 模塊:

              1. 在 Business Integration 視圖中單擊右鍵,然后選擇 New => Module

              2. 將該模塊命名為 CreditApprovalSCAModule(圖 21)。確保選中 Use Default,然后單擊 Finish


                圖 21. 新建 SCA 模塊
                圖 21. 新建 SCA 模塊
              3. 右鍵單擊新創(chuàng)建的 CreditApprovalSCAModule,并選擇 Open Dependency Editor(圖 22)。


                圖 22. 打開 Dependency Editor
                圖 22. 打開 Dependency Editor
              4. 由于 CreditApproval 模塊將調(diào)用其他兩個模塊,因此需要共享在其間傳遞的接口和業(yè)務(wù)對象。請記住,我們要使用庫來存儲這些接口和業(yè)務(wù)對象。在 Dependency Editor 中的 Libraries 節(jié)中選擇 Add,如圖 23 所示。


                圖 23. 向 SCA 模塊添加庫
                圖 23. 向 SCA 模塊添加庫
              5. 選擇 CreditApprovalLibrary,然后單擊 OK

            2. 現(xiàn)在將創(chuàng)建一個調(diào)用組件。出于演示目的,我們將使用基于 Java 的簡單組件;在以后的文章中,我們將展示調(diào)用各種組件和模塊的 BPEL 流。

              1. 雙擊 CreditApprovalSCAModule Assembly 圖標,以打開 CreditApprovalSCAModule Assembly Editor(圖 24)。


                圖 24. 打開 SCA Assembly Editor
                圖 24. 打開 SCA Assembly Editor
              2. 將 SCA 組件 組件圖標(圖 25)拖放到 Assembly Editor 上。


                圖 25. 將 SCA 組件拖放到 Assembly Editor 上
                圖 25. 將 SCA 組件拖放到 Assembly Editor 上
              3. 單擊文本,并鍵入名稱,從而將組件重命名為 CreditApproval,如圖 26 中所示。


                圖 26. 更改組件名稱
                圖 26. 更改組件名稱
            3. 接下來,我們將向該組件添加接口。我們將接口存儲在庫項目中。

              1. 在組件上單擊 Interface 圖標(圖 27 的圓圈內(nèi)),然后從菜單中選擇 CreditRequest


                圖 27. 向 SCA 組件添加接口
                圖 27. 向 SCA 組件添加接口
              2. 單擊 OK

            我們剛剛創(chuàng)建了一個 SCA 組件。該組件將通過導入調(diào)用其他兩個模塊。







            創(chuàng)建導入

            我們已經(jīng)完成了導出的創(chuàng)建,現(xiàn)在就可以開始創(chuàng)建 SCA 導入了。我們需要為要調(diào)用的每個導出創(chuàng)建一個 SCA 導入。在我們的示例中,我們將進行以下工作:

            • 調(diào)用 CreditAgency 和 CreditHistory 模塊。
            • 更新 CreditHistory 導入的限定符,以在異步調(diào)用組件時正確地處理事務(wù)處理行為。
            • 假定 History 請求需要花一定的時間進行調(diào)用,那么我們將異步發(fā)出 History 請求。
            • 在請求之后,同步調(diào)用 CreditAgency 模塊。
            • 獲取信用分數(shù)后,以延遲方式獲取 History Response。
            1. 首先,為 CreditAgency 調(diào)用創(chuàng)建導入:

              1. 從面板上將 import 圖標拖放到 Assembly Editor 上(圖 28)。


                圖 28. 將導入拖放到 Assembly Editor 上
                圖 28. 將導入拖放到 Assembly Editor 上
              2. 單擊文本并鍵入 CreditAgencyImport,從而重命名導入,如圖 29 中所示。


                圖 29. 重命名導入
                圖 29. 重命名導入
            2. 接下來,我們將添加相應(yīng)的接口。在此情況下,導入的接口必須與 CreditAgencySCAModule 中對應(yīng)的導出的導入匹配。

              單擊 Import 上方的 Interface 圖標(圖 30 的圓圈內(nèi)),然后選擇 CreditAgency 接口。


              圖 30. 向 SCA 導入添加導入
              圖 30. 向 SCA 導入添加導入
            3. 添加相應(yīng)的綁定,在此例中,添加 SCA 綁定:

              1. 右鍵單擊導入,并選擇 Generate Binding => SCA Binding(圖 31)。


                圖 31. 向?qū)胩砑?SCA 綁定
                圖 31. 向?qū)胩砑?SCA 綁定
              2. 在 Assembly Editor 中突出顯示導入,轉(zhuǎn)到 Properties 視圖,并選擇 Binding 部分(圖 32)。單擊 Browse


                圖 32. 瀏覽導出
                圖 32. 瀏覽導出
              3. 選擇 CreditAgencyExport(圖 33)。


                圖 33. 選擇導出
                圖 33. 選擇導出
            4. 接下來,我們需要將 CreditApproval 組件連接到 CreditAgencyImport。

              1. 在 Assembly Editor 中選擇 CreditApproval 組件,并將一個 wire 拖放到 CreditAgencyImport。


                圖 34. 將 SCA 組件連接到 SCA 導入
                圖 34. 將 SCA 組件連接到 SCA 導入
              2. 在對話框中單擊 OK,以在 CreditApproval 組件上創(chuàng)建引用(圖 35)。(在第 2 部分中對引用進行了討論。)


                圖 35. 確認引用創(chuàng)建
                圖 35. 確認引用創(chuàng)建
              3. 保存編輯器,并使其保持為打開狀態(tài)。下面的圖顯示了已連接的組件的最終結(jié)果。


                圖 36. 已連接的 SCA 模塊
                圖 36. 已連接的 SCA 模塊
            5. 接下來,我們將為 CreditHistoryModule 創(chuàng)建導入。

              1. 和前面一樣,將另一個 import 拖放到 Assembly Editor 并將其命名為 CreditHistoryImport

              2. 向?qū)胩砑?CreditHistory 接口,如圖 37 中所示。


                圖 37. 添加 Credit History 接口
                圖 37. 添加 Credit History 接口
              3. 生成 SCA 綁定,并將 CreditApproval 連接到 CreditHistoryImport。圖 38 顯示了最終的結(jié)果。


                圖 38. 最終結(jié)果
                圖 38. 最終結(jié)果

            請記住,我們假定 Credit History 組件的處理時間會稍微長一些,因此首先將觸發(fā)異步請求以獲取 History,并在稍后檢索響應(yīng)。在 CreditHistory 運行的同時,我們將從 CreditAgency 模塊獲取 Credit Score。然后我們將從 CreditHistory 捕獲響應(yīng)。我們可以為“服務(wù)”使用正確的 SCA API 來對 Credit History 模塊進行異步調(diào)用。在這種情況下,我們希望使用前面描述的延遲響應(yīng)調(diào)用模式。







            生成實現(xiàn)

            1. 我們現(xiàn)在將為 CreditApproval 組件創(chuàng)建一個實現(xiàn)。在我們的示例中,將使用一個簡單的 Java 組件。

              1. 在 Assembly Editor 中,右鍵單擊 CreditApproval 組件,并選擇 Generate Implementation => Java


                圖 39. 生成 Java 實現(xiàn)
                圖 39. 生成 Java 實現(xiàn)
              2. 暫時將該類放在缺省包中(圖 40)。


                圖 40. 缺省包
                圖 40. 缺省包
              3. 如果希望在稍后添加本地 Java 客戶機,請在 Implement As... 對話框中選擇 Yes,以創(chuàng)建一個匹配的 Java 接口(圖 41)。


                圖 41. 為本地 Java 客戶機創(chuàng)建 Java 接口
                圖 41. 為本地 Java 客戶機創(chuàng)建 Java 接口
            2. 現(xiàn)在我們將編寫實現(xiàn)的代碼。

              1. 應(yīng)在 Java 編輯器中打開實現(xiàn)類。正如您在 Java 編輯器中看到的,WebSphere Integration Developer 添加了方便的 Helper,以通過檢查模塊組裝來獲取合作伙伴。如果我們首先生成 Java 類,則這些方法將不存在。

                																				
                																						public CreditAgency locateService_CreditAgencyPartner() {
                	return (CreditAgency) ServiceManager.INSTANCE
                			.locateService("CreditAgencyPartner");
                }
                
                public CreditHistory locateService_CreditHistoryPartner() {
                	return (CreditHistory) ServiceManager.INSTANCE
                			.locateService("CreditHistoryPartner");
                }
                																				
                																		

              2. 將下面的代碼(在 <download_root>/SCAArticleSeries3/codeSnippet1.txt 中)粘貼到 calulateCreditScore 方法內(nèi)。異步調(diào)用模式以粗體突出顯示。

                																				
                																						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;
                																				
                																		

              3. 因為缺少導入,因此在 Eclipse Editor 中應(yīng)報告一些編譯錯誤(假定啟動了自動生成功能)。在 Java 編輯器中任意位置單擊右鍵,并選擇 Source => Organize Imports,如圖 42 中所示。


                圖 42. Organize imports
                圖 42. Organize imports
              4. 將 BOFactory 接口解析到 com.ibm.websphere.bo,如圖 43 中所示。


                圖 43. 解析 BOFactory
                圖 43. 解析 BOFactory
              5. 將 Service 接口解析到 com.ibm.websphere.sca,如圖 44 中所示。


                圖 44. 將服務(wù)導入解析到 com.ibm.websphere.sca
                圖 44. 將服務(wù)導入解析到 com.ibm.websphere.sca
              6. 保存 Assembly Editor。







            測試解決方案

            現(xiàn)在可以測試我們的解決方案了。集成模塊時,每個模塊首先應(yīng)進行相應(yīng)的單元測試。在本文中,我們將假定各個開發(fā)團隊(CreditHistory 和 CreditAgency)都已對其組件進行了相應(yīng)的測試。

            1. 將所有三個模塊都添加到 WebSphere Process Server:

              1. 在 WebSphere Integration Developer 中,轉(zhuǎn)到 Servers 視圖,右鍵單擊 WebSphere Process Server,并選擇 Add/Romove Project(圖 45)。


                圖 45. 向 WebSphere Process Server 添加或刪除項目
                圖 45. 向 WebSphere Process Server 添加或刪除項目
              2. 選擇 Add All,以將全部 SCA 模塊添加到服務(wù)器(圖 46)。


                圖 46. 添加所有模塊
                圖 46. 添加所有模塊
              3. 單擊 Finish

            2. 通過 WebSphere Integration Developer 組件測試工具啟動服務(wù)器。

              1. 從 CreditApproval 模塊的 Assembly Editor 中,右鍵單擊 CreditApproval 組件,并選擇 Test Component,如圖 47 所示。
                圖 47. 啟動 Test Component 功能
                圖 47. 啟動 Test Component 功能
              2. 轉(zhuǎn)到 Configurations 選項卡并刪除兩個模擬器,如圖 48 中所示。如果合作伙伴不可用,可以使用模擬器來進行模擬,由于我們有實際的組件,因此不需要模擬器。


                圖 48. 刪除模擬器
                圖 48. 刪除模擬器
              3. 回到 Events 頁,在 Initial 響應(yīng)參數(shù)中輸入一些輸入數(shù)據(jù),如圖 49 中所示,然后單擊 Continue


                圖 49. 運行組件測試
                圖 49. 運行組件測試
              4. 在 Deployment Location 對話框中,選擇 WebSphere Process Server v6.0。(圖 50)


                圖 50. 選擇 WebSphere Process Server 運行時
                圖 50. 選擇 WebSphere Process Server 運行時
            3. 現(xiàn)在我們將對調(diào)用路徑和結(jié)果進行檢查。

              1. 回到 Events 選項卡。從調(diào)用路徑中選擇最后一個 Return,以創(chuàng)建結(jié)果,如圖 51 中所示。


                圖 51. 選擇 Return
                圖 51. 選擇 Return
              2. 應(yīng)該看到與圖 52 類似的結(jié)果。


                圖 52. 結(jié)果
                圖 52. 結(jié)果
              3. 如果分析調(diào)用順序,將會發(fā)現(xiàn)采用了異步調(diào)用:我們沒有采用“請求-響應(yīng)-請求-響應(yīng)”的模式,而是使用了“異步請求-請求-響應(yīng)-異步響應(yīng)”模式。(圖 53)


                圖 53. 異步調(diào)用路徑
                圖 53. 異步調(diào)用路徑
              4. 不保存,直接關(guān)閉測試編輯器并停止服務(wù)器。







            結(jié)束語

            通過導入和導出,我們可以將解決方案以面向服務(wù)的方式對外公開。在本文中,您了解了如何使用 SCA 導入和導出集成 SCA 解決方案。第 4 部分,我們將討論如何使用其他某些綁定(如 Web 服務(wù)和 JMS)與其他解決方案進行集成。

            posted on 2006-06-01 16:56 wsdfsdf 閱讀(290) 評論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            欧美噜噜久久久XXX| 人妻无码αv中文字幕久久琪琪布| 亚洲级αV无码毛片久久精品| 亚洲国产精品成人久久| 波多野结衣AV无码久久一区| 精品久久久久久久无码| 久久国产影院| 久久妇女高潮几次MBA| 亚洲狠狠综合久久| 精品无码久久久久国产动漫3d| 男女久久久国产一区二区三区| 精品久久久久久久久久中文字幕| 久久精品国产网红主播| 中文字幕无码久久精品青草| 久久777国产线看观看精品| 久久婷婷午色综合夜啪| 久久亚洲欧美日本精品| 久久天堂AV综合合色蜜桃网| 91亚洲国产成人久久精品网址| 久久久久久久久波多野高潮| 99久久精品国产综合一区| 中文字幕人妻色偷偷久久| 日韩精品无码久久一区二区三| 91亚洲国产成人久久精品| 无遮挡粉嫩小泬久久久久久久| 看全色黄大色大片免费久久久| 久久精品国产一区二区三区 | 色综合久久88色综合天天 | 97精品久久天干天天天按摩| 精品蜜臀久久久久99网站| 理论片午午伦夜理片久久 | 精品久久无码中文字幕| 国产成人久久精品一区二区三区| 欧美粉嫩小泬久久久久久久| 久久国产精品99精品国产987| 久久99精品久久久久久久不卡| 久久99热这里只有精品国产| 久久人人爽人人爽人人爽| 久久综合色老色| 亚洲精品国精品久久99热一| 精品人妻伦九区久久AAA片69|