• <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, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

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

            引言

            您可能認(rèn)為,這太棒了,又出現(xiàn)了一個(gè)編程模型,但事實(shí)并非如此。Web 服務(wù)怎么樣了?Enterprise JavaBeans 發(fā)生了什么?服務(wù)組件體系結(jié)構(gòu) (SCA) 并非要替換任何現(xiàn)有的編程模型或者與其抗衡。相反,SCA 向您提供一個(gè)以與技術(shù)無關(guān)的方式定義接口、實(shí)現(xiàn)和引用的模型,從而使您能夠?qū)⑦@些元素綁定到所選擇的某一技術(shù)的特定實(shí)現(xiàn)。

            例如,我們可以用 Java 定義我們的接口,將我們的實(shí)現(xiàn)作為 BPEL 流程加以應(yīng)用,或者將接口作為一個(gè) WSDL 文檔,而且我們的實(shí)現(xiàn)可以是一個(gè) Java? 類。圖 1 演示了如何在 IBM WebSphere Process Server 中使用 SCA。


            圖 1. WebSphere Process Server 中的 SCA
            圖 1. WebSphere Process Server 中的 SCA

            使用 WebSphere Process Server,集成開發(fā)人員可以擁有各種不同的現(xiàn)成實(shí)現(xiàn)技術(shù),并且可以采用開放標(biāo)準(zhǔn)(如通過 Java 或者 WSDL)來公開接口。此外,SCA 還提供了一個(gè)客戶機(jī)編程模型,通過該模型,客戶機(jī)可以訪問服務(wù)組件。這使得開發(fā)人員可以繼續(xù)使用他們熟悉的各種技術(shù)(如 Enterprise JavaBeans? (EJB))進(jìn)行開發(fā),并且使用 SCA 將這些組件連接在一起。

            SCA 的另一個(gè)主要部分是它還定義了一個(gè)標(biāo)準(zhǔn)模型,用于定義組件之間的依賴項(xiàng)。因此,通過使用引用連接 SCA 組件,可以定義依賴項(xiàng)。


            圖 2. 定義組件之間的依賴項(xiàng)
            圖 2. 定義組件之間的依賴項(xiàng)

            最后,SCA 定義了一個(gè)標(biāo)準(zhǔn)的部署模型,用于將組件打包到服務(wù)模塊。可以定義 SCA 組件以及與其相關(guān)聯(lián)的依賴項(xiàng),并且將它們打包到部署單元。


            圖 3. 與依賴項(xiàng)一起打包的組件
            圖 3. 與依賴項(xiàng)一起打包的組件

            SCA 模塊并非只是另一種類型的包。在 WebSphere Process Server 中,SCA 服務(wù)模塊等同于一個(gè) J2EE EAR 文件和許多其他 J2EE 子模塊。J2EE 元素(如 WAR 文件)可以與 SCA 模塊一起打包。非 SCA 構(gòu)件(JSP 以及其他構(gòu)件)也可以同 SCA 服務(wù)模塊打包在一起,這使得它們可以使用一種稱為獨(dú)立引用的特殊類型的引用,來通過 SCA 客戶機(jī)編程模型調(diào)用 SCA 服務(wù)。


            圖 4. 用于非 SCA 構(gòu)件的獨(dú)立引用
            圖 4. 用于非 SCA 構(gòu)件的獨(dú)立引用

            SCA 與集成有著緊密的聯(lián)系;我們將上述引用作為一種定義 SCA 組件之間的依賴項(xiàng)的方式進(jìn)行了描述。例如,我們可以定義對(duì)同一個(gè)模塊內(nèi)的另一個(gè) SCA 組件的引用。當(dāng)使用引用調(diào)用同一個(gè)模塊內(nèi)的服務(wù)組件時(shí),數(shù)據(jù)通過引用進(jìn)行傳遞。SCA 定義了調(diào)用組件或其他 SCA 服務(wù)(位于其他 SCA 模塊內(nèi))的方式。

            用于模塊到模塊和模塊到外部服務(wù)調(diào)用的這兩種機(jī)制稱為導(dǎo)入導(dǎo)出

            導(dǎo)入和導(dǎo)出是從模塊的角度表述的。模塊是一組執(zhí)行特定業(yè)務(wù)功能的自包含 (self-contained) 組件。

            當(dāng)模塊需要向另一個(gè)實(shí)體(外部服務(wù)或其他模塊)提供功能來調(diào)用業(yè)務(wù)功能時(shí),它將導(dǎo)出該功能。導(dǎo)出使得可以通過多種不同的傳輸協(xié)議來使用此服務(wù)。導(dǎo)出與模塊內(nèi)的某個(gè)特定組件相關(guān)聯(lián)。

            當(dāng)模塊需要利用另一個(gè)實(shí)體(外部服務(wù)或模塊)的功能時(shí),模塊將導(dǎo)入該功能。導(dǎo)入還提供了通過多種傳輸協(xié)議與服務(wù)提供者交互的功能。

            圖 5 闡釋了這些概念。


            圖 5. SCA 導(dǎo)入和導(dǎo)出
            圖 5. SCA 導(dǎo)入和導(dǎo)出

            導(dǎo)入和導(dǎo)出是抽象概念。它們需要綁定到某一特定技術(shù)。WebSphere Process Server V6.0 中提供的綁定類型有:

            • SCA(用于 SCA 模塊到模塊)
            • Web 服務(wù)
            • JMS
            • 無狀態(tài)會(huì)話 Bean。

            當(dāng)通過導(dǎo)入和導(dǎo)出調(diào)用 SCA 組件時(shí),參數(shù)通過值進(jìn)行傳遞。


            圖 6. SCA 導(dǎo)入和導(dǎo)出
            圖 6. SCA 導(dǎo)入和導(dǎo)出

            連接 SCA 組件的網(wǎng)絡(luò)將大部分基礎(chǔ)結(jié)構(gòu)級(jí)別的代碼抽象出來。例如,我們可以將網(wǎng)絡(luò)定義為同步或異步,將操作定義為單向或請(qǐng)求-響應(yīng),我們也可以定義組件之間的事務(wù)行為。SCA 為您處理基礎(chǔ)結(jié)構(gòu)方面的細(xì)節(jié)。我們將在這一系列文章中對(duì)這些細(xì)節(jié)進(jìn)行更詳細(xì)的描述。

            導(dǎo)入和導(dǎo)出還可以綁定到其他技術(shù),例如 JMS、Enterprise JavaBean 或者 Web 服務(wù)。這樣,Web 服務(wù)客戶機(jī)就可以調(diào)用 SCA 模塊,而 SCA 模塊就可以使用 SCA 編程模型調(diào)用現(xiàn)有的 Enterprise JavaBean。


            圖 7. 使用其他技術(shù)的導(dǎo)入和導(dǎo)出
            圖 7. 使用其他技術(shù)的導(dǎo)入和導(dǎo)出

            我們將在本系列的后續(xù)文章中討論導(dǎo)入和導(dǎo)出。

            數(shù)據(jù)方面的情況如何?

            SCA 向我們提供了一個(gè)用于定義業(yè)務(wù)服務(wù)的通用模型。服務(wù)數(shù)據(jù)對(duì)象 (SDO) 提供了一種用通用模型來表示數(shù)據(jù)的方法。可以將 SCA 組件組合在一起,并且通過傳遞 SDO 來以一種中立的方式相互交換數(shù)據(jù)。SDO 體系結(jié)構(gòu)中的基本概念是數(shù)據(jù)對(duì)象,它是用于存放基元類型的數(shù)據(jù)和/或其他數(shù)據(jù)對(duì)象的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)對(duì)象還存放對(duì)元數(shù)據(jù)的引用,元數(shù)據(jù)提供有關(guān)包含在數(shù)據(jù)對(duì)象中的數(shù)據(jù)的信息。

            在 SDO 編程模型中,數(shù)據(jù)對(duì)象是以 commonj.sdo.DataObject Java 接口定義表示的。該接口包含方法定義,通過方法定義,客戶機(jī)可以獲取和設(shè)置與數(shù)據(jù)對(duì)象相關(guān)聯(lián)的屬性。SDO 體系結(jié)構(gòu)中的另一個(gè)重要概念是數(shù)據(jù)圖,它是封裝一組數(shù)據(jù)對(duì)象的結(jié)構(gòu)。對(duì)于包含在數(shù)據(jù)圖中的頂層數(shù)據(jù)對(duì)象,可以從根數(shù)據(jù)對(duì)象開始遍歷引用來到達(dá)所有子數(shù)據(jù)對(duì)象。數(shù)據(jù)圖中的另一個(gè)重要功能是更改摘要,用于記錄關(guān)于在處理過程中已經(jīng)更改的圖中的數(shù)據(jù)對(duì)象和屬性的信息。(有關(guān) SDO 的詳細(xì)信息,請(qǐng)參閱參考資料。)

            WebSphere Process Server 通過業(yè)務(wù)對(duì)象實(shí)現(xiàn) SDO 規(guī)范。SCA 組件可以通過傳遞業(yè)務(wù)對(duì)象來交換數(shù)據(jù),如圖 8 所示。


            圖 8. WebSphere Process Server 業(yè)務(wù)對(duì)象
            圖 8. WebSphere Process Server 業(yè)務(wù)對(duì)象

            與 SDO 包裝在數(shù)據(jù)圖中一樣,業(yè)務(wù)圖用于包裝頂層業(yè)務(wù)對(duì)象,并且提供用來補(bǔ)充包含在圖中的數(shù)據(jù)的附加信息。具體來說,業(yè)務(wù)圖包括圖中數(shù)據(jù)的更改摘要(類似于 SDO 更改摘要信息)、事件摘要和謂詞信息(用于 EIS 系統(tǒng)之間的數(shù)據(jù)同步)。業(yè)務(wù)圖與 SDO 體系結(jié)構(gòu)中的數(shù)據(jù)圖的概念非常相似。然而,新增信息的事件摘要和謂詞部分沒有包含在 SDO 數(shù)據(jù)圖概念中。







            SCA 101

            既然我們已經(jīng)概括地介紹了 SCA,就可以通過一個(gè)示例來討論某些具體細(xì)節(jié)。在構(gòu)建示例的過程中,我們將對(duì) IBM WebSphere Integration Developer 進(jìn)行概述,您可以使用該工具來以可見的方式構(gòu)建和集成 SCA 組件。

            概述

            為了演示 SCA 和業(yè)務(wù)對(duì)象的各個(gè)方面,我們將討論與一個(gè)業(yè)務(wù)案例有關(guān)的這些概念。與所有開發(fā)工作一樣,開發(fā)周期必須從需求開始。該場景中的需求包括創(chuàng)建信用審批服務(wù),該服務(wù)將接收關(guān)于申請(qǐng)者 (CreditApplication) 的信息,并通過信用等級(jí) (CreditRating) 進(jìn)行響應(yīng)。

            SCA 中最簡單的部分是服務(wù)組件。如前所述,服務(wù)組件是由一個(gè)接口和一個(gè)實(shí)現(xiàn)構(gòu)成的。用來“編碼”這些構(gòu)件的技術(shù)可以有所不同;在 WebSphere Process Server 中,接口可以是 Java 或者 WSDL。Java 接口可以是 Plain Old Java Interface (POJI),如下所示:


            清單 1
            												
            																		
            public interface CreditRequest
            {
            
            	public DataObject calulateCreditScore(DataObject creditApp)
            			throws ServiceBusinessException;
            
            }
            												
            										

            如果您使用 Java 實(shí)現(xiàn),則可以創(chuàng)建一個(gè)簡單的 POJO。下面是一個(gè)用作 SCA 實(shí)現(xiàn)的 POJO 的示例:


            清單 2
            												
            																		
            public class CreditApprovalImpl implements CreditRequest {
            	
            	public DataObject calulateCreditScore(DataObject creditApp) {
            		
            		ServiceManager serviceManager = new ServiceManager();
            
            		BOFactory bof = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
            
            		DataObject creditRating = bof.create("http://CreditApproval", "CreditRating");
            
            		
            		creditRating.setString("customerId", creditApp.getString("customerId"));
            		
            		creditRating.setInt("creditScore", 750);
            		creditRating.setDouble("creditLimit", 10000d);
            				
            		return creditRating;
            	}
            
            }
            												
            										

            在這個(gè)實(shí)現(xiàn)類中,我們使用 CreditApplication 輸入創(chuàng)建一個(gè)簡單的 CreditRating 業(yè)務(wù)對(duì)象,然后我們將該業(yè)務(wù)對(duì)象返回到調(diào)用程序。

            服務(wù)組件是在服務(wù)組件定義語言(Service Component Definition Language,SCDL)文件中定義的。使用 SCDL 創(chuàng)建的組件文件與 EJB 部署描述符有些類似,這是因?yàn)樗x了接口、實(shí)現(xiàn)和 SCA 組件的多個(gè)服務(wù)質(zhì)量需求。上述 Java 類的 SCDL 文件如下所示:


            清單 3
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <scdl:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0" 
            xmlns:ns1="http://CreditApproval/CreditRequest" 
            xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" 
            xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0" 
            displayName="CreditApproval" name="CreditApproval">
              <interfaces>
                <interface xsi:type="java:JavaInterface" interface="CreditRequest " >
                  <method name="calulateCreditScore"/>
                </interface>
              </interfaces>
              <implementation xsi:type="java:JavaImplementation" class=" CreditApprovalImpl"/>
            </scdl:component>
            												
            										

            類似地,我們可以使用 WSDL 表示接口,如下所示:


            清單 4
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <wsdl:definitions xmlns:bons1="http://CreditApproval" 
            xmlns:tns="http://CreditApproval/CreditRequest" 
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreditRequest" 
            targetNamespace="http://CreditApproval/CreditRequest">
              <wsdl:types>
                <xsd:schema targetNamespace="http://CreditApproval/CreditRequest" 
            	xmlns:bons1="http://CreditApproval" 
            	xmlns:tns="http://CreditApproval/CreditRequest" 
            	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                  <xsd:import namespace="http://CreditApproval" 
            schemaLocation="xsd-includes/http.CreditApproval.xsd"/>
                  <xsd:element name="calulateCreditScore">
                    <xsd:complexType>
                      <xsd:sequence>
                        <xsd:element name="CreditApp" nillable="true" 
            type="bons1:CreditApp"/>
                      </xsd:sequence>
                    </xsd:complexType>
                  </xsd:element>
                  <xsd:element name="calulateCreditScoreResponse">
                    <xsd:complexType>
                      <xsd:sequence>
                        <xsd:element name="CreditRating" nillable="true" 
            type="bons1:CreditRating"/>
                      </xsd:sequence>
                    </xsd:complexType>
                  </xsd:element>
                </xsd:schema>
              </wsdl:types>
                <wsdl:message name="calulateCreditScoreRequestMsg">
                <wsdl:part element="tns:calulateCreditScore" 
            name="calulateCreditScoreParameters"/>
              </wsdl:message>
                <wsdl:message name="calulateCreditScoreResponseMsg">
                <wsdl:part element="tns:calulateCreditScoreResponse" 
            name="calulateCreditScoreResult"/>
              </wsdl:message>
                <wsdl:portType name="CreditRequest">
                <wsdl:operation name="calulateCreditScore">
                  <wsdl:input message="tns:calulateCreditScoreRequestMsg" 
            name="calulateCreditScoreRequest"/>
                  <wsdl:output message="tns:calulateCreditScoreResponseMsg" 
            name="calulateCreditScoreResponse"/>
                </wsdl:operation>
              </wsdl:portType>
            </wsdl:definitions>
            												
            										

            實(shí)現(xiàn)類可能與之相同(唯一不同的是,它顯然沒有實(shí)現(xiàn)任何 Java 接口,因?yàn)樗x為 WSDL)。

            我們的 SCDL 文件可以將接口綁定到 WSDL 文檔:


            清單 5
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <scdl:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0" 
            xmlns:ns1="http://CreditApproval/CreditRequest" 
            xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" 
            xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0" 
            displayName="CreditApproval" name="CreditApproval">
              <interfaces>
                <interface xsi:type="wsdl:WSDLPortType" portType="ns1:CreditRequest">
                  <method name="calulateCreditScore"/>
                </interface>
              </interfaces>
              <implementation xsi:type="java:JavaImplementation" class="CreditApprovalImpl"/>
            </scdl:component>
            												
            										

            SCDL 用于描述 SCA 的組成部分,如模塊、引用、導(dǎo)入和導(dǎo)出。您將在本系列中看到它們的示例。SCDL 定義是由多個(gè)文件組成的。例如,我們將接口和實(shí)現(xiàn)的 SCDL 存儲(chǔ)在一個(gè)名為 CreditApproval.component 的文件中。引用可以包含在 CreditApproval.component 文件(內(nèi)聯(lián))中,也可以包含在 Module 根目錄下的一個(gè)單獨(dú)的 sca.references 文件中。所有獨(dú)立引用都將放置在 sca.references 文件中,如下所示。如前所述,同一個(gè) SCA 模塊內(nèi)的非 SCA 構(gòu)件 (JSP) 可以使用獨(dú)立引用調(diào)用 SCA 組件。


            清單 6
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <scdl:references xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0" 
            xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0">
              <reference name="CreditRequestPartner">
                <interface xsi:type="java:JavaInterface" interface="approval.credit.credit.request.CreditRequest">
                  <method name="calulateCreditScore"/>
                </interface>
                <wire target="CreditApproval"/>
              </reference>
            </scdl:references>
            												
            										

            在我們的示例中,我們將定義的第三個(gè)文件是 sca.module。該 SCDL 文件包含模塊的定義:


            清單 7
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <scdl:module xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" name="CreditApproval"/>
            												
            										

            雖然我們?yōu)榻M件定義了一個(gè) WSDL 接口,但是請(qǐng)注意,我們能夠?qū)⒘硪粋€(gè) Java 接口添加到獨(dú)立引用,并將其連接到我們的目標(biāo)組件。通過這種方式,Java 客戶機(jī)可以使用一個(gè)簡單的 POJI 調(diào)用 SCA 組件。WebSphere Integration Developer 將提供在 Java 接口和 WSDL 接口之間轉(zhuǎn)換調(diào)用的選項(xiàng)。在創(chuàng)建了第一個(gè) SCA 組件后,您將很快看到這樣一個(gè)示例。

            在這一系列文章中,我們將看到 SCDL 如何定義其他 SCA 構(gòu)件(如服務(wù)引用、導(dǎo)入和導(dǎo)出)的示例。WebSphere Integration Developer 使用上述 SCDL 文件的命名約定,實(shí)際情況就是如此。在我們的示例中,在構(gòu)建第一個(gè) SCA 組件時(shí),您將使用 WebSphere Integration Developer。然而,SCA 應(yīng)用程序也可以使用記事本進(jìn)行構(gòu)建。

            WebSphere Integration Developer 和 WebSphere Process Server

            在本文中,您將使用 WebSphere Integration Developer 和 WebSphere Process Server 來構(gòu)建并運(yùn)行 SCA 組件。

            WebSphere Integration Developer 用于開發(fā)運(yùn)行于 WebSphere Process Server V6 上的應(yīng)用程序。WebSphere Integration Developer 基于 Eclipse 3.0 平臺(tái),它為集成項(xiàng)目提供了基于角色的開發(fā)。您可以將 WebSphere Integration Developer 和 IBM WebSphere Business Modeler V6 與 IBM Rational? Application Developer V6 或 IBM Rational Software Architect V6 一起作為集成開發(fā)平臺(tái)。J2EE 開發(fā)人員、業(yè)務(wù)分析人員或集成開發(fā)人員可以使用基于其獨(dú)特角色的工具透視圖,這樣每個(gè)開發(fā)人員都可以將注意力集中在這些角色所需的編輯器和工具上,從而大大提高了工作效率。

            WebSphere Process Server 是一個(gè)基于 WebSphere Application Server V6 的綜合集成平臺(tái)。WebSphere Process Server 用于在面向服務(wù)的體系結(jié)構(gòu)中執(zhí)行基于組件的業(yè)務(wù)集成應(yīng)用程序。由于它基于 WebSphere Application Server 提供的 J2EE 1.4 基礎(chǔ)結(jié)構(gòu)和平臺(tái)服務(wù),因此 WebSphere Process Server 包括諸如業(yè)務(wù)流程自動(dòng)化之類的功能。

            有關(guān) WebSphere Integration Developer 和 WebSphere Process Server 的詳細(xì)信息,請(qǐng)參閱參考資料







            構(gòu)建第一個(gè) SCA 項(xiàng)目

            現(xiàn)在,您可以構(gòu)建第一個(gè) SCA 項(xiàng)目了。在本例中,您將構(gòu)建一個(gè)簡單的信用審批組件。該組件接收一個(gè)具有 ID 和名稱的數(shù)據(jù)對(duì)象,然后返回另一個(gè)包含信用分?jǐn)?shù)和信用額度的數(shù)據(jù)對(duì)象。下載本文所附的 zip 文件,并將其解壓縮到硬盤上。本指導(dǎo)假設(shè)您將 zip 文件解壓縮到 C: 盤上。

            WebSphere Integration Developer V6.0 是一個(gè)靈活的開發(fā)環(huán)境,它為自底向上或自頂向下開發(fā) SCA 應(yīng)用程序提供了工具和向?qū)А?/p>

            為了創(chuàng)建信用審批服務(wù),我們將研究自頂向下開發(fā)的各個(gè)方面。自頂向下開發(fā)過程的一般步驟大致如下:

            1. 創(chuàng)建 SCA 模塊。
            2. 創(chuàng)建業(yè)務(wù)對(duì)象。
            3. 定義服務(wù)接口。
            4. 生成組件并提供實(shí)現(xiàn)。
            5. 對(duì) SCA 組件進(jìn)行單元測試。
            6. 提供獨(dú)立引用。
            7. 使用簡單的 JSP 客戶機(jī)測試服務(wù)。

            創(chuàng)建 SCA 模塊

            首先,您需要?jiǎng)?chuàng)建一個(gè) SCA 模塊。如前所述,SCA 模塊是 SCA 組件的打包構(gòu)造。

            1. 在 WebSphere Integration Developer 中打開一個(gè)空白工作區(qū)。(圖 9)


              圖 9. 在 WebSphere Integration Developer 中打開一個(gè)空白工作區(qū)
              圖 9. 在 WebSphere Integration Developer 中打開一個(gè)空白工作區(qū)
            2. 關(guān)閉 Welcome 屏幕。

            3. 接下來,您需要?jiǎng)?chuàng)建一個(gè)新模塊。

              1. 在 WebSphere Integration Developer 工作臺(tái)中,打開業(yè)務(wù)集成透視圖。找到 Business Integration 視圖。

              2. 在 Business Integration 視圖內(nèi)單擊鼠標(biāo)右鍵,然后選擇 New => Module。(圖 10)


                圖 10. 創(chuàng)建新模塊
                圖 10. 創(chuàng)建新模塊
              3. New Module 向?qū)?yīng)該出現(xiàn)(圖 11)。將該模塊命名為 CreditApprovalSCAModule


                圖 11. 創(chuàng)建新模塊
                圖 11. 創(chuàng)建新模塊
              4. 現(xiàn)在,Business Integration 視圖中應(yīng)該顯示一個(gè)新項(xiàng)目。SCA 模塊是作為 SCDL 文件描述的。Business Integration 視圖向您展示了 SCA 模塊的邏輯視圖。如前所述,您可以打開 Physical Resource 視圖,來查看包含在 SCA 模塊中的物理資源。SCA 模塊的 SCDL 包含在名為 sca.module 的文件中。如果您使用文本編輯器打開該文件,應(yīng)該看到以下內(nèi)容:


            清單 8
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <scdl:module xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" name="CreditApprovalSCAModule"/>
            
            												
            										

            創(chuàng)建業(yè)務(wù)對(duì)象

            對(duì)于創(chuàng)建接口或業(yè)務(wù)對(duì)象,沒有預(yù)先定義的任務(wù)順序;只需要在創(chuàng)建接口時(shí)簡單地創(chuàng)建業(yè)務(wù)對(duì)象即可。這里我們選擇在 Business Integration 視圖中創(chuàng)建業(yè)務(wù)對(duì)象。

            在創(chuàng)建業(yè)務(wù)對(duì)象時(shí),實(shí)際上您正在創(chuàng)建 XML 模式。業(yè)務(wù)對(duì)象作為標(biāo)準(zhǔn)的 XML 模式進(jìn)行存儲(chǔ)。應(yīng)用程序可以使用 SDO 編程模型和 XPath 訪問數(shù)據(jù)。

            通過業(yè)務(wù)對(duì)象編輯器,我們可以創(chuàng)建信用審批服務(wù)將使用的業(yè)務(wù)對(duì)象定義。我們的服務(wù)需要兩個(gè)業(yè)務(wù)對(duì)象。

            CreditApplication:包含計(jì)算信用等級(jí)所需的信用申請(qǐng)者的有關(guān)信息。信用應(yīng)用程序業(yè)務(wù)對(duì)象 (CreditApplication) 包含三個(gè)屬性:

            • Customer Id:客戶的唯一標(biāo)識(shí)符
            • First Name:客戶的名字
            • Last Name:客戶的姓氏

            CreditRating:包含信用等級(jí)信息,如信用分?jǐn)?shù)和信用額度。信用等級(jí)業(yè)務(wù)對(duì)象 (CreditRating) 包含三個(gè)屬性:

            • Credit Score:客戶基于先前歷史記錄的信用分?jǐn)?shù)
            • Credit Limit:客戶可借貸的總金額。

            1. 我們首先創(chuàng)建請(qǐng)求業(yè)務(wù)對(duì)象,它用作 SCA 組件的輸入?yún)?shù)。

              1. 請(qǐng)確保 CreditApprovalSCAModule 已展開。右鍵單擊 Data Types,然后選擇 New => Business Object。(圖 12)


                圖 12. 創(chuàng)建新業(yè)務(wù)對(duì)象
                圖 12. 創(chuàng)建新業(yè)務(wù)對(duì)象
              2. 將業(yè)務(wù)對(duì)象命名為 CreditApplication,如圖 13 所示。


                圖 13. 定義業(yè)務(wù)對(duì)象
                圖 13. 定義業(yè)務(wù)對(duì)象
              3. 該業(yè)務(wù)對(duì)象應(yīng)該在業(yè)務(wù)對(duì)象編輯器中打開。現(xiàn)在,Data Types 菜單下應(yīng)該有 CreditApplication。(圖 14)


                圖 14. 業(yè)務(wù)集成菜單
                圖 14. 業(yè)務(wù)集成菜單
            2. 現(xiàn)在,我們將定義 CreditApplication 業(yè)務(wù)對(duì)象的屬性。

              1. 您可以通過選擇 Add Attribute 圖標(biāo)添加屬性,如圖 15 所示。


                圖 15. Add Attribute 圖標(biāo)
                圖 15. Add Attribute 圖標(biāo)
              2. 輸入 customerId 作為屬性名稱,并接受缺省的 String 類型。(要更改類型,您只需選擇類型字段,并從下拉框中選擇類型。您需要為響應(yīng)對(duì)象進(jìn)行此操作。)


                圖 16. 定義屬性
                圖 16. 定義屬性
              3. 再添加兩個(gè) String 屬性,并將其命名為 firstNamelastName。這兩個(gè)屬性應(yīng)該是字符串類型,如下所示。


                圖 17. 定義屬性
                圖 17. 定義屬性
              4. 該業(yè)務(wù)對(duì)象是使用標(biāo)準(zhǔn)的 XML 模式類型定義的。您可以使用 XML 編輯器打開該業(yè)務(wù)對(duì)象,以便進(jìn)行查看。(通過右鍵單擊業(yè)務(wù)對(duì)象并選擇 Open with => 和您選擇的編輯器,您可以在文本編輯器中打開該業(yè)務(wù)對(duì)象。)

              5. 保存并關(guān)閉業(yè)務(wù)對(duì)象編輯器。


                圖 18. 定義的業(yè)務(wù)對(duì)象
                圖 18. 定義的業(yè)務(wù)對(duì)象
              6. XML 模式應(yīng)該類似于下面的代碼示例。


                清單 9
                																				
                																														
                <?xml version="1.0" encoding="UTF-8"?>
                <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                targetNamespace="http://CreditApprovalSCAModule">
                  <xsd:complexType name="CreditApplication">
                    <xsd:sequence>
                      <xsd:element minOccurs="0" name="customerId" type="xsd:string"/>
                      <xsd:element minOccurs="0" name="firstName" type="xsd:string"/>
                      <xsd:element minOccurs="0" name="lastName" type="xsd:string"/>
                    </xsd:sequence>
                  </xsd:complexType>
                </xsd:schema>
                																				
                																		

            3. 現(xiàn)在,我們要?jiǎng)?chuàng)建第二個(gè)業(yè)務(wù)對(duì)象來表示響應(yīng)。

              1. 按照上面同樣的步驟,創(chuàng)建另一個(gè)業(yè)務(wù)對(duì)象。該業(yè)務(wù)對(duì)象有三個(gè)字段:

                • 字符串類型的 customerId
                • 整數(shù)類型的 creditScore
                • 雙精度類型的 creditLimit
              2. 如前所述,您可以通過選擇類型列更改類型,如圖 19 所示。


                圖 19. 更改屬性類型
                圖 19. 更改屬性類型
              3. 保存并關(guān)閉業(yè)務(wù)對(duì)象編輯器

            現(xiàn)在,您已經(jīng)創(chuàng)建了兩個(gè)業(yè)務(wù)對(duì)象。

            定義服務(wù)接口

            現(xiàn)在,您可以創(chuàng)建 SCA 接口了。此外,信用審批服務(wù)是一個(gè)請(qǐng)求-響應(yīng)服務(wù),它接收信用應(yīng)用程序并同時(shí)返回信用等級(jí)。服務(wù)接口定義服務(wù)客戶機(jī)和服務(wù)提供者之間的交互。

            有多種創(chuàng)建接口的方式。如果您選擇 Java 接口,可以使用 WebSphere Integration Developer 中的 Java Eclipse 工具來進(jìn)行創(chuàng)建。在我們的示例中,我們將在業(yè)務(wù)集成透視圖中創(chuàng)建 WSDL 接口。您可以使用 Assembly Editor 創(chuàng)建,也可以使用業(yè)務(wù)集成視圖創(chuàng)建。我們將使用后者。(稍后,我們將使用 Assembly Editor 創(chuàng)建實(shí)現(xiàn)。)

            1. 首先,我們將使用 Business Integration 視圖菜單創(chuàng)建接口。

              1. 右鍵單擊 Interfaces 菜單項(xiàng),然后選擇 New => Interfaces,如圖 20 所示。


                圖 20. 創(chuàng)建新接口
                圖 20. 創(chuàng)建新接口
              2. 在 New Interface 菜單中,輸入名稱 CreditApproval。(請(qǐng)記住出于演示的目的,在我們的示例中,我們使用的是缺省包和文件夾。您可以選擇一個(gè)文件夾,輕松地按功能對(duì)不同的接口進(jìn)行分組。)


                圖 21. 創(chuàng)建新接口
                圖 21. 創(chuàng)建新接口
            2. CreditApproval 接口是一個(gè)簡單的 WSDL 文件。WebSphere Integration Developer 附帶了一個(gè)簡單的 WSDL 編輯器,可以用來構(gòu)建接口。

              1. 在創(chuàng)建接口時(shí),接口編輯器應(yīng)該已經(jīng)打開。如果接口編輯器尚未打開,可以在業(yè)務(wù)集成視圖中雙擊接口,以將接口編輯器打開。

              2. 首先,我們要?jiǎng)?chuàng)建一個(gè)簡單的請(qǐng)求-響應(yīng)操作。(您還可以創(chuàng)建用于異步調(diào)用的單向操作,但是現(xiàn)在,我們只創(chuàng)建簡單的同步請(qǐng)求。)單擊 Add Request Response Operation 圖標(biāo),如圖 22 所示。


                圖 22. Add Request Response Operation 圖標(biāo)
                圖 22. Add Request Response Operation 圖標(biāo)
              3. 將在編輯器中創(chuàng)建一個(gè)操作。將該操作命名為 calculateCreditRating。(圖 23)


                圖 23. 定義操作
                圖 23. 定義操作
              4. 現(xiàn)在我們需要定義參數(shù)。請(qǐng)記住,我們創(chuàng)建了兩個(gè)業(yè)務(wù)對(duì)象,一個(gè)用于輸入,另一個(gè)用于輸出。在創(chuàng)建操作后,選擇 Add Input 圖標(biāo),如圖 24 所示。


                圖 24. Add Input 圖標(biāo)
                圖 24. Add Input 圖標(biāo)
              5. 將輸入命名為 CreditApplication

              6. 選擇 Type 列并找到 CreditApplicaiton 業(yè)務(wù)對(duì)象。您可以看到,業(yè)務(wù)對(duì)象現(xiàn)在是一個(gè)有效類型,可以用于構(gòu)建接口,如圖 25 所示。(在這里你可以選擇創(chuàng)建新業(yè)務(wù)對(duì)象。)


                圖 25. 新業(yè)務(wù)對(duì)象現(xiàn)在是一個(gè)有效類型
                圖 25. 新業(yè)務(wù)對(duì)象現(xiàn)在是一個(gè)有效類型
              7. 接下來,選擇 Add Output 圖標(biāo),如圖 26 所示。


                圖 26. Add Output 圖標(biāo)
                圖 26. Add Output 圖標(biāo)
              8. 選擇 CreditRating 作為類型,類似于選擇輸入的類型。


                圖 27. 定義輸出
                圖 27. 定義輸出
              9. 保存并關(guān)閉接口編輯器。

              10. 如果您希望檢查 WSDL 文件,可以在 Physical Resources 視圖中右鍵單擊 CreditApproval.wsdl 文件,然后使用文本編輯器打開該文件。(圖 28)


                圖 28. 查看 WSDL 文件
                圖 28. 查看 WSDL 文件

                WSDL 文件應(yīng)該類似于下面的代碼示例。


                清單 10
                																				
                																														
                <?xml version="1.0" encoding="UTF-8"?>
                <wsdl:definitions xmlns:bons1="http://CreditApprovalSCAModule" 
                xmlns:tns="http://CreditApprovalSCAModule/CreditApproval" 
                xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                name="CreditApproval" targetNamespace="http://CreditApprovalSCAModule/CreditApproval">
                  <wsdl:types>
                    <xsd:schema targetNamespace="http://CreditApprovalSCAModule/CreditApproval" 
                xmlns:bons1="http://CreditApprovalSCAModule" 
                xmlns:tns="http://CreditApprovalSCAModule/CreditApproval" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                      <xsd:import namespace="http://CreditApprovalSCAModule" 
                schemaLocation="xsd-includes/http.CreditApprovalSCAModule.xsd"/>
                      <xsd:element name="calculateCreditRating">
                        <xsd:complexType>
                          <xsd:sequence>
                            <xsd:element name="CreditApplication" nillable="true" 
                type="bons1:CreditApplication"/>
                          </xsd:sequence>
                        </xsd:complexType>
                      </xsd:element>
                      <xsd:element name="calculateCreditRatingResponse">
                        <xsd:complexType>
                          <xsd:sequence>
                            <xsd:element name="CreditRating" nillable="true" 
                type="bons1:CreditRating"/>
                          </xsd:sequence>
                        </xsd:complexType>
                      </xsd:element>
                    </xsd:schema>
                  </wsdl:types>
                    <wsdl:message name="calculateCreditRatingRequestMsg">
                    <wsdl:part element="tns:calculateCreditRating" 
                name="calculateCreditRatingParameters"/>
                  </wsdl:message>
                    <wsdl:message name="calculateCreditRatingResponseMsg">
                    <wsdl:part element="tns:calculateCreditRatingResponse" 
                name="calculateCreditRatingResult"/>
                  </wsdl:message>
                    <wsdl:portType name="CreditApproval">
                    <wsdl:operation name="calculateCreditRating">
                      <wsdl:input message="tns:calculateCreditRatingRequestMsg" 
                name="calculateCreditRatingRequest"/>
                      <wsdl:output message="tns:calculateCreditRatingResponseMsg" 
                name="calculateCreditRatingResponse"/>
                    </wsdl:operation>
                  </wsdl:portType>
                </wsdl:definitions>
                
                																				
                																		

            生成組件并提供實(shí)現(xiàn)

            現(xiàn)在,我們可以創(chuàng)建 SCA 實(shí)現(xiàn)了。此時(shí),我們已經(jīng)創(chuàng)建了標(biāo)準(zhǔn)的接口和業(yè)務(wù)對(duì)象。現(xiàn)在我們要定義 SCA 組件。您將使用 SCA Assembly Editor 來完成此操作。

            1. 首先,我們要定義 SCA 組件。

              1. 通過雙擊 CreditApprovalSCAModule 菜單項(xiàng),打開 SCA Assembly Editor,如圖 29 所示。


                圖 29. 打開 SCA Assembly Editor
                圖 29. 打開 SCA Assembly Editor
              2. SCA Assembly Editor 有一個(gè)面板,可以用于創(chuàng)建 SCA 構(gòu)件。您也可以從各種視圖中拖動(dòng)某些構(gòu)件。只需將 CreditApproval 接口拖至 Assembly Editor,如圖 30 所示。(或者,您也可以從面板拖動(dòng) Java 組件,然后將其與接口相關(guān)聯(lián)。)


                圖 30. 將接口拖至 Assembly Editor
                圖 30. 將接口拖至 Assembly Editor
              3. 將出現(xiàn)一個(gè)文本框。選擇 Component with No Implementation Type,如圖 31 所示。


                圖 31. 組件創(chuàng)建文本框
                圖 31. 組件創(chuàng)建文本框
              4. 現(xiàn)在,您應(yīng)該在 Assembly Editor 上看到一個(gè)名為 Component1 的 SCA 組件。(圖 32)


                圖 32. SCA 組件圖標(biāo)
                圖 32. SCA 組件圖標(biāo)
              5. 通過選擇組件并鍵入名稱,您可以更改名稱;或者可以使用屬性編輯器更改名稱,如圖 33 所示。將顯示名稱更改為 CreditApproval。名稱字段應(yīng)該自動(dòng)更改。


                圖 33. 更改組件名稱
                圖 33. 更改組件名稱
            2. 現(xiàn)在,我們的 SCA 組件具有接口,但沒有實(shí)現(xiàn)。現(xiàn)在我們要使用 Assembly Editor 生成實(shí)現(xiàn)。

              1. 通過在 Assembly Editor 中右鍵單擊組件并選擇 Generate Implementation => Java,生成一個(gè)框架實(shí)現(xiàn)。(圖 34)


                圖 34. 生成框架實(shí)現(xiàn)
                圖 34. 生成框架實(shí)現(xiàn)
              2. 新 Java 實(shí)現(xiàn)應(yīng)該在 Java 編輯器中打開;您將看到 calculateCreditRating。下載文件中提供了簡單的代碼段,位置為 C:\SCA_ArticleSeries\Part1\CodeSnippet1.txt。方法如下所示。


                清單 11
                																				
                																														
                public DataObject calculateCreditRating(DataObject creditApplication) {
                //	Create and return a credit rating object.
                	System.out.println("********* credit approval service invoked ******");
                	ServiceManager serviceManager = new ServiceManager();
                
                	BOFactory bof = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
                
                	System.out.println("********* BOFactory created ******");
                	DataObject creditRating = bof.create("http://CreditApproval", "CreditRating");
                
                	System.out.println("********* credit rating object created ******");
                	creditRating.setString("customerId", creditApplication.getString("customerId"));
                		
                	creditRating.setInt("creditScore", 750);
                	creditRating.setDouble("creditLimit", 10000d);
                	System.out.println("********* returning credit rating object ******");
                		
                	return creditRating;
                
                }
                																				
                																		

            3. 這些代碼使用 SCA 服務(wù)管理器查找業(yè)務(wù)對(duì)象工廠 (Business Object Factory),后者用于從 XML 模式中創(chuàng)建業(yè)務(wù)對(duì)象。出于演示的目的,我們創(chuàng)建響應(yīng)數(shù)據(jù)對(duì)象,并返回硬編碼的數(shù)據(jù)。

            4. 如果您粘貼代碼,則可能出現(xiàn)一些編譯錯(cuò)誤。通過右鍵單擊編輯器并選擇 Source => Organize Imports,您可以更正這些錯(cuò)誤,如圖 35 所示。


              圖 35. 更正錯(cuò)誤
              圖 35. 更正錯(cuò)誤
            5. 保存并關(guān)閉 Java 文件,但是 Assembly Editor 保持打開狀態(tài)。

            對(duì) SCA 組件進(jìn)行單元測試

            WebSphere Integration Developer 提供了使用單元測試工具對(duì)組件進(jìn)行單元測試的功能。根據(jù) SCA 實(shí)現(xiàn)的類型,您可以在 J2SE 環(huán)境中測試 SCA 組件,通過該環(huán)境,可以在沒有完整的應(yīng)用程序服務(wù)器的情況下測試組件;當(dāng)然,這在很大程度上取決于您具有的組件的類型。可以在 J2SE 環(huán)境中輕松地對(duì) Java 實(shí)現(xiàn)進(jìn)行測試,但是由 BPEL 流程實(shí)現(xiàn)的 SCA 組件需要 BPEL 引擎(如 WebSphere Process Server)。在我們的示例中,我們將使用測試組件功能來測試 SCA 組件。

            要啟動(dòng)測試組件功能,請(qǐng)執(zhí)行以下步驟:

            1. 在 SCA Assembly Editor 中右鍵單擊 CreditApproval 組件,然后選擇 Test Component。(圖 36)


              圖 36. 啟動(dòng)測試組件功能
              圖 36. 啟動(dòng)測試組件功能
            2. 這將啟動(dòng)測試組件編輯器。在該工具的右側(cè),輸入測試數(shù)據(jù),如圖 37 所示,然后單擊 Continue


              圖 37. 輸入測試數(shù)據(jù)
              圖 37. 輸入測試數(shù)據(jù)
            3. 將顯示可用的運(yùn)行時(shí)列表。選擇 Eclipse 1.4 JVM,然后單擊 Finish。(圖 38)


              圖 38. 運(yùn)行時(shí)部署位置
              圖 38. 運(yùn)行時(shí)部署位置
            4. 要開始測試,請(qǐng)選擇 Return 項(xiàng),如圖 39 所示。監(jiān)視 Events 窗口以查看流程。


              圖 39. Events 窗口
              圖 39. Events 窗口
            5. 您將在右側(cè)看到結(jié)果。(圖 40)


              圖 40. 單元測試結(jié)果
              圖 40. 單元測試結(jié)果

            創(chuàng)建 SCA 客戶機(jī) Web 應(yīng)用程序并在 WebSphere Process Server 中進(jìn)行測試

            1. 要讓打包在同一 SCA 部署中的非 SCA 組件調(diào)用 SCA 組件,我們需要?jiǎng)?chuàng)建獨(dú)立引用:

              1. 在 SCA Assembly Editor 中,請(qǐng)選擇面板中 Import 圖標(biāo)旁邊的 arrow。這將打開一個(gè)更小的子菜單。選擇 Standalone references 圖標(biāo),并將其拖至 Assembly Editor 中的任何位置,如圖 41 所示。


                圖 41. 創(chuàng)建獨(dú)立引用
                圖 41. 創(chuàng)建獨(dú)立引用
              2. 單擊 Stand-alone References 框的內(nèi)部(而非文本),并將其拖至 Credit Approval 組件,如圖 42 所示。


                圖 42. 創(chuàng)建匹配引用
                圖 42. 創(chuàng)建匹配引用
              3. 單擊 OK,創(chuàng)建匹配引用。(圖 43)


                圖 43. 創(chuàng)建匹配引用
                圖 43. 創(chuàng)建匹配引用
              4. 下一文本框?qū)⑾蚰峁┥?Java 接口的選項(xiàng)。請(qǐng)記住,您創(chuàng)建了 WSDL 接口。然而,WebSphere Integration Developer 要生成等效的 Java 接口,以使 Java 客戶機(jī)使用 SCA API 交互。選擇 Yes。(圖 44)


                圖 44. 接口轉(zhuǎn)換驗(yàn)證
                圖 44. 接口轉(zhuǎn)換驗(yàn)證
            2. 有了獨(dú)立引用后,現(xiàn)在我們可以在同一模塊的非 SCA 組件中調(diào)用 SCA 組件。請(qǐng)記住,SCA 模塊是由 EAR 文件實(shí)現(xiàn)的,因此您可以將其他 J2EE 組件添加到 SCA 模塊。在我們的示例中,我們要導(dǎo)入具有 JSP 文件的現(xiàn)有 WAR 文件。WAR 文件將是基礎(chǔ) EAR 文件的一部分。

              1. 選擇 File => Import,調(diào)出 Import 向?qū)А_x擇 WAR file,然后單擊 Next。(圖 45)


                圖 45. 從非 SCA 組件中調(diào)用 SCA 組件
                圖 45. 從非 SCA 組件中調(diào)用 SCA 組件
              2. 選擇 C:\SCA_ArticleSeries\Part1\CreditApprovalClient.war。取消選擇 Add module to an EAR Project


                圖 46. 導(dǎo)入 WAR 文件
                圖 46. 導(dǎo)入 WAR 文件
              3. 選擇 Yes,以轉(zhuǎn)到 Web 透視圖。(圖 47)


                圖 47. 轉(zhuǎn)到 Web 透視圖
                圖 47. 轉(zhuǎn)到 Web 透視圖
              4. 打開 JSP 文件,以檢查代碼。您將在 Dynamic Web Projects 目錄下找到該文件,如圖 48 所示。JSP 稱為 creditApprovalClient.jsp。


                圖 48. Dynamic Web Projects 目錄
                圖 48. Dynamic Web Projects 目錄
              5. 我們使用簡單的 JSP 接收輸入并使用 SCA API 調(diào)用 SCA 組件。(請(qǐng)記住,為了使用 MVC,該 JSP 遵循最佳實(shí)踐)。

            3. SCA 具有 Dependency Editor,通過該編輯器,可以將不同的包添加到 SCA 模塊:

              1. 通過右鍵單擊 CreditApprovalSCAModule 并選擇 Open Dependency Editor,打開 Dependency Editor。(圖 49)


                圖 49. 打開 Dependency Editor
                圖 49. 打開 Dependency Editor
              2. 展開 J2EE 部分,然后單擊 Add 按鈕。(圖 50)


                圖 50. 配置依賴項(xiàng)
                圖 50. 配置依賴項(xiàng)
              3. 選擇 CreditApprovalClient Web 項(xiàng)目,如圖 51 所示。


                圖 51. 選擇 Web 項(xiàng)目
                圖 51. 選擇 Web 項(xiàng)目
              4. 請(qǐng)確保未選中 On Build Path。(Build Path 將該組件添加到 SCA 模塊的類路徑。在我們的示例中,我們需要使 WAR 文件依賴于 SCA 模塊。)保存 Dependency Editor。這使得 WAR 文件成為 EAR 文件的一部分。


                圖 52. 設(shè)置依賴項(xiàng)
                圖 52. 設(shè)置依賴項(xiàng)
              5. 要讓 Web 項(xiàng)目知道 SCA Java 接口,可以右鍵單擊 Web 項(xiàng)目并選擇 Properties

              6. 轉(zhuǎn)到 Java JAR Dependencies 并選擇 CreditApprovalSCAModuleEJBClient.jar,它是在下面生成的 EJB 客戶機(jī) JAR 文件。(圖 53)


                圖 53. 設(shè)置依賴項(xiàng)
                圖 53. 設(shè)置依賴項(xiàng)
              7. 關(guān)閉編輯器。此時(shí),您可以選擇執(zhí)行整體構(gòu)建。這可能沒有必要,但我們總是喜歡在部署前進(jìn)行整體構(gòu)建。如果您有自動(dòng)構(gòu)建,可以進(jìn)行清理,如圖 54 所示。


                圖 54. 用于自動(dòng)構(gòu)建的清理
                圖 54. 用于自動(dòng)構(gòu)建的清理
            4. 現(xiàn)在,我們可以在 WebSphere Process Server 上部署并測試我們的 SCA 組件和 Web 客戶機(jī)了。請(qǐng)記住,我們的 SCA 模塊是由 J2EE 應(yīng)用程序?qū)崿F(xiàn)的。您可以轉(zhuǎn)到 J2EE 透視圖來查看構(gòu)件。請(qǐng)記住,它們是生成的構(gòu)件。(我們以后將在這一系列文章中進(jìn)行介紹。)


              圖 55. J2EE 透視圖
              圖 55. J2EE 透視圖
              1. 轉(zhuǎn)到 Business Integration 透視圖底部的 Servers 視圖。右鍵單擊 WebSphere Process Server,然后選擇 Start,如圖 56 所示。


                圖 56. 啟動(dòng) WebSphere Process Server
                圖 56. 啟動(dòng) WebSphere Process Server
              2. 等待服務(wù)器啟動(dòng)。檢查控制臺(tái)并等待圖 57 中所示的消息。


                圖 57. WebSphere Process Server 啟動(dòng)消息
                圖 57. WebSphere Process Server 啟動(dòng)消息
              3. 再次右鍵單擊服務(wù)器并選擇 Add and remove projects。(圖 58)


                圖 58. 添加和刪除項(xiàng)目
                圖 58. 添加和刪除項(xiàng)目
              4. 選擇 CreditApprovalSCAModuleAdd,然后選擇 Add,如圖 59 所示。這會(huì)將其移到右側(cè)的 Configured projects 框中。


                圖 59. 在服務(wù)器上配置項(xiàng)目
                圖 59. 在服務(wù)器配置項(xiàng)目
              5. 監(jiān)視右下角的進(jìn)度,等待部署應(yīng)用程序。(圖 60)


                圖 60. 項(xiàng)目部署監(jiān)視器
                圖 60. 項(xiàng)目部署監(jiān)視器
              6. 在控制臺(tái)驗(yàn)證 CreditApporvalSCAModuleApp 已經(jīng)啟動(dòng)。(圖 61)


                圖 61. 管理控制臺(tái)消息
                圖 61. 管理控制臺(tái)消息
              7. 轉(zhuǎn)到 Web 透視圖。右鍵單擊 JSP,然后選擇 Run => Run on Server,如圖 62 所示。


                圖 62. 運(yùn)行應(yīng)用程序
                圖 62. 運(yùn)行應(yīng)用程序
              8. 選擇現(xiàn)有的 WebSphere Process Server,接著選擇 Set server as project default,然后單擊 Finish。(圖 63)


                圖 63. 設(shè)置服務(wù)器
                圖 63. 設(shè)置服務(wù)器
              9. 當(dāng)應(yīng)用程序執(zhí)行時(shí),輸入圖 64 中所示的應(yīng)用程序測試數(shù)據(jù)。


                圖 64. 輸入 SCA 應(yīng)用程序測試數(shù)據(jù)
                圖 64. 輸入 SCA 應(yīng)用程序測試數(shù)據(jù)
              10. 您應(yīng)該獲得圖 65 所示的結(jié)果。


                圖 65. SCA 應(yīng)用程序測試結(jié)果
                圖 65. SCA 應(yīng)用程序測試結(jié)果
              11. 關(guān)閉瀏覽器并停止服務(wù)器。

            祝賀您!您已經(jīng)創(chuàng)建并測試了第一個(gè) SCA 組件!







            結(jié)束語

            服務(wù)組件體系結(jié)構(gòu) (SCA) 是面向服務(wù)的體系結(jié)構(gòu) (SOA) 中的一個(gè)主要變化。SCA 向我們提供了 SOA 的編程模型,并將在今后作為集成的基礎(chǔ)。請(qǐng)繼續(xù)關(guān)注本系列的后續(xù)文章,我們將研究特定 SCA 功能的細(xì)節(jié)以及它們可給您的應(yīng)用程序帶來的好處。

            posted on 2006-06-01 17:00 wsdfsdf 閱讀(406) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            亚洲AV无一区二区三区久久| 国产V亚洲V天堂无码久久久| 精品久久久久久久无码 | 久久WWW免费人成—看片| 天堂久久天堂AV色综合| 久久这里都是精品| 欧美大战日韩91综合一区婷婷久久青草| 久久精品国产亚洲麻豆| AV色综合久久天堂AV色综合在| 亚洲午夜久久久影院| 777午夜精品久久av蜜臀| 91麻豆国产精品91久久久| 亚洲国产一成久久精品国产成人综合| 久久久久99精品成人片| 久久艹国产| 久久最新免费视频| 欧美日韩精品久久久久| 少妇人妻综合久久中文字幕| 久久天天婷婷五月俺也去| 影音先锋女人AV鲁色资源网久久| 国产成人久久精品一区二区三区| 欧美一区二区三区久久综| 久久综合久久自在自线精品自| www性久久久com| 国产一区二区精品久久凹凸 | 性高湖久久久久久久久AAAAA| 亚洲精品无码久久不卡| 狠狠色婷婷久久综合频道日韩| 婷婷综合久久中文字幕蜜桃三电影| 久久久久免费看成人影片| 99久久久久| 狠狠色丁香久久婷婷综合蜜芽五月| 亚洲av成人无码久久精品| 精品久久久久久国产| 久久丝袜精品中文字幕| 亚洲国产美女精品久久久久∴| 精品久久久久久国产潘金莲| 久久97久久97精品免视看| 伊人久久大香线蕉av不变影院| 日本免费一区二区久久人人澡 | 久久综合九色综合网站|