第 1 部分:生成服務代理和 Struts 中間層

發表于:2007-05-24來源:作者:點擊數: 標簽:中間層部分代理struts生成
本文的第 1 部分為您演示了創建基于 Struts 的 Web 應用程序(這個程序使用 JCA 資源適配器連接到現有的 CICS 程序)的步驟。 Copyright International Business Machines Corporation 2003. All rights reserved. 引言 今天,許多公司需要把舊的企業應用程序
本文的第 1 部分為您演示了創建基于 Struts 的 Web 應用程序(這個程序使用 JCA 資源適配器連接到現有的 CICS 程序)的步驟。

© Copyright International Business Machines Corporation 2003. All rights reserved.

引言
今天,許多公司需要把舊的企業應用程序放到 Web 上??紤]到它們有限的資源,為了在 Web 上運行而重寫舊的應用程序是不可能的。相反,它們需要利用在業務事務(業務事務運行于經過驗證的大型機操作環境中)上的大量投入。公司必須重用現有的事務而不是重寫它們,重用的方式是把它們作為 Web 應用程序公開,同時保持它們的高性能、可伸縮性和可靠性。

Web 應用程序模型(Web Application Models)是 IBM® VisualAge® Pacbase 的組件,也是 IBM WebSphere® Studio 的插件,它是加速這個過程的工具。Web 應用程序模型可以使用企業服務(企業服務由現有的 CICS® 或 IMS™ 事務構建而成)來生成 Java™ Enterprise Edition(J2EE)中間層組件,這些組件通過標準的 J2EE 連接器體系結構(J2EE Connector Architecture,JCA)和 Web 服務調用框架(Web Services Invocation Framework,WSIF)連接到運行于大型機環境的 COBOL 程序。

這篇分兩部分的文章將描述如何使用 Web 應用程序模型以及 WebSphere Studio Application Developer Integration Edition 或 WebSphere Studio Enterprise Developer 來開發基于 Struts 的 Web 應用程序(這些程序可以訪問運行于 CICS 的現有的 COBOL 程序)。第 1 部分講述:

  • 創建 CICS ECI 程序的企業服務代理
  • 生成和測試服務代理
  • 使用代理以及 Web 應用程序模型來生成其余的中間層組件
  • 測試 Web 應用程序,測試的方法是通過 JCA 資源適配器來訪問 CICS 程序

第 2 部分講述如何使用定制的 Web 應用程序模型 XSL 樣式表來定制 Web 用戶界面。

創建 CICS ECI COBOL 程序的企業服務代理
請參閱聯機幫助( Enterprise Developer Information => Building Enterprise Services),其中有創建企業服務的完整描述。聯機幫助中還有標題為 Create an enterprise service for a CICS program (CICS ECI)的有用的“作弊用紙”。下一節演示如何利用 CICS 程序 TRADERBL 來創建服務。

生成 Web 服務描述語言
導入 COBOL Copy Book。

  1. 打開 Business Integration 透視圖。
  2. 創建新的服務項目 MyServiceProj。
  3. 用鼠標右鍵單擊 MyServiceProj,選擇 Import => File system。
  4. 找到那個目錄和 COBOL 程序,請確保 MyServiceProj是目標文件夾,然后單擊 Finish。

啟動 Service built from向導,導入資源適配器。

  1. 用鼠標右鍵單擊 MyServiceProj,選擇 New => Service built from。
  2. 如果工作空間中沒有 CICS ECI 資源適配器,那么您必須導入它。為了導入它,請單擊 Import Resource Adapter。
  3. 找到連接器文件 <studio root>resource adapters\cicseci.rar 。
  4. 在相同的對話框中輸入新的連接器項目名。請看下面的圖 1。
  5. 單擊 Finish。

圖 1. 把 CICS ECI 資源適配器導入到新的連接器項目。
導入連接器

圖 2. 選擇 CICS ECI 適配器(如下圖所示),然后單擊 Next。
選擇 CICS ECI

輸入連接屬性:

  • 網關地址
  • 端口號
  • CICS 服務器名稱
  • 用戶名
  • 密碼
  • TPN 名稱
  • 事務名稱
  • JNDI 查詢名稱

 

單擊 Next,您將看到向導的 Service Binding 面板,請輸入接口文件名:

圖 3. Service Binding 面板
Service Binding

單擊 Finish后將生成三個 WSDL 文件。 MyTradeCICSECIBinding.wsdl 的缺省編輯器被自動打開。下一步是在編輯器中創建服務的新操作并定義 COBOL 程序的輸入消息:

  1. 為了創建新操作,請在 Port type and Binding Operations 下單擊 New。
  2. 輸入操作名稱 getCompany ,然后單擊 Next。
  3. 在 Operation Binding Properties 中,輸入函數名 TRADERBL (這是 CICS 程序的名稱),為了定義輸入消息,請再次單擊 Next。
    • 單擊 Import,選擇 MyServiceProj 中的 COBOL 程序,然后單擊 Next。
    • 在 COBOL Import Properties 面板中,選擇 z/OS®平臺(或運行 CICS 的平臺),然后單擊 Next。
    • 在 COBOL Importer 面板中,選擇 COMMAREA-BUFFER(如下圖所示),然后單擊 Finish。

      圖 4. 選擇 COMMAREA-BUFFER 數據結構。
      COMMAREA-BUFFER 數據結構

  4. 在 Operation Binding 面板中,選中 Use input message for output,然后單擊 Finish。

 

生成 CICS ECI 服務代理

  1. 用鼠標右鍵單擊 MyServiceProj/org.tempuri/MyTradeCICSECIService.wsdl,選擇 Enterprise Services => Generate Service Proxy。
  2. 接受名稱的缺省值,單擊 Next。
  3. 如圖 5 所示,選擇 Command BeangetCompany操作,然后單擊 Finish。

圖 5. 服務代理生成
服務代理

現在服務項目包含 WSDL 文件、生成的服務代理和命令 bean:

圖 6. 服務項目文件
服務項目文件

對服務代理進行單元測試
生成的代理使用 WSIF 的 Java API 來與 CICS 程序通信。對于 Web 應用程序來說,代理被看作它可以執行的企業服務。在構建執行這個服務代理的 Web 應用程序之前,對企業服務進行單元測試以確保 CICS 程序被正確地調用并且可以把數據返回給代理。

切換到 Java 透視圖并打開類 MyTradeProxy.java。

找到 main() 方法,在調用 execute 之前和之后添加代碼(如下所示)。我提供了 COBOL 程序期待的用戶標識和輸入參數:請求類型是“Share_value”,公司名是“IBM”。在 execute 之后,我們把 COBOL 程序返回的某些數據打印到控制臺。

clearcase/" target="_blank" >cccccc" border="1">

            /**
            * main method (for proxy unit testing)
            * @generated
            */
            public static void main(String[] args) {
            try {
            MyTradeProxy aProxy = new MyTradeProxy();
            // user code begin {set_inputs}
            COMMAREABUFFER comm = new COMMAREABUFFER();
            comm.setUserid("F058971");
            comm.setRequest__type("Share_Value");
            comm.setCompany__name("IBM");
            aProxy.setCOMMAREABUFFER(comm);
            // user code end
            aProxy.execute();
            // user code begin {get_outputs}
            COMMAREABUFFER result = aProxy.getCOMMAREABUFFER();
            System.out.println("1=" + result.getUnit__value__1__days());
            System.out.println("costbuy=" + result.getCommission__cost__buy());
            System.out.println("costsell=" + result.getCommission__cost__sell());
            // user code end
            

保存這個類,然后在菜單中選擇 Run、 Run as、 Java Application??刂婆_中的輸出類似于:


            1=00163.00
            costbuy=010
            costsell=015
            

把服務代理作為 JAR 文件導出
選擇 MyServiceProj項目,用鼠標右鍵單擊,然后選擇 Export。導出為 JAR 文件,選擇文件系統中的目標目錄。

生成基于 Struts 的中間層
為了生成構成中間層的 JSP、Java 類和配置文件,我們使用 Web 應用程序模型。這個過程由以下組成:

  1. 啟動向導并選擇模式
  2. 選擇我們要使用的、來自服務代理的數據
  3. 選擇一些基本的顯示屬性
  4. 選擇生成參數并生成
  5. 配置 WebSphere Test Environment(WTE)并測試

 

 

啟動并選擇模式
為了啟動向導,請選擇 File、 New、 Other、 Web、 Model-based Web Application。如下圖所示,您必須選擇應用程序名稱。應用程序名稱被用來標識將由這個模型生成的資源。

選擇被標識為 WSIF proxy的技術。如果您選擇 Relational Database 技術,那么向導將要求您連接到關系數據庫,您可在這個數據庫中選擇被用來創建 Web 頁面的表。VisualAge Pacbase 技術使用可以訪問許多后端系統的 VisualAge Pacbase 代理。

圖 7. 輸入應用程序名稱并選擇技術
選擇技術

單擊 Next后,您將看到如圖 8 所示的 Select Patterns 面板。為了大致地了解不同的配置,請瀏覽可用的模式。在這個示例中,我們要調用的 COBOL 程序可以顯示公司的股票的詳細視圖。

圖 8. 瀏覽可用的模式及其變體
選擇模式

選擇服務代理
向導中的第二步是配置來自服務代理的數據(這些數據將與模式一起被使用)。

  1. 如圖 9 所示,瀏覽并選擇已導出的代理 JAR。
  2. 然后,在 Input parameters 下選擇代理和 COMMAREABUFFER 類。
  3. 把輸入參數 Request_typeCompany_name從左邊的列表中轉移到右邊的列表中,COBOL 程序需要這兩個參數來完成讀操作。
  4. 在這個程序中,輸入和輸出參數在同一個類中。選擇輸出參數字段并也把它們轉移到右邊的列表中。您在這里選擇的字段可以被顯示給最終用戶看。
  5. 即使在這種情況下只讀的 COBOL 程序無法處理輸入,您也必須配置 Update 和 Delete 面板。
  6. 為了顯示向導的 Define Layouts 面板,請單擊 Next。

 

圖 9. 選擇代理并配置輸入和輸出字段
輸入參數

配置顯示
在下面顯示的 Define Layouts 面板中,您可以選擇級聯樣式表,選擇/取消選擇字段和操作,修改字段和操作屬性。通過單擊含有眼睛圖像的按鈕,您還可以預覽 Web 頁面。靜態的 HTML 可以隨時被生成,使您大致地了解 Web 頁面的模樣。單擊 Next后,您將看到向導的最后一個頁面。

圖 10. 定義 Web 頁面的布局屬性
定義布局

生成應用程序
下圖顯示了您可以配置生成參數的生成頁面:

  1. 把目標項目名改為 Company。
  2. 您還可以更改 Java 包的名稱(這些包中有您將要生成的應用程序)。
  3. 在樹形視圖中,您可以更改頁面、視圖和數據集的名稱。通過單擊名稱,您可以直接編輯缺省名。隨著您更改這些組件的名稱,列表中的文件名也被更改。
  4. 當您準備生成的時候,請單擊 Finish按鈕。

 

圖 11. 生成 Web 應用程序組件。
生成面板

瀏覽生成的組件

生成的 Java 類
在這節中,我們將簡要地描述生成的組件,先描述常見的 Java 類。

圖 12. 生成的 Java 類
Java 類

  • common.dab
    • CommonLog 定義了記錄函數。它使用 Jakarta LoggingFactory。
    • DataException 類被用來處理錯誤。
  • common.list
    • MultipleSelectionListForm - 這個類管理列表的每一行上的刪除復選框。
    • SelectionListForm - 為了啟動詳細視圖的導航,這個類管理著列表的每一行上的鏈接。
    • SelectionList - 存儲 HTTP 會話中的信息:列表的分頁信息和每行的鍵,使您能夠瀏覽(放大)到詳細頁面。
    • SessionObject - 用來存儲有關 HTTP 會話中詳細頁面的信息。
  • common.logic
    • AdditionalFieldChecks - 這個類完成某些常見的字段檢查。
    • CloseSession - 關閉會話并轉發到 SessionExpired 頁面。
    • CommonAction - 您可在這個類中放入每次調用操作時執行的邏輯;查找有效的會話。
    • CommonFormatter - 讓您設置日期和時間格式。
    • OpenSession - 用來建立 HTTP 會話。
  • wam.data
    • DataSetDataAccessBean - 這個類調用數據集的可用操作并捕捉數據異常。
    • DataSetExtractObject - 抽取標準的 getter 和 setter。
    • DataSetSessionObject - 包含存儲在 HTTP 會話中的關鍵字段。
    • DataSetValueObject - 用合適的類型把字段存儲在數據集中。
  • wam.logic.sample
    • CompanyDetail*Action - 刪除、讀和更新類調用 CICS 程序中的操作。
    • CompanyDetailForm - 這個類有表單的屬性和 validate 方法。
    • CompanyRefreshAction - 這個類用數據刷新 JSP。
  • 應用程序資源
    • ApplicationResources.properties - 包含常見的標簽和消息;
    • ApplicationResources-sample.properties - 包含模型特有的標簽和消息。

Web Content

圖 13. Web Content
Web Content

  • common - 您可以在這里找到處理分頁按鈕的 JSP 和 SessionExpired HTML 頁面。
  • doc - HTML 形式的技術文檔以及為每個模型生成的 Web、序列和類圖。
  • models - 模型被生成和存儲在 XMI 文件中。
    • jca_sample - 代理的導入的描述的結果,形式是 XMI 文件。
    • DataSet.dsxmi - 這個 XMI 文件包含在向導中配置的數據集信息。這個數據集可被重用于另一個模式。
    • sample.icxmi - 這個 XMI 文件存儲著模型信息 - 頁面、頁面視圖的內容、它們的操作、導航鏈接和顯示的數據集。這個文件使您能夠重放向導情景。
  • sample - 樣本模型特有的 JSP 資源。
  • theme - 級聯樣式表。
  • WEB-INF - 部署描述符、配置文件和二進制文件。稍后將更詳細地說明它們。
  • XML - 用于可擴展樣式表語言轉換的文件和樣式表,本文的第 2 部分將討論它們。
  • index.html - 測試頁面和技術文檔的入口點。

WEB-INF

圖 14. WEB-INF
WEB-INF 子目錄

  • classes 子目錄 - 已編譯的 Java 二進制文件。
  • lib 子目錄 - Struts 1.1 的 jar、WSIF 和代理 jar。
  • 標記庫有 .tld 擴展名。
  • 文檔類型描述有 .dtd 擴展名。
  • 有兩個 Struts 配置文件 - struts-config.xml 和 struts-sample-config.xml,其中聲明了:
    • 操作及其轉發路徑
    • 表單 bean
    • 轉到 sessionExpired.html 文件的全局轉發
    • 這個模型的消息資源文件 ApplicationResources-sample.properties
    • struts 驗證器插件以及包含驗證規則的文件
  • struts 驗證器框架,其中有常見的驗證規則和樣本模型特有的驗證。您可以在這些文件中添加新規則。
    • validator-rules-wam.xml - 這個文件有常見的驗證規則,如十進制和時間戳記檢查。如果您有在模型之間共享的其它常見的檢查,那么您最好把它們放在這里。
    • validation-sample.xml - 這里有樣本模型特有的檢查。包括最長的字段長度和格式檢查。如果您的規則太復雜以至于無法用 XML 來編寫,那么您可以在 validate() 方法中用所生成的 Form 類中的 Java 代碼來實現它們。
  • web.xml - Web 部署描述符。

測試 Web 應用程序

配置服務器

  1. 打開服務器透視圖,
  2. 創建新的服務器項目,
  3. 創建新的服務器和 WebSphere 版本 5.0 服務器配置。如果您有現成的服務器項目,請繼續并把新的服務器和服務器配置放在現成的項目中。
  4. 為了確保在服務器配置中聲明資源適配器,請打開服務器配置文件并且單擊缺省編輯器的 J2C 選項卡(如下圖所示)。
  5. 單擊 Add按鈕,選擇先前導入到工作空間中的 CICS ECI 資源適配器。
  6. 關閉并保存服務器配置文件。

圖 15. J2C 選項
J2C 選項

在服務器上運行

  1. 選擇 CompanyWeb 項目,彈出上下文菜單,單擊 Run on Server。
  2. 為了選擇現已正確地配置了 CICS ECI 資源適配器的新的服務器,請在顯示的對話框中單擊 Advanced按鈕。
  3. 單擊 Finish將把 Web 應用程序發布到應用程序服務器中,然后啟動應用程序服務器和應用程序。Web 瀏覽器將被啟動并顯示測試頁面(如下圖所示)。

圖 16. 測試頁面
測試頁面

瀏覽文檔

圖 17. 瀏覽生成的技術文檔
瀏覽文檔

執行應用程序
在測試頁面上,單擊啟動應用程序和詳細頁面(如下所示)的鏈接。

圖 18. 應用程序的啟動將打開一個會話并顯示輸入字段。
打開會話

  1. 鍵入輸入參數 Share_ValueIBM。
  2. 單擊調用 servlet 和 CICS 程序的 Read按鈕。
  3. 在下圖中,CICS 程序返回信息。

圖 19. CICS 程序返回的結果
讀操作

結束語
本文的第 1 部分為您演示了創建基于 Struts 的 Web 應用程序(這個程序使用 JCA 資源適配器連接到現有的 CICS 程序)的步驟。首先,我們使用 Application Developer 中的向導來創建企業服務。為了創建 Web 服務描述語言(Web Services Description Language,WSDL),我們從 COBOL 程序導入了數據描述。在配置了連接參數之后,我們使用 WSDL 生成 Java 代理并測試它以確保我們可以從 CICS 程序收發數據。

我們把代理打包到 jar 中并把這個 jar 用作 Web 應用程序模型向導的輸入。在生成與 CICS 代理通信的 Struts Java 類和 JSP 之前,我們在向導中選擇了要顯示的字段并配置了某些基本的顯示屬性。然后,我們配置服務器,部署、啟動并測試應用程序。

生成的應用程序符合 J2EE 標準并且可以被部署到能夠提供可靠性、可伸縮性和所要求的性能的應用程序服務器。盡管它有基本的驗證和錯誤處理,訪問和顯示數據,負責其它普通的但又必要的功能,但它不是萬能的。更復雜的驗證怎么辦?業務規則怎么辦?如何與其它 Web 頁面集成?安全性注意事項?在生成的代碼中,在哪里實現所有這些細節?這個應用程序看上去并不是特別吸引人。

生成的代碼提供了這些問題的部分答案,因為生成的代碼是清楚的,而且易于理解,有詳細的文檔,并可被修改以處理以上功能。Web 應用程序模型并不是被用來開發直接可用的、可立即運行的應用程序,而是開發基本的構件,您可以重新安排和使用這些構件以構造真實的可部署的應用程序。

本文的第 2 部分將討論提供可立即部署的用戶界面的任務。我將為您說明 Web 應用程序模型如何在開發期間為了把常見的外觀和感覺包括到應用程序中而使用可擴展樣式表語言轉換(Extensible Stylesheet Language Transformations,XSLT)。

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97