欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring與WebLogic Server的集成

摘要

  BEA WebLogic Server 9.0是對Sun Microsystems的J2EE 1.4平臺的領(lǐng)先實(shí)現。然而,WebLogic Server的核心價(jià)值主張則體現在J2EE規范中沒(méi)有的領(lǐng)域——增強的管理、易用性、高可用性、可伸縮性、可靠性和性能。實(shí)際上,WebLogic Server的價(jià)值并不與任何特定的編程模型關(guān)聯(lián),所以很自然地,它也適用于新出現的非J2EE編程模型。近年來(lái)出現的最激動(dòng)人心的事物莫過(guò)于基于反向控制(Inversion of Control,IoC)的模型,而Spring Framework正是此類(lèi)模型的領(lǐng)先實(shí)現。本文介紹了Spring Framework、WebLogic Server以及二者的集成的一些特性。我們將看到,整體大于部分之和。

文章結構

  在前兩節中,我們將概覽Spring和WebLogic Server,并介紹它們各自的特性。熟悉Spring Framework的讀者可以跳過(guò)第一節。因為本文的主要目的是介紹兩種技術(shù)的集成,所以本文余下的部分都會(huì )集中在這一點(diǎn)上。為了提供一個(gè)上下文,我們首先剖析了MedRec——與WebLogic Server一起發(fā)行的一個(gè)示例應用程序——首先是以原始的J2EE形式,然后再使用Spring Framework重構。此后,我們將圍繞特定的集成點(diǎn)進(jìn)行詳細的闡述。如果您打算在WebLogic Server上開(kāi)發(fā)Spring應用程序,那么您肯定能從本文中找到對您有所幫助的細節。如果您只是想進(jìn)行大概的了解,那么先閱讀標題,以后再了解其具體內容。最后,我們展望了一些正在考慮的未來(lái)開(kāi)發(fā)工作。

Spring簡(jiǎn)介

  在本節中,我們將簡(jiǎn)要概括Spring Framework的一些特性。
Spring 是一個(gè)分層的Java/J2EE應用框架,它基于Rod Johnson所著(zhù)的《Expert One-on-One J2EE Design and Development》(Wrox,2002年)一書(shū)中所公布的代碼。Spring之所以存在,是因為我們相信,J2EE應該更加易用,而且我們可以使用更簡(jiǎn)單的方法進(jìn)行J2EE開(kāi)發(fā),同時(shí)又不犧牲平臺的性能。
Spring支持靈活的J2EE開(kāi)發(fā),并允許使用POJO開(kāi)發(fā)J2EE應用程序。

改進(jìn)的Spring開(kāi)發(fā)體驗

  Spring在其核心部分提供了一個(gè)易于配置的、XML驅動(dòng)的反向控制(IoC)容器。IoC基于所謂的“好萊塢原則”——不要給我們打電話(huà),我們會(huì )找你。在這種方案中,應用程序中Java對象之間的關(guān)系是由容器注入的,而不是通過(guò)直接編程實(shí)現的。注入分兩種形式——構造函數注入和setter注入,這取決于容器是通過(guò)其構造函數還是通過(guò)mutator方法把信息注入一個(gè)已創(chuàng )建的Java對象。
在Spring中,注入的屬性——或到其他bean的引用——是通過(guò)一個(gè)XML文件進(jìn)行配置的,這使得配置變得非常直接。Spring與一個(gè)AOP框架耦合在一起,而該框架支持非侵入性地添加諸如事務(wù)和安全這樣的屬性,這意味著(zhù)開(kāi)發(fā)人員可以集中精力創(chuàng )建用于解決業(yè)務(wù)問(wèn)題的解決方案,而不會(huì )為J2EE開(kāi)發(fā)或配置的復雜性而頭痛。因為該容器是非侵入性的,所以您不必擔心業(yè)務(wù)代碼會(huì )被特定于供應商(此處也包括Spring)的工件所污染。

Spring應用程序的組件

  正如我們所提到的那樣,Spring提供了一個(gè)輕量級的容器,用于提供集中式、自動(dòng)化的配置和編寫(xiě)應用程序對象。該容器是非侵入性的,能夠以一種一致而透明的方式,通過(guò)IoC把一組松散耦合的組件(POJO)組裝為一個(gè)復雜的系統。因為該容器允許首先獨立地開(kāi)發(fā)和測試各軟件組件,然后在任意環(huán)境(J2SE或J2EE)中進(jìn)行擴展部署,所以它具有靈活性和高利用率,并提高了應用程序的可測試性和可伸縮性。此外,Spring還提供了大量其他的對開(kāi)發(fā)人員友好的特性,如下:

  • 一個(gè)用于事務(wù)管理的通用抽象層:支持可插入的事務(wù)管理器,并使得劃分事務(wù)更加容易,同時(shí)無(wú)需處理底層的問(wèn)題。該層中還包括JTA策略和一個(gè)JDBC DataSource。與普通的JTA或EJB CMT不同,Spring的事務(wù)支持并不依賴(lài)于J2EE環(huán)境。
  • 一個(gè)JDBC抽象層:提供一種很有意義的異常層次結構(不用把供應商代碼從SQLException中抽取出來(lái)),簡(jiǎn)化了錯誤處理,而且大大減少了必須編寫(xiě)的代碼數量。不再需要編寫(xiě)另一個(gè)finally塊來(lái)再次使用JCBC。面向JDBC的異常符合Spring的一般DAO異常層次結構。
  • 與行業(yè)領(lǐng)先的對象-關(guān)系映射解決方案的集成:主要在資源管理、DAO實(shí)現支持和事務(wù)策略等方面。Spring對大量IoC方便特性的一流支持,解決了許多典型的O-R映射集成問(wèn)題。所有這些都符合Spring的一般事務(wù)和DAO異常層次結構。
  • AOP功能:完全集成到Spring配置管理中。您可以對Spring所管理的任何對象啟用AOP,添加像聲明性事務(wù)管理這樣的方面。借助于Spring,您可以擁有沒(méi)有EJB的聲明性事務(wù)管理——甚至也可以沒(méi)有JTA。
  • 一個(gè)靈活的MVC Web應用框架:構建在核心的Spring功能之上。該框架是高度可配置的(通過(guò)策略接口),并能適用多種視圖技術(shù),比如JSP、Velocity、Tiles、iTexth和POI。注意,Spring中間層可以很容易地與基于其他任何Web MVC框架(如:Struts、WebWork或Tapestry)的Web層結合在一起。

  您可以在任何J2EE服務(wù)器中使用Spring的所有功能,也可以在非托管環(huán)境中使用其中的大部分功能。Spring的一個(gè)重心是支持可重用的業(yè)務(wù)和不依賴(lài)于特定的J2EE服務(wù)的數據訪(fǎng)問(wèn)對象。這些對象可以不費事地跨J2EE環(huán)境(Web或EJB)、獨立應用程序和測試環(huán)境進(jìn)行重用。

  Spring的分層架構提供了很多靈活性。它所有的功能都構建在較低的層次上。例如,您可以在不使用MVC框架或沒(méi)有AOP支持的情況下使用JavaBean配置管理。但是,如果您要使用Web MVC框架或AOP支持,您會(huì )發(fā)現它們構建在配置框架之上,所以您可以馬上用上有關(guān)它的知識。

BEA WebLogic Server簡(jiǎn)介

  在本節中,我們將簡(jiǎn)要概括BEA WebLogic Server的特性,重點(diǎn)強調它所提供的底層基礎架構,而不是編程模型。

  WebLogic Server是一個(gè)可伸縮的企業(yè)級的J2EE應用服務(wù)器。WebLogic Server基礎架構支持多種分布式應用程序的部署,是構建任何種類(lèi)的應用程序的理想基礎。

  WebLogic Server實(shí)現了Sun Microsystems的J2EE 1.4規范,提供了一組標準的API,用于創(chuàng )建可以訪(fǎng)問(wèn)多種服務(wù)(如:數據庫、消息傳遞服務(wù))的分布式Java應用程序和到外部企業(yè)系統的連接。終端用戶(hù)客戶(hù)使用Web瀏覽器客戶(hù)端或Java客戶(hù)端訪(fǎng)問(wèn)這些應用程序。因為J2EE已經(jīng)為大家所熟悉,這里我們不再詳細討論。更多信息,請參見(jiàn)WebLogic Server文檔中關(guān)于編程模型的部分。

  除了實(shí)現J2EE之外,WebLogic Server還使企業(yè)能夠在一個(gè)健壯、安全、高度可用和可伸縮的環(huán)境中部署任務(wù)關(guān)鍵型應用程序。這些特性允許企業(yè)配置WebLogic Server實(shí)例集群,以便分布負載,并在發(fā)生硬件或其他故障時(shí)提供額外的容量。新的診斷工具允許系統管理員監控和調優(yōu)已部署應用程序和WebLogic Server環(huán)境本身的性能。您還可以配置WebLogic Server以自動(dòng)監控和調整應用程序吞吐量,無(wú)需人工干預。廣泛的安全特性保護了對服務(wù)的訪(fǎng)問(wèn),保證了企業(yè)數據的安全,并阻止了惡意攻擊。

WebLogic Server增強后的服務(wù)質(zhì)量

  和其他許多BEA產(chǎn)品一樣,WebLogic Server就像冰山,浮在水上的不過(guò)是很小一部分而已。具體來(lái)說(shuō),WebLogic Server提供了大量特性和工具來(lái)支持高度可用和可伸縮的應用程序的部署。

  • WebLogic Server集群通過(guò)將工作負載分布在多個(gè)WebLogic Server實(shí)例之間,為應用程序提供可伸縮性和可靠性。根據要處理的工作量,可以把傳入的請求發(fā)送給集群中的某個(gè)WebLogic Server實(shí)例。在出現硬件或其他故障時(shí),會(huì )話(huà)狀態(tài)對其他節點(diǎn)是可用的,這些節點(diǎn)可以恢復故障節點(diǎn)的工作。此外,您可以實(shí)現集群,使服務(wù)駐留在這樣的單個(gè)機器上:如果出現故障,該機器可以選擇把服務(wù)遷移到集群中的另一個(gè)節點(diǎn)上。
  • 除了跨一個(gè)集群中的多個(gè)服務(wù)器復制會(huì )話(huà)狀態(tài)之外,WebLogic Server還可以跨多個(gè)集群復制HTTP會(huì )話(huà)狀態(tài),從而在多個(gè)地理區域、網(wǎng)格和Internet服務(wù)提供者中擴展可用性和容錯性。
  • Work Manager基于用戶(hù)所定義的規則對工作劃分優(yōu)先級,并監控實(shí)際的運行時(shí)性能統計信息。這些信息隨后被用于優(yōu)化應用程序的性能。Work Manager可以以全局方式應用于一個(gè)WebLogic Server域或一個(gè)特定的應用程序組件上。
  • 過(guò)載保護使WebLogic Server能夠檢測、避免過(guò)載情況并從其中恢復。
  • 網(wǎng)絡(luò )頻道基于流量類(lèi)型把網(wǎng)絡(luò )流量分散到各個(gè)頻道中去,有利于網(wǎng)絡(luò )資源的有效使用。
  • WebLogic Server持久性存儲是一個(gè)性能卓越的內置存儲器解決方案,用于需要持久性存儲的WebLogic Server子系統和服務(wù)。例如,它可以保存持久性的JMS消息,或者暫時(shí)保存使用存儲-轉發(fā)特性發(fā)送的消息。持久性存儲支持到基于文件的存儲器或到支持JDBC的數據庫的持久性。
  • 存儲-轉發(fā)服務(wù)使WebLogic Server能夠在跨WebLogic Server實(shí)例分布的應用程序之間可靠地交付消息。如果發(fā)送消息時(shí)消息目的站不可用,或者出現了網(wǎng)絡(luò )問(wèn)題或系統故障,那么消息就會(huì )被保存在本地的服務(wù)器實(shí)例上,然后一旦遠程目的站可用就轉發(fā)給它。
  • 企業(yè)級就緒部署工具方便了從開(kāi)發(fā)階段到生產(chǎn)環(huán)境的應用程序部署和遷移。
  • 生產(chǎn)環(huán)境重新部署使企業(yè)能夠部署應用程序的新版本,而不會(huì )中斷老版本上正在進(jìn)行的工作。

  現在,讓我們來(lái)看一看這兩個(gè)系統之間的協(xié)作。

在J2EE和Spring環(huán)境中開(kāi)發(fā)應用程序

  為比較J2EE和Spring開(kāi)發(fā)方法的不同,我們使用Spring Framework重新編寫(xiě)了MedRec示例應用程序。在接下來(lái)的一節中,我們將簡(jiǎn)要地概覽MedRec的一般架構,然后依次看一看它的J2EE和Spring形式。

Medical Records應用程序

  Avitek Medical Records(或MedRec)是一個(gè)WebLogic Server示例應用程序套件,它簡(jiǎn)明地演示了J2EE平臺的各個(gè)方面。MedRec的設計目的是用作對各個(gè)層次的J2EE開(kāi)發(fā)人員進(jìn)行培訓的工具。它展示了如何使用每個(gè)J2EE組件,并說(shuō)明了組件交互和客戶(hù)端開(kāi)發(fā)的設計模式。MedRec還闡明了使用WebLogic Server開(kāi)發(fā)和部署應用程序的最佳實(shí)踐。
MedRec背后的現實(shí)框架是一個(gè)患者、醫生和管理人員的框架,該框架使用各種不同的客戶(hù)端來(lái)管理患者數據。對于患者,MedRec為用戶(hù)提供了一個(gè)基于Web的應用程序,用于查看他們的醫療記錄和維護檔案文件。對于管理人員,MedRec提供了一個(gè)基于Web的應用程序,用于管理傳入的注冊、醫療記錄上傳和一般性的應用程序監控。MedRec還包含用于與獨立醫療機構接合的資源。為了演示這種通信,MedRec包含了一個(gè)醫生應用程序,用于請求和提供數據給MedRec的系統。

MedRec J2EE版本架構概覽

  MedRec的J2EE和WebLogic Server版本是按照傳統的3層架構模型來(lái)設計和實(shí)現的,在該模型中,客戶(hù)端、服務(wù)器和數據存儲器都是相互獨立的:

  • 表示層:該層負責所有的用戶(hù)交互,有時(shí)也稱(chēng)為客戶(hù)端層。
  • 服務(wù)層:該層是封裝了應用程序的業(yè)務(wù)邏輯的中間層。它處理來(lái)自異構客戶(hù)端的請求,同時(shí)與各種后端系統進(jìn)行交互,包括數據存儲器。該層有時(shí)也稱(chēng)為服務(wù)器層。
  • 企業(yè)信息系統(Enterprise Information System,EIS)層:該層代表那些提供和/或保存數據的系統,比如遺留應用程序和數據庫。EIS層有時(shí)也稱(chēng)為數據存儲器。

  針對MedRec的患者管理應用程序,我們開(kāi)發(fā)了一些Web應用程序(webapp),用于把服務(wù)公開(kāi)給它們各自的用戶(hù)。webapp符合模型-視圖-控制器(Model-View-Controller)模式,Java Server Page呈現視圖給用戶(hù),模型封裝要呈現給用戶(hù)和從用戶(hù)處捕捉而來(lái)的數據,而控制器機制則管理除與服務(wù)層的交互之外的組件交互。MedRec采用Jakarta Struts來(lái)實(shí)現該模式。

  服務(wù)層提供服務(wù)給發(fā)出請求的客戶(hù)端,并管理與后端應用程序和資源的交互。MedRec的服務(wù)層采用Session Facade模式來(lái)封裝業(yè)務(wù)邏輯和業(yè)務(wù)數據。Session Facade通過(guò)提供一個(gè)到分布式服務(wù)的接口,簡(jiǎn)化了應用程序的復雜性。在MedRec中,Session Facade的首要責任是提供數據吞吐量。在MedRec的J2EE和WebLogic Server版本中,Session Facade被開(kāi)發(fā)為無(wú)狀態(tài)的會(huì )話(huà)Enterprise JavaBean,而數據則是由實(shí)體Enterprise JavaBean來(lái)管理的。

  為了與外部實(shí)體相連接,MedRec通過(guò)Web服務(wù)公開(kāi)應用程序功能,這允許不同系統之間使用一系列開(kāi)放標準進(jìn)行動(dòng)態(tài)交互。通過(guò)使用Web服務(wù)公開(kāi)服務(wù),MedRec能夠為獨立的各方提供數據,或接受來(lái)自各方的數據,從而實(shí)現了集中式醫療記錄管理的首要目標。

圖1說(shuō)明了MedRec的J2EE與WebLogic Server版本的高層架構。


圖1. J2EE版MedRec架構示意圖

使用Spring重新表示MedRec

  為了使Spring能夠利用WebLogic Server的企業(yè)級特性,我們重新設計了MedRec的架構,以便使用Spring組件來(lái)代替相應的J2EE組件。我們把MedRec原始版本中的功能完全復制到了基于Spring的MedRec版本(MedRec-Spring)中。

  引入Spring的IoC是MedRec-Spring中最重要的變化。IoC機制功能強大,通過(guò)一個(gè)容器把依賴(lài)性注入到配置好的組件中而應用。IoC解除了應用程序代碼和其配置之間的耦合。例如,對象與它們的依賴(lài)性沒(méi)有關(guān)聯(lián),所以它們可以專(zhuān)注于其職責。對于MedRec-Spring,企業(yè)資源(比如DataSourc、JMS服務(wù)、MBean連接和對等服務(wù))在運行時(shí)被提供給MedRec-Spring的對象。此外,通過(guò)遷移資源配置和在已編譯代碼之外進(jìn)行引用,在從特定于開(kāi)發(fā)的資源轉移到位于中間的生產(chǎn)資源和環(huán)境時(shí),應用程序更加易于管理。

  我們發(fā)現,要正確使用IoC,應用程序代碼需要遵守更加嚴格的Java編程規則——特別是在編寫(xiě)接口的代碼時(shí)。接口比其他東西更能促進(jìn)更好的協(xié)作,因為可以減輕依賴(lài)性,而且實(shí)現的變化被隔離開(kāi)來(lái)。從IoC的角度看,接口支持依賴(lài)注入的可插入本性。為了利用IoC,我們對MedRec-Spring進(jìn)行了重構,這樣就可以基于接口對業(yè)務(wù)對象進(jìn)行編碼。

  在MedRec-Spring中,無(wú)狀態(tài)會(huì )話(huà)EJB被無(wú)格式普通Java對象(Plain Old Java Object,POJO)所代替。無(wú)狀態(tài)會(huì )話(huà)EJB的長(cháng)處在于它們的遠程控制和事務(wù)管理功能。因為MedRec-Spring通過(guò)Spring的HTTP Invoker架構公開(kāi)了服務(wù)bean,所以它能夠滿(mǎn)足遠程控制的要求。事務(wù)管理是由Spring的事務(wù)抽象層提供的。MedRec-Spring的事務(wù)管理精確地映射了MedRec的事務(wù)管理,因為Spring事務(wù)管理器被配置為把責任委托給WebLogic Server的JTA事務(wù)管理器。

  MedRec-Spring包含了原始MedRec的大部分消息收發(fā)功能。我們使用Spring的JMS包來(lái)簡(jiǎn)化一些一般性的任務(wù),比如連接工廠(chǎng)和目的站查找。Spring提供了一個(gè)代表消息收發(fā)目的站的對象,而不是通過(guò)編程獲得隊列句柄。和所有的Spring bean一樣,這些對象表示(JNDI名稱(chēng)、連接工廠(chǎng)關(guān)聯(lián),等等)是在已編譯代碼之外進(jìn)行配置的。

  MedRec-Spring包含應用程序管理特性。這些特性對WebLogic Server的域配置和它的運行時(shí)域有影響。MedRec-Spring必須按照WebLogic Server的MBean Server行事,而Spring提供了連接管理來(lái)簡(jiǎn)化MBean Server的可訪(fǎng)問(wèn)性。

  最后,MedRec-Spring使用Web服務(wù)導出它的服務(wù)。Spring提供一個(gè)JAX-RPC工廠(chǎng),該工廠(chǎng)為Web服務(wù)生成一個(gè)代理。類(lèi)似于其他的Spring bean,工廠(chǎng)bean也是在已編譯代碼之外進(jìn)行配置的,這使得應用程序更加靈活。

圖2顯示了基于Spring的MedRec版本的高層架構圖。


圖2. 基于Spring的MedRec版本的高層架構圖

WebLogic Server上的Spring最佳實(shí)踐

  比較了J2EE和Spring環(huán)境中的MedRec架構之后,現在,我們要介紹一些在實(shí)現MedRec-Spring應用程序的過(guò)程中,我們所發(fā)現的一些寶貴經(jīng)驗:

  • 使用延遲初始化。為了實(shí)現IoC容器,Spring加載了一個(gè)application context文件,并創(chuàng )建和緩存了每個(gè)已配置bean的實(shí)例。Spring bean引用的每項資源都必須可以實(shí)例化或查找,了解這一點(diǎn)很重要。例如,Spring的JMX支持提供到WebLogic Server的MBean服務(wù)器的連接。因為并非所有的MBean服務(wù)器都是在部署期間激活的,所以用戶(hù)應該在部署資源時(shí),一啟動(dòng)就使用Spring的延遲初始化和查找服務(wù)。
  • 基于功能分離出Spring配置。這允許應用程序組件只加載那些與它們的工作職責有關(guān)的上下文。在實(shí)踐上還允許測試人員修改應用程序的行為,具體方法是使用特定于測試環(huán)境的上下文來(lái)替換應用程序上下文——例如DataSource配置。
  • 通過(guò)JndiObjectFactoryBean封裝JDBC DataSource連接入池。然后,需要數據庫交互的bean可以引用這個(gè)bean,以便利用WebLogic Server的DataSource入池功能。
  • 對會(huì )話(huà)和消息驅動(dòng)Enterprise JavaBean使用Spring的org.springframework.ejb.support。Spring的org.springframework.ejb.support提供Enterprise JavaBeans (EJB)可以對其進(jìn)行擴展的抽象類(lèi)。通過(guò)把EJB生命周期方法的標準實(shí)現包括進(jìn)來(lái),這些抽象EJB類(lèi)可以輔助開(kāi)發(fā)工作。更重要的是,這些類(lèi)提供了加載Spring的應用程序上下文的機制,包括跨多個(gè)EJB和客戶(hù)端共享上下文,因此減少了EJB初始化期間的復制工作和負載。
  • 利用熱部署和WebLogic Server的拆分開(kāi)發(fā)目錄環(huán)境。這極大地改善了集成測試期間的Spring開(kāi)發(fā)體驗。熱部署允許在不重新啟動(dòng)服務(wù)器的情況下重新加載應用程序。拆分目錄開(kāi)發(fā)環(huán)境通過(guò)盡量減少不必要的文件復制,支持更快的開(kāi)發(fā)和部署。拆分開(kāi)發(fā)目錄Ant任務(wù)可以幫助用戶(hù)快速重新編譯和重新部署,無(wú)需首先生成可部署的存檔文件或展開(kāi)的存檔目錄。
  • 把Spring庫打包為應用程序庫、可選擴展或服務(wù)器擴展。這允許幾個(gè)Spring應用程序共享Spring Framework,從而減少了應用程序所占用的內存。除了降低內存占用量外,這還提高了部署次數。

Spring on WebLogic Server工具包

  為了幫助客戶(hù)使部署在WebLogic Server上的Spring應用程序發(fā)揮最大的功效,我們已經(jīng)發(fā)布了一個(gè)經(jīng)過(guò)認證的BEA發(fā)行版,其中包括Spring 1.2.5、MedRec on Spring應用程序以及其他的一些很不錯的工具。您可以從BEA的發(fā)行版Web站點(diǎn)上免費下載這個(gè)工具包。

企業(yè)Spring

  Spring Framework的非侵入性IoC開(kāi)發(fā)模型不但依賴(lài)于對J2EE應用服務(wù)器可用的特性集,而且旨在補充該特性集。事實(shí)上,在苛刻的生產(chǎn)環(huán)境中,底層應用服務(wù)器基礎架構所提供的服務(wù)質(zhì)量對于Spring應用程序的可靠性、可用性和性能非常重要。WebLogic Server 9.0所提供的企業(yè)級特性可以增強Spring應用程序的所有方面。在本節中,我們將詳細討論這些特性,以及如何在Spring應用程序中利用它們。

集群管理和部署

  一個(gè)WebLogic Server集群包括多個(gè)WebLogic Server服務(wù)器實(shí)例,這些服務(wù)器實(shí)例同時(shí)運行并一起工作,從而提高了可伸縮性和可靠性。對客戶(hù)端來(lái)說(shuō),集群就像單個(gè)的WebLogic Server實(shí)例一樣。構成集群的服務(wù)器實(shí)例既可以運行在同一臺機器上,也可以位于不同的機器上??梢酝ㄟ^(guò)在現有的機器上向集群添加另外的服務(wù)器實(shí)例,或者向集群添加機器以駐留增加的服務(wù)器實(shí)例,來(lái)提高集群的容量。WebLogic Server集群為Spring應用程序提供了一個(gè)企業(yè)級的部署平臺,雖然其他的技術(shù)產(chǎn)品也支持類(lèi)似的特性,但是它們不具有WebLogic Server所提供的豐富性和易用性。參見(jiàn)Understanding Cluster Configuration and Application Deployment,其中有對WebLogic Server集群的配置和管理的全面討論。
Spring應用程序通常都被打包為web應用程序,這種情況下,要利用WebLogic Server集群就無(wú)需修改應用程序。只要把應用程序部署到集群中的服務(wù)器上,就可以獲得增強的可伸縮性和可用性。

Spring會(huì )話(huà)復制

  Spring Web應用程序習慣在HTTP會(huì )話(huà)中保存信息,比如訂單ID和用戶(hù)信息。為了支持集群中servlet和JSP的自動(dòng)復制和故障恢復,WebLogic Server支持幾種用于保持HTTP會(huì )話(huà)狀態(tài)的機制。只要為應用程序提供正確的weblogic.xml部署描述符,Spring Web應用程序就可以非侵入性地使用這些機制。參見(jiàn)配置各類(lèi)會(huì )話(huà)持久性,可以獲得有關(guān)WebLogic Server 9.0的更多可用信息。

集群化的Spring遠程控制

  Spring提供功能強大的遠程控制支持,允許用戶(hù)輕松導出和使用遠程服務(wù),同時(shí)仍然可以利用基于POJO的一致編程模型。通過(guò)一個(gè)接合到適當的Spring bean的RMI接口,Vanilla Spring支持代理POJO調用。然而,這種支持僅限于JRMP(Sun的RMI實(shí)現),或者通過(guò)JndiRmiProxyFactoryBean使用特定的遠程接口。借助于Spring 1.2.5 on WebLogic Server 9.0認證,我們已經(jīng)擴展了JndiRmiProxyFactoryBean和相關(guān)的服務(wù)導出程序——這樣它就能支持任何J2EE RMI實(shí)現的POJO代理,包括RMI-IIOP和T3。這方面的支持還包括一個(gè)WebLogic RMI部署描述符,它支持代理RMI接口上的集群化,所以POJO調用可以跨一個(gè)WebLogic Server集群進(jìn)行負載均衡:

<bean id="proProxy"class="org.springframework.remoting.rmi.JndiRmiProxyFactoryBean"><property name="jndiName" value="t3://:/order"/></property><property name="jndiEnvironment"><props><prop key="java.naming.factory.url.pkgs">weblogic.jndi.factories</prop></props></property><property name="serviceInterface"value="org.springframework.samples.jpetstore.domain.logic.OrderService"/></bean>服務(wù)導出程序如下:<bean id="order-pro" class="org.springframework.remoting.rmi.JndiRmiServiceExporter"><property name="service" ref="petStore"/><property name="serviceInterface"value="org.springframework.samples.jpetstore.domain.logic.OrderService"/><property name="jndiName" value="order"/></bean>

  集群化的描述符是自動(dòng)包含在內的,只需要以適當方式配置集群和將Spring應用程序部署到所有集群成員中。參見(jiàn)故障恢復支持,可以獲得更多相關(guān)信息。

對Spring組件的控制臺支持

  Spring on WebLogic Server工具包中包含一個(gè)WebLogic Server控制臺擴展,它顯示了定義在應用程序中的Spring bean、屬性和操作。它構建在WebLogic控制臺擴展門(mén)戶(hù)框架之上,該框架可以變換WebLogic Administration控制臺的外觀(guān)、功能和布局,而無(wú)需修改服務(wù)器或控制臺代碼。將控制臺擴展復制到yourdomain/console-ext目錄下,則重新啟動(dòng)服務(wù)器時(shí)就部署了控制臺擴展。想要了解有關(guān)部署控制臺擴展的更多信息,可以參考Spring on WebLogic Server工具包。

  自動(dòng)為不是MBean的Spring bean(大多數Spring bean)創(chuàng )建(JMX)管理接口,然后在applicationContext.xml中配置一個(gè)MbeanExporter,并指定哪些bean要通過(guò)匯編程序公開(kāi),這樣控制臺擴展就運行了。這項特性是Spring和WebLogic Server進(jìn)行無(wú)縫和非侵入性合作的一個(gè)良好例證。要使應用程序支持JMX,只需修改應用程序上下文部署描述符。要使控制臺支持Spring,只需將一個(gè)簡(jiǎn)單的jar部署到現有的域即可。

Web服務(wù)支持

  Spring遠程控制功能的另一個(gè)方面是它對RPC風(fēng)格Web服務(wù)的支持。WebLogic Server提供基于A(yíng)nt的工具,用于基于Web服務(wù)的WSDL描述生成JAX-RPC存根。Web服務(wù)客戶(hù)端使用這些生成的存根來(lái)獲取代表服務(wù)器端操作的一個(gè)遠程接口。Spring提供了一個(gè)JaxRpcPortProxyFactoryBean來(lái)簡(jiǎn)化了這個(gè)過(guò)程。我們發(fā)現,在WebLogic Server環(huán)境中配置JaxRpcPortProxyFactoryBean有些棘手,所以為了節約客戶(hù)的時(shí)間,我們給出下面這個(gè)代碼片斷,演示如何為一個(gè)包含復雜類(lèi)型的Document Literal包裝的Web服務(wù)配置代理生成。

  大部分屬性都是自解釋的。其中有一些屬性比較有名:

  • serviceInterface是Spring的setter注入的副產(chǎn)品。這個(gè)類(lèi)將表示W(wǎng)eb服務(wù)操作。
  • customProperties屬性支持定制的WebLogic Server Web服務(wù)存根屬性。
  • jaxRpcService值被設置為WebLogic Server生成的JAX-RPC實(shí)現服務(wù)。JAX-RPC服務(wù)負責驗證Web服務(wù)和加載復雜的類(lèi)型映射。為了實(shí)現后者,必須把WebLogic Server的JAX-RPC服務(wù)實(shí)現配置為Spring bean。這確保了JAX-RPC服務(wù)構造函數的執行,這也是加載類(lèi)型映射文件的地方。

  把JaxRpcPortProxyFactoryBean上的lookupServiceOnStartup設置為false,可以關(guān)閉啟動(dòng)期間的JAX-RPC服務(wù)查找。這樣,查找將在首次訪(fǎng)問(wèn)時(shí)進(jìn)行。這對于與WebLogic Server的可靠請求/響應Web服務(wù)通信的客戶(hù)端來(lái)說(shuō)是必需的,而且此處的客戶(hù)端也必須是一個(gè)Web服務(wù)。通常在這些情況下,始發(fā)客戶(hù)端是與Web服務(wù)客戶(hù)端一起部署的。因為直到應用程序部署完成才會(huì )激活Web服務(wù),所以客戶(hù)端Web服務(wù)對于Spring的上下文加載是不可用的。

<!-- reliable asynchronous Web service for sending newmedical records to medrec --><bean id="reliableClientWebServicesPortType"class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean"lazy-init="true"><property name="wsdlDocumentUrl"value="http://:/ws_phys/PhysicianWebServices?WSDL"/><property name="portName" value="PhysicianWebServicesPort"/><property name="jaxRpcService"><ref bean="generatedReliableService"/></property><property name="serviceInterface"value="com.bea.physician.webservices.client.PhysicianWebServicesPortType"/><property name="username" value="medrec_webservice_user"/><property name="password" value="weblogic"/><property name="customProperties"><props><prop key="weblogic.wsee.complex">true</prop></props></property></bean><!-- allows the jaxRpcService class to execute itsconstructor which loads in type mappings --><bean id="generatedReliableService"class="com.bea.physician.webservices.client.PhysicianWebServices_Impl"></bean>

  參見(jiàn)WebLogic Server的調用Web服務(wù)概覽通過(guò)Spring使用遠程控制和Web服務(wù),可以獲得進(jìn)一步的信息。

安全性

  WebLogic Server安全系統支持和擴展了J2EE安全性,同時(shí)提供一組豐富的安全提供程序,您可以對它們進(jìn)行定制,然后使用它們來(lái)處理不同的安全性數據庫或安全性策略。除了使用標準的J2EE安全性之外,應用程序程序員還可以使用很多專(zhuān)有擴展,這些擴展使應用程序可以與安全系統緊密集成。WebLogic Server帶有幾個(gè)安全提供程序,例如,可以選擇包含大部分流行LDAP服務(wù)器的身份驗證數據庫、Active Directory、本地Windows和一個(gè)內置的身份驗證解決方案??梢允褂枚ㄖ频奶峁┏绦驅戎玫奶峁┏绦蜻M(jìn)行擴充,從而幾乎可以與任意身份驗證數據庫、授權機制和憑證映射服務(wù)相集成。因為部署為webapp的Spring應用程序使用的是J2EE安全性,所以無(wú)需修改應用程序就可以獲得WebLogic Server的安全性?xún)?yōu)點(diǎn)。

  經(jīng)驗豐富的Spring用戶(hù)還會(huì )熟悉Acegi——Spring自身的安全框架。目前,可以在應用程序中使用Acegi、WebLogic Server安全性,或同時(shí)使用二者,因為它們是相互獨立的。稍后我們將講述與此相關(guān)的更多信息。

分布式事務(wù)

  Spring為事務(wù)管理提供了基礎架構。除了對各家數據庫供應商提供支持之外,Spring還通過(guò)一家J2EE供應商的JTA實(shí)現支持分布式事務(wù)。通過(guò)WebLogicJtaTransactionManager,可以把Spring的JTA管理器配置為與WebLogic Server的JTA實(shí)現一起工作。

  WebLogicJtaTransactionManager把責任直接委派給WebLogic Server的Java Transaction API。WebLogic Server的JTA TransactionManager接口可以通過(guò)JNDI為客戶(hù)端和bean提供者所用,而由Spring來(lái)管理這種交互。事務(wù)管理器還支持事務(wù)的作用域;事務(wù)可以作用于集群和域內部或二者之間。

  WebLogicJtaTransactionManager最強大的特性是管理分布式事務(wù)的能力和用于企業(yè)應用程序的兩階段提交協(xié)議。通過(guò)采用WebLogicJtaTransactionManager,應用程序可以通過(guò)WebLogic Administration Console來(lái)進(jìn)行事務(wù)監控。WebLogicJtaTransactionManager還支持按數據庫(per-database)隔離級別,這種級別支持復雜的事務(wù)配置。

<!-- spring‘s transaction manager delegates to WebLogicServer‘s transaction manager --><bean id="transactionManager"   class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"><property name="transactionManagerName"value="javax.transaction.TransactionManager"/></bean><!-- base transaction proxy for which medrec spring beans inherit--><bean id="baseTransactionProxy"   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"><property name="transactionManager" ref="transactionManager"/><property name="transactionAttributes"><props><prop key="activate*">PROPAGATION_REQUIRED</prop><prop key="create*">PROPAGATION_REQUIRED</prop><prop key="compose*">PROPAGATION_REQUIRED</prop><prop key="deny*">PROPAGATION_REQUIRED</prop><prop key="getRecord*">PROPAGATION_REQUIRED,readOnly</prop><prop key="getPatient*">PROPAGATION_REQUIRED,readOnly</prop><prop key="getLog*">PROPAGATION_NOT_SUPPORTED</prop><prop key="process*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="send*">PROPAGATION_REQUIRED</prop></props></property>< /bean><!-- single point of service for all medrec clients --><bean id="medRecClientServiceFacade"parent="baseTransactionProxy"><property name="target"><beanclass="com.bea.medrec.service.MedRecClientServiceFacadeImpl"><property name="adminService"><ref bean="adminService"/></property><property name="patientService"><ref bean="patientService"/></property><property name="recordService"><ref bean="recordService"/></property><property name="recordXmlProcessorService"><ref bean="recordXmlProcessorService"/></property></bean></property></bean>

  想要了解更多信息,請參見(jiàn)Overview of Transactions in WebLogic Server Applications在Spring中實(shí)現事務(wù)掛起。

Java Management Extension

  Java Management Extension(Java管理擴展,JMX)是用于監控和管理Java應用程序的規范。它使一般的管理系統能夠監控應用程序,當應用程序需要注意時(shí)發(fā)出通知,并修改應用程序狀態(tài)來(lái)補救問(wèn)題。Spring提供廣泛的JMX支持,包括通過(guò)Spring的MBeanServerConnectionFactoryBean公開(kāi)WebLogic Server的MBeanServer的能力。MBeanServerConnectionFactoryBean是一個(gè)使用方便的工廠(chǎng),它附帶了一個(gè)MBeanServerConnection。在應用程序部署期間,連接被建立并緩存,以便稍后由引用bean對其進(jìn)行操作。

  可以配置MBeanServerConnectionFactoryBean,使其返回WebLogic Server的Runtime MBean Server,它會(huì )公開(kāi)特定WebLogic Server實(shí)例的監控、運行時(shí)控制和活動(dòng)配置。這包括對WebLogic Server的Diagnostics Framework的訪(fǎng)問(wèn)。此外,Runtime MBean還為當前服務(wù)器提供對運行時(shí)MBean和活動(dòng)配置MBean的訪(fǎng)問(wèn)。]

  還可以配置MBeanServerConnectionFactoryBean,獲得一個(gè)到WebLogic Server的Domain Runtime MBean Server的連接。Domain Runtime MBean Server提供對域范圍內服務(wù)的訪(fǎng)問(wèn),比如應用程序部署、JMS服務(wù)器和JDBC數據源。它還是訪(fǎng)問(wèn)域中所有服務(wù)器的所有運行時(shí)MBean和活動(dòng)配置MBean層次結構的單點(diǎn)。這個(gè)MBean Server還用作訪(fǎng)問(wèn)位于托管服務(wù)器上的MBean的單點(diǎn)。

  此外,可以配置MBeanServerConnectionFactoryBean,獲得一個(gè)到WebLogic Server的Edit MBean Server的連接。Edit MBean Server為管理當前WebLogic Server域配置提供入口點(diǎn)。

  注意,WebLogic Server的Domain Runtime MBean Server在部署期間不是活動(dòng)的。因此,需要使用延遲初始化來(lái)配置bean,它會(huì )在調用bean時(shí)獲取該bean。
下面給出了一個(gè)使用WebLogic的MBean Server配置Spring的MBeanServerConnectionFactoryBean的例子:

<!-- expose WebLogic Server‘s runtimembeanserver connection --><bean id="runtimeMbeanServerConnection"class="org.springframework.jmx.support.MBeanServerConnectionFactoryBean"><property name="serviceUrl"      value="service:jmx:t3://:/jndi/weblogic.management.mbeanservers.runtime"/><property name="environment"><props><prop key="java.naming.security.principle"></prop><prop key="java.naming.security.credentials"></prop><prop key="jmx.remote.protocol.provider.pkgs">weblogic.management.remote</prop></props></property></bean>

  想要了解更多信息,請參見(jiàn)Understanding WebLogic Server MBeans 和Spring的 JMX支持。

支持

  從WebLogic Server 9.0和Spring 1.2.5開(kāi)始,BEA為Spring Framework on WebLogic Server提供了可用的支持和認證。這種支持不僅僅是對WebLogic Server上的Spring庫進(jìn)行健全的測試,而且還涉及到BEA與Interface 21——Spring Framework的創(chuàng )建者和維護者之間的共同努力和協(xié)作。我們不僅測試了上述的所有Spring 1.2.5的特性和配置,一些新特性還是直接作為BEA和Interface 21的協(xié)作成果引入Spring 1.2.5中的。有一些特性需要對WebLogic Server本身進(jìn)行調整,將來(lái)可以以Spring組合補丁的形式得到。

下載

  Spring Open Source Framework Support 1.2.5 download包括Spring 1.2.5(已在WebLogic Server 9.0上得到認證)、Spring JMX控制臺擴展以及使用Spring Framework重新編寫(xiě)的WebLogic Medical Records示例應用程序。

未來(lái)的工作

  以后,我們計劃提供WebLogic Server與Spring Framework的更深層次的集成。我們已經(jīng)有了一些想法,其中比較有意思的是:

  • Spring部署單元:Spring應用程序通常被部署為webapp,但是為Spring應用程序提供一個(gè)專(zhuān)門(mén)的部署單元是可能的。
  • Acegi和WebLogic Server安全性集成:Acegi是Spring的安全框架,我們計劃將它與WebLogic Server的企業(yè)級安全框架進(jìn)行集成。
  • 使用EJB 3.0實(shí)現持久性:因為一般情況下,Spring操縱的是POJO,您很可能需要某種對象-關(guān)系映射技術(shù),以便持久化Spring bean。隨著(zhù)EJB 3.0的出現,WebLogic Server將為實(shí)現這個(gè)目標提供一個(gè)標準化的機制。

結束語(yǔ)

  我們已經(jīng)花了一些時(shí)間來(lái)考察Spring、WebLogic Server以及這兩種技術(shù)的集成。正如我們所說(shuō)的那樣,Spring可以提高開(kāi)發(fā)人員的效率,而WebLogic Server可以提高應用程序的服務(wù)質(zhì)量。這兩種技術(shù)都是高度非侵入性的,因此用戶(hù)可以把精力集中在開(kāi)發(fā)應用程序的業(yè)務(wù)功能之上,而不是糾纏于特定于技術(shù)的API的錯綜復雜性。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
結合SPRING 2.0使用JAVA PERSISTENCE API
針對開(kāi)發(fā)人員的WebLogic Server應用管理,第4部分--使用JMX編寫(xiě)自定義Java應用程序
《J2EE應用與BEA WebLogic Server》
WebLogic Server 的最佳調整建議
CSDN 文檔中心:針對開(kāi)發(fā)人員的WebLogic Server應用管理,第 2 部分
真正的java學(xué)習從入門(mén)到精通
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久