乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      簡化管理面向服務(wù)的應(yīng)用程序的創(chuàng)建...

       不會游泳的魚 2007-06-15

      控件可以讓開發(fā)人員專注于編寫應(yīng)用程序邏輯和委派基礎(chǔ)性架構(gòu)問題,如異步消息傳送、會話和與遠(yuǎn)程資源的連接。但仍有很多復(fù)雜問題使這些應(yīng)用程序難以 管理。 在本文中,我們將使用內(nèi)建的Weblogic Workshop控件開發(fā)一個基于Web services的示例應(yīng)用程序,并用它來說明管理面向服務(wù)的應(yīng)用程序的挑戰(zhàn)。最后,我們將演示Confuluent Software公司如何給開發(fā)人員和IT人員提供可能的Web services管理解決方案,該方案與BEA WebLogic 8.1 Platform集成在一起。


      為什么要面向服務(wù)?

        很少有應(yīng)用程序還在獨自運行。相反,大多數(shù)應(yīng)用程序經(jīng)常被集成到應(yīng)用程序到應(yīng)用程序互連的復(fù)雜“網(wǎng)絡(luò)”中。這些應(yīng)用程序網(wǎng)絡(luò)通常是完全異構(gòu)的、鏈接不同公司所開發(fā)的應(yīng)用程序、運行在不同的平臺上、以不同的語言實現(xiàn),并且安全保護(hù)也各異。
      更糟糕的是,利用現(xiàn)今緊密耦合的集成方法,每個應(yīng)用程序都敏銳地知曉其他應(yīng)用程序的特性。這樣,一個應(yīng)用程序的任何改變將會在整個網(wǎng)絡(luò)中引起一系列的級 聯(lián)變化。出現(xiàn)天文數(shù)字的開發(fā)和維護(hù)費用也不足為奇。同時,管理層會懷疑IT仍否重要,并逐年削減IT預(yù)算——總有一天,這就是緊密耦合的代價。
        面向服務(wù)的構(gòu)架(SOA)提供了一個出路。面向服務(wù)的應(yīng)用程序通過利用基于標(biāo)準(zhǔn)的Web services技術(shù)來連接異構(gòu)環(huán)境。通過在應(yīng)用程序間實現(xiàn)松散的耦合,它們消除了變化管理上的惡夢,也就是,改變一個應(yīng)用程序的實現(xiàn)而不會中斷其他應(yīng)用程序。

      WebLogic Workshop控件
        BEA WebLogic Workshop通過為分布式組件的組裝提供易用的工具,使得構(gòu)建面向服務(wù)的應(yīng)用程序變得很容易,并且方便了在組件間往來的XML消息的長久會話。
      在WebLogic Workshop中,任何應(yīng)用程序的核心構(gòu)建塊是控件??丶秃孟窈唵蔚腏ava組件(具有方法和事件),通過屬性可自定義該組件的行為。控件隱藏了 J2EE底層問題,這些問題包括連接遠(yuǎn)程數(shù)據(jù)庫、Web services、EJB對象和消息隊列。有了控件,通過設(shè)置屬性,而不是調(diào)用API,就可配置這些外部資源的連接。通過促進(jìn)輕松組裝松散耦合的應(yīng)用程序 組件,控件也為實現(xiàn)面向服務(wù)作出了貢獻(xiàn)。
        為了進(jìn)一步增強松散耦合,WebLogicWorkshop 8.1也提供了可視化的編輯器(和XQuery支持),用來建立XML接口和底層Java對象間的映射。
        讓我們剖析一個簡單的Web services應(yīng)用程序,看一看WebLogic Workshop是如何消除創(chuàng)建類似應(yīng)用程序的苦惱的。

      訂單管理應(yīng)用程序示例
        即使實現(xiàn)一個簡單的業(yè)務(wù)場景,例如我們訂單管理Web service示例,也會有大量的技術(shù)復(fù)雜難題:

      • Web service必須和給客戶端用戶使用的WSDL定義文件一起部署在服務(wù)器上。
      • 該服務(wù)依賴并使用多種后端組件,包括數(shù)據(jù)庫、EJB和其他遠(yuǎn)程Web services。
      • 該服務(wù)必須強制按照被調(diào)用操作的次序執(zhí)行。
      • 該服務(wù)必須允許多個客戶端并發(fā)調(diào)用。

      訂單管理Web服務(wù)的示例顯示了如下操作:

      • 用戶能夠檢查未決訂單的狀態(tài):
        queryOrderStatus(String inAccountNumber, String inOrderNumber)
      • 用戶可以創(chuàng)建一個新訂單:
        createOrder(String inAccountNumber, String inOrderNumber)
      • 用戶可以提交一個新創(chuàng)建的訂單:
        commitOrder(String inAccountNumber, String inOrderNumber)

      首先創(chuàng)建訂單,如果創(chuàng)建成功,則提交該訂單。createOrder和commitOrder必須按順序執(zhí)行。對于每個方法的調(diào)用,服務(wù)將會從客戶帳戶 中扣除一定費用。用戶帳戶作為EJB建模。訂單存儲在JDBC兼容的數(shù)據(jù)庫中。對于每一個新創(chuàng)建的訂單,commitOrder將通知遠(yuǎn)程服務(wù)器(通過一 個Web service調(diào)用)。
        通過使用BEA WebLogic Workshop,并利用控件這一強大的概念,解決在創(chuàng)建像此類Web service的固有復(fù)雜性問題時是很容易的。圖1顯示了示例服務(wù)的設(shè)計視圖及其所用控件。


      圖1:示例的設(shè)計視圖

      首先,在WebLogic Workshop中創(chuàng)建、部署和展示W(wǎng)eb service的過程是很直接的。簡單地創(chuàng)建一個Web service工程、添加所有的方法、編寫邏輯并放置“Play”按鈕。此外,WebLogic Workshop自動創(chuàng)建一組Web頁面來測試和運行該Web service(參見清單1)。

      清單 1

      /**
      * @common:operation
      */
      public String queryOrderStatus(String inAccountNumber, String inOrderNumber)
        然后對后端組件的訪問,如EJB、數(shù)據(jù)庫,或者甚至是遠(yuǎn)程Web services,則只是一個拖放動作(參見清單2)。一旦將使用的組件拖到項目中,它將作為一個對象出現(xiàn)在“代碼視圖”窗格中,并且可以很容易地集成到自定義代碼中。

      清單 2

      /**
      * Remote Web services
      * @common:control
      */
      private service.NotifyOrderServiceControl serviceNotify;
        第三,確認(rèn)在WebLogic Workshop中能夠以給定順序調(diào)用各種方法。從Web service所提供的每個操作能被標(biāo)記為會話的一部分。這個標(biāo)記也表明了操作涉及到會話中的哪個部分,這樣強制必須調(diào)用這些操作中的訂單(參見清單3)。

      清單 3

      /**
      * Create a new order
      * @common:operation
      * @jws:conversation phase="start"
      */
      public void createOrder(String inAccountNumber, String inOrderNumber)
        最后,WebLogic Workshop會話能夠為多個用戶保持環(huán)境。會話標(biāo)記指出要在會話期間保持環(huán)境信息(狀態(tài))。使用這種機制,訂單管理服務(wù)能夠同時處理多個客戶端。

      部署面向服務(wù)的應(yīng)用程序也帶來了新的挑戰(zhàn)
        不幸的是,世上沒有免費的午餐。面向服務(wù)的應(yīng)用程序大幅削減了開發(fā)和維護(hù)的費用,但代價就是管理復(fù)雜度的增加:
         監(jiān)視應(yīng)用程序的健康狀況,不僅僅是組件
      單管理應(yīng)用程序示例。當(dāng)前的管理工具僅僅監(jiān)視單個組件和組件的低級基礎(chǔ)架構(gòu)?;谶@點,我們沒辦法驗證一個分布式Web services應(yīng)用程序是否工作正常。如果應(yīng)用程序使用外部Web services(如合作伙伴的報價服務(wù)),那么只會激化這個問題。由于沒有方法管理外部公司所運行的服務(wù)器,所以常規(guī)的監(jiān)視方法完全沒用了。因此在被憤 怒的經(jīng)理訓(xùn)斥前,您如何檢測正在出現(xiàn)的問題?

      不知道去哪里排除故障
        一旦你開始每過幾分鐘 就被不高興的銷售副主管所訓(xùn)斥,因為訂單管理應(yīng)用程序出錯了(在季度結(jié)束前兩天),您應(yīng)該到哪里去查找罪魁禍?zhǔn)啄??是提供訪問由制造IT部門所管理的存貨 系統(tǒng)的WebLogic Workshop控件嗎?是這個應(yīng)用程序所依賴的眾多Web services之一嗎?更糟的是,您怎么知道應(yīng)用程序依賴哪個Web services和外部資源?隨著訓(xùn)斥頻率的增加,您僅有的資源都用來開始記錄多個系統(tǒng)的眾多日志上了。

      記錄審核和記帳的請求和響應(yīng)
      要求內(nèi)部IT部門追蹤軟件應(yīng)用程序的使用也在日漸增加,以便不同的業(yè)務(wù)部門支付其公平的IT投入份額。同樣,任何跨越公司邊界實現(xiàn)業(yè)務(wù)流程自動化的應(yīng)用 程序也必須擁有一個計劃,用來解決發(fā)送者和接收者之間的拒付糾紛。在調(diào)用程序和被調(diào)用程序時的一致消息日志記錄,是處理這些審核和記帳需求的關(guān)鍵。IT經(jīng) 理如何確保所有的開發(fā)人員在所有的入口點和退出點都實現(xiàn)正確級別的日志記錄?對于使用XML加密進(jìn)行加密的消息,您如何確保當(dāng)消息被清除時沒有記錄(這會 破壞公司的保密政策)?對于由打包應(yīng)用程序本身所發(fā)布的Web services,如何完成消息日志記錄?

      確保始終如一地執(zhí)行安全策略
      即使在簡化的示例應(yīng)用程序中,一份文檔也會在應(yīng)用程序組件間傳送多次。當(dāng)調(diào)用createOrder操作時,客戶端程序發(fā)送一個P.O;一旦該訂單被提 交,這個PO最終會被送到不同的Web service。為了確保端到端的保密性和完整性,開發(fā)人員可以使用WS-Security、XML加密和XML簽名(BEA WebLogic 8.1支持WS-Security)。擁有這些能力是很好的,但是如果沒有堅持使用,就沒有購買意義了。安全構(gòu)架師如何確保所有的企業(yè)間Web services在處理消息前都驗證了消息的數(shù)字簽名呢?
        在開始將松散耦合的、分布式的應(yīng)用程序向行業(yè)范圍中部署時,這只是IT人員需要應(yīng)對的某些新挑戰(zhàn)。為了簡潔,這里我們選擇只關(guān)注幾個關(guān)鍵問題。順便還提及了很多其他問題——包括實現(xiàn)故障切換和處理傳輸層故障的重試規(guī)劃、實現(xiàn)單點登錄和服務(wù)版本控制。

      評估用于管理SOA部署的新管理工具
      現(xiàn)在,您應(yīng)該確信成功部署Web服務(wù)最初需要處理一大堆棘手的管理問題。即使現(xiàn)今您的Web services仍然處于試驗階段,您也不應(yīng)該推遲考慮管理方面的問題。好消息就是很多管理工具多已著眼于此。壞消息也是這樣。很多新的Web services管理工具、應(yīng)用服務(wù)器管理工具、系統(tǒng)管理工具、XML路由工具、管理器的管理工具等等,“Web services”這個單詞似乎要揭露出它所有的數(shù)據(jù)表。
        下面看一看為管理您所創(chuàng)建的、新的面向服務(wù)的應(yīng)用程序找尋評估工具時要注意的幾件事情。
         它能非侵入地監(jiān)視所有WebLogic控件和Web Services的調(diào)用嗎?
      在BEA WebLogic 8.1中,使用控件訪問所有外部資源。這樣監(jiān)視延遲和所有控件調(diào)用的輸入/輸出的管理工具就能可視化地提供應(yīng)用程序依賴的所有組件。該工具應(yīng)該能“探察” 任何Web services,而不管用于發(fā)布這些服務(wù)的平臺是什么(J2EE應(yīng)用服務(wù)器、.NET、集成代理或者打包應(yīng)用程序)。監(jiān)視控件和分布式Web services必須以一個非侵入的方式來完成。這至少意味著應(yīng)該能夠插入管理層而無需改變?nèi)魏螒?yīng)用程序。但是管理層應(yīng)該超越此要求,還應(yīng)該能夠不侵入應(yīng) 用程序的運行時行為。例如,管理層應(yīng)該利用處理中的SOAP偵聽機制,在任何可能的情況下都減少延遲開銷并避免添加新的故障點。

         它能跟蹤端到端事務(wù)流和會話嗎?
        為了使您能夠排除分布式應(yīng)用程序故障,管理工具必須能夠?qū)崟r跟蹤應(yīng)用程序的執(zhí)行。該跟蹤必須包括應(yīng)用程序用到的所有控件。
      BEA Weblogic 8.1簡化了異步的、會話的、應(yīng)用程序到應(yīng)用程序交互的創(chuàng)建——為了跟蹤這些會話,管理工具必須能夠標(biāo)識和關(guān)聯(lián)那些共享會話環(huán)境的消息,并具備可視化表示 執(zhí)行時間線的能力。進(jìn)行故障排除的同時,您應(yīng)該能夠從一個會話中所涉及的所有Web服務(wù)調(diào)用的高層次視圖向下查看,直到關(guān)于該服務(wù)內(nèi)所用任何控件的執(zhí)行細(xì) 節(jié)。一旦問題限定到特定的控件,會話系統(tǒng)管理工具就可以用于調(diào)試。然后,您可以垂直向下移動執(zhí)行,通過支持基礎(chǔ)架構(gòu)的多個層,從Java對象到應(yīng)用服務(wù) 器,向下直到操作系統(tǒng),最終到達(dá)到硬件服務(wù)器。

         它能夠主動管理Web Services間的交互嗎?
      為了確保持續(xù)地實施IT策略,如日志和安全,這些動作必須從應(yīng)用程序代碼中提取出來,而用一個分離的策略管理層來自動執(zhí)行。例如,開發(fā)人員無需再明確地 編寫代碼來記錄Web service請求和響應(yīng)消息。也不必編寫代碼來驗證數(shù)字簽名或者進(jìn)行壓縮,或檢查病毒,或任何此類操作問題。相反,通過截取消息和主動地操縱消息內(nèi)容, 管理層應(yīng)該負(fù)責(zé)強制實行策略。如果公司以后改變了策略,例如,決定只記錄消息頭部而不記錄所有消息內(nèi)容,就無需更改代碼。一個簡單的配置改變就能夠獲得成 功。

        它能夠與您的WebLogic 8.1開發(fā)環(huán)境集成嗎?
        從過 去來看,應(yīng)用程序已經(jīng)開發(fā)和測試完畢后,工作通常集中在管理上。即使對于被動的監(jiān)控工具這也不是最理想的。而對于使用主動的管理工具,這將是災(zāi)難性的。有 了需要攔截傳送中的消息并作用于消息的管理層,開發(fā)和管理之間的分裂消失了。需要在開發(fā)周期中先行解決管理問題,以便能夠以和生產(chǎn)中相同的方法執(zhí)行所有的 測試(功能和性能)。正如上面所討論的,主動管理工具幫助完成持久策略執(zhí)行,方法是用中心配置的策略處理器替換隱藏在每個服務(wù)中的代碼。要在開發(fā)早期解決 管理問題,并在處理安全和日志時使用配置替代編碼,您的管理工具必須與您的WebLogic開發(fā)工具和您的端到端程序開發(fā)過程完美地集成。

         在全異的遠(yuǎn)程服務(wù)之間,它能夠為安全/QOS策略提供單點配置嗎?
      隨著應(yīng)用程序內(nèi)Web services使用的膨脹,多個應(yīng)用程序?qū)l(fā)布和使用Web services。管理工具應(yīng)該能夠允許您集中查看,為環(huán)境中的任何服務(wù)提供監(jiān)控、安全和QOS策略,并能向多個服務(wù)“廣播”管理策略的更新,而不必本地 逐臺服務(wù)器和逐個服務(wù)地進(jìn)行配置。

      Confluent 的Web Services管理解決方案
        Confluent提供了一個管理工具,可將其插入到BEA WebLogic Workshop IDE中,并添加了易用的管理功能。它允許您自動監(jiān)視Web services和所有組成控件的執(zhí)行,而無需任何額外的編碼。
        讓我們在運行中快速了解這個工具,使用它管理我們的示例應(yīng)用程序。
      一旦您啟動了BEA的CORE,您會注意到在BEA WebLogic Workshop環(huán)境下半部分的一些其他窗格(參見圖2)。在右下方,有一個Configure Policy窗格,可使用它定義運行策略,以強制實行Web service,如日志、簽名檢查或者調(diào)用第三方SAML提供商。左下方窗格顯示了訂單管理Web service使用的控件——dbOrderManagement、serviceNotify和ejbAccount。單擊相應(yīng)的控件可切換監(jiān)視控件。


      圖2:Runtime View選項卡

        點擊Runtime View 選項卡可顯示所有與服務(wù)相關(guān)的會話細(xì)節(jié)。例如,在5422毫秒的時間內(nèi)成功完成一個會話(表示一個訂單事務(wù)開始于13.38.39)。用戶也可以回顧會話、簡單的操作、成功和失敗的數(shù)目。
      Operations 選項卡能夠顯示所選會話的詳細(xì)信息(參見圖3)。它顯示了所選會話中調(diào)用的所有Web service操作。它用一個圖形顯示了這些操作、它們的時間、延遲和狀態(tài)的次序。注意payload窗格同時顯示了觸發(fā)執(zhí)行操作的SOAP消息和發(fā)回請 求者的SOAP結(jié)果。


      圖3:Operations選項卡

        點擊Controls 選項卡可以看到更多關(guān)于所選操作內(nèi)所調(diào)用的控件細(xì)節(jié)。對于每個被調(diào)用的控件,它的名稱、類型、操作、狀態(tài)和延遲都顯示在表格和圖中。
        總之,Runtime View 窗格允許程序員分析Web service在多個層次的運行時行為:從會話層到操作層,最后到底層控件。
        要了解關(guān)于Confluent用于BEA Weblogic的Web services管理軟件的更多信息,可以查閱BEA Premier Component Gallery:http://dev2dev./products/wlworkshop81/partners/index.jsp,或者查閱www.。

      結(jié)束語
        除了WSDL、UDDI和SOAP,還有很多面向服務(wù)的應(yīng)用程序。BEA WebLogic 8.1提供了一個全面的平臺,用以開發(fā)企業(yè)級面向服務(wù)的應(yīng)用程序。但是請記住,要盡早開始考慮管理問題。在過去忽略這一說教可能不是致命的。但現(xiàn)在是。
        示例應(yīng)用程序的源代碼見:www./weblogic/sourcec.cfm。

      附錄:示例應(yīng)用程序源代碼

      import examples.ejb20.basic.containerManaged.Account;

      public class OrderManagementService implements com.bea.jws.WebService
      {
      /**
      * EJB holding user accounts
      * @common:control
      */
      private ejbControl.AccountEJBControl ejbAccount;

      /**
      * The remote service where notifications of committed orders are sent
      * @common:control
      */
      private service.NotifyOrderServiceControl serviceNotify;

      /**
      * The orders database control
      * @common:control
      */
      private database.OrderManagementDB dbOrderManagement;


      // The fee charged when ever a transaction is performed
      private final int BASIC_FEE = 10;

      /**
      * @common:operation
      */
      public String queryOrderStatus(String inAccountNumber, String inOrderNumber)
      throws Exception {
      int result = dbOrderManagement.checkOrder(inOrderNumber);
      withdraw(inAccountNumber, BASIC_FEE);
      return String.valueOf(result);
      }

      /**
      * Created a new order
      * @common:operation
      * @jws:conversation phase="start"
      */
      public void createOrder(String inAccountNumber, String inOrderNumber)
      throws Exception {
      dbOrderManagement.insertOrder(inOrderNumber);
      withdraw(inAccountNumber, BASIC_FEE);
      }

      /**
      * Commits a new order
      * @common:operation
      * @jws:conversation phase="finish"
      */
      public void commitOrder(String inAccountNumber, String inOrderNumber)
      throws Exception {
      serviceNotify.notifyOrder(inOrderNumber);
      withdraw(inAccountNumber, BASIC_FEE);
      }

      /**
      * Withdraws money from a customer account
      */
      private double withdraw(String accountKey, double withdrawAmount)
      throws Exception {
      return getAccount(accountKey).withdraw(withdrawAmount);
      }

      /**
      * <p>Helper function -- returns an EJB account for a given key<p>
      *
      * @return An Account object
      */
      private Account getAccount(String accountKey)
      throws Exception {
      return ejbAccount.findByPrimaryKey(accountKey);
      }
      }


      原文出處
      http://www./story/?storyid=42997&DE=1

       作者簡介
        Amit Dayal是Confluent Software公司產(chǎn)品管理方面的副主管,該公司是Web services管理軟件方面的主要提供商。Amit在企業(yè)軟件方面有超過14年的經(jīng)驗。在為Confluent公司工作之前,Amit是 interKeel公司的創(chuàng)始人,該公司在Web services管理類中是一個先鋒。
        Didier Guzzoni是現(xiàn)在是Confluent Software公司的高級軟件工程師。他于1996年畢業(yè)于瑞士聯(lián)邦理工大學(xué),獲得軟件工程碩士學(xué)位。他曾是VerticalNet的研究工程師,在那 里他參加了OSM項目,該項目是促進(jìn)和協(xié)調(diào)Web Services的基礎(chǔ)結(jié)構(gòu)。他作為一名研究工程師在SRI(Stanford Research Institute)International公司開始其職業(yè)生涯,從事OAA(Distributed software architecture)項目,并為CHIC! Lab(Computer Human Interface Center)工作,他的研究重點是未來多模式用戶界面。他還曾積極參與移動機器人項目,其中機器人被認(rèn)為是實施團(tuán)隊協(xié)作以執(zhí)行合作任務(wù)的物理載體。



      Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1633380


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多