BEA WebLogic Server 9.0是對Sun Microsystems的J2EE 1.4平臺的領先實現。然而,WebLogic Server的核心價值主張則體現在J2EE規范中沒有的領域——增強的管理、易用性、高可用性、可伸縮性、可靠性和性能。
摘要
實際上,WebLogic Server的價值并不與任何特定的編程模型關聯,所以很自然地,它也適用于新出現的非J2EE編程模型。近年來出現的最激動人心的事物莫過于基于反向控制(Inversion of Control,IoC)的模型,而Spring Framework正是此類模型的領先實現。本文介紹了Spring Framework、WebLogic Server以及二者的集成的一些特性。我們將看到,整體大于部分之和。
在前兩節中,我們將概覽Spring和WebLogic Server,并介紹它們各自的特性。熟悉Spring Framework的讀者可以跳過第一節。因為本文的主要目的是介紹兩種技術的集成,所以本文余下的部分都會集中在這一點上。為了提供一個上下文,我們首先剖析了MedRec——與WebLogic Server一起發行的一個示例應用程序——首先是以原始的J2EE形式,然后再使用Spring Framework重構。此后,我們將圍繞特定的集成點進行詳細的闡述。如果您打算在WebLogic Server上開發Spring應用程序,那么您肯定能從本文中找到對您有所幫助的細節。如果您只是想進行大概的了解,那么先閱讀標題,以后再了解其具體內容。最后,我們展望了一些正在考慮的未來開發工作。
在本節中,我們將簡要概括Spring Framework的一些特性。
Spring 是一個分層的Java/J2EE應用框架,它基于Rod Johnson所著的《Expert One-on-One J2EE Design and Development》(Wrox,2002年)一書中所公布的代碼。Spring之所以存在,是因為我們相信,J2EE應該更加易用,而且我們可以使用更簡單的方法進行J2EE開發,同時又不犧牲平臺的性能。
Spring支持靈活的J2EE開發,并允許使用POJO開發J2EE應用程序。
Spring在其核心部分提供了一個易于配置的、XML驅動的反向控制(IoC)容器。IoC基于所謂的“好萊塢原則”——不要給我們打電話,我們會找你。在這種方案中,應用程序中Java對象之間的關系是由容器注入的,而不是通過直接編程實現的。注入分兩種形式——構造函數注入和setter注入,這取決于容器是通過其構造函數還是通過mutator方法把信息注入一個已創建的Java對象。
在Spring中,注入的屬性——或到其他bean的引用——是通過一個XML文件進行配置的,這使得配置變得非常直接。Spring與一個AOP框架耦合在一起,而該框架支持非侵入性地添加諸如事務和安全這樣的屬性,這意味著開發人員可以集中精力創建用于解決業務問題的解決方案,而不會為J2EE開發或配置的復雜性而頭痛。因為該容器是非侵入性的,所以您不必擔心業務代碼會被特定于供應商(此處也包括Spring)的工件所污染。
正如我們所提到的那樣,Spring提供了一個輕量級的容器,用于提供集中式、自動化的配置和編寫應用程序對象。該容器是非侵入性的,能夠以一種一致而透明的方式,通過IoC把一組松散耦合的組件(POJO)組裝為一個復雜的系統。因為該容器允許首先獨立地開發和測試各軟件組件,然后在任意環境(J2SE或J2EE)中進行擴展部署,所以它具有靈活性和高利用率,并提高了應用程序的可測試性和可伸縮性。此外,Spring還提供了大量其他的對開發人員友好的特性,如下:
您可以在任何J2EE服務器中使用Spring的所有功能,也可以在非托管環境中使用其中的大部分功能。Spring的一個重心是支持可重用的業務和不依賴于特定的J2EE服務的數據訪問對象。這些對象可以不費事地跨J2EE環境(Web或EJB)、獨立應用程序和測試環境進行重用。
Spring的分層架構提供了很多靈活性。它所有的功能都構建在較低的層次上。例如,您可以在不使用MVC框架或沒有AOP支持的情況下使用JavaBean配置管理。但是,如果您要使用Web MVC框架或AOP支持,您會發現它們構建在配置框架之上,所以您可以馬上用上有關它的知識。
在本節中,我們將簡要概括BEA WebLogic Server的特性,重點強調它所提供的底層基礎架構,而不是編程模型。
WebLogic Server是一個可伸縮的企業級的J2EE應用服務器。WebLogic Server基礎架構支持多種分布式應用程序的部署,是構建任何種類的應用程序的理想基礎。
WebLogic Server實現了Sun Microsystems的J2EE 1.4規范,提供了一組標準的API,用于創建可以訪問多種服務(如:數據庫、消息傳遞服務)的分布式Java應用程序和到外部企業系統的連接。終端用戶客戶使用Web瀏覽器客戶端或Java客戶端訪問這些應用程序。因為J2EE已經為大家所熟悉,這里我們不再詳細討論。更多信息,請參見WebLogic Server文檔中關于編程模型的部分。
除了實現J2EE之外,WebLogic Server還使企業能夠在一個健壯、安全、高度可用和可伸縮的環境中部署任務關鍵型應用程序。這些特性允許企業配置WebLogic Server實例集群,以便分布負載,并在發生硬件或其他故障時提供額外的容量。新的診斷工具允許系統管理員監控和調優已部署應用程序和WebLogic Server環境本身的性能。您還可以配置WebLogic Server以自動監控和調整應用程序吞吐量,無需人工干預。廣泛的安全特性保護了對服務的訪問,保證了企業數據的安全,并阻止了惡意攻擊。
和其他許多BEA產品一樣,WebLogic Server就像冰山,浮在水上的不過是很小一部分而已。具體來說,WebLogic Server提供了大量特性和工具來支持高度可用和可伸縮的應用程序的部署。
現在,讓我們來看一看這兩個系統之間的協作。
為比較J2EE和Spring開發方法的不同,我們使用Spring Framework重新編寫了MedRec示例應用程序。在接下來的一節中,我們將簡要地概覽MedRec的一般架構,然后依次看一看它的J2EE和Spring形式。
Avitek Medical Records(或MedRec)是一個WebLogic Server示例應用程序套件,它簡明地演示了J2EE平臺的各個方面。MedRec的設計目的是用作對各個層次的J2EE開發人員進行培訓的工具。它展示了如何使用每個J2EE組件,并說明了組件交互和客戶端開發的設計模式。MedRec還闡明了使用WebLogic Server開發和部署應用程序的最佳實踐。
MedRec背后的現實框架是一個患者、醫生和管理人員的框架,該框架使用各種不同的客戶端來管理患者數據。對于患者,MedRec為用戶提供了一個基于Web的應用程序,用于查看他們的醫療記錄和維護檔案文件。對于管理人員,MedRec提供了一個基于Web的應用程序,用于管理傳入的注冊、醫療記錄上傳和一般性的應用程序監控。MedRec還包含用于與獨立醫療機構接合的資源。為了演示這種通信,MedRec包含了一個醫生應用程序,用于請求和提供數據給MedRec的系統。
MedRec的J2EE和WebLogic Server版本是按照傳統的3層架構模型來設計和實現的,在該模型中,客戶端、服務器和數據存儲器都是相互獨立的:
針對MedRec的患者管理應用程序,我們開發了一些Web應用程序(webapp),用于把服務公開給它們各自的用戶。webapp符合模型-視圖-控制器(Model-View-Controller)模式,Java Server Page呈現視圖給用戶,模型封裝要呈現給用戶和從用戶處捕捉而來的數據,而控制器機制則管理除與服務層的交互之外的組件交互。MedRec采用Jakarta Struts來實現該模式。
服務層提供服務給發出請求的客戶端,并管理與后端應用程序和資源的交互。MedRec的服務層采用Session Facade模式來封裝業務邏輯和業務數據。Session Facade通過提供一個到分布式服務的接口,簡化了應用程序的復雜性。在MedRec中,Session Facade的首要責任是提供數據吞吐量。在MedRec的J2EE和WebLogic Server版本中,Session Facade被開發為無狀態的會話Enterprise JavaBean,而數據則是由實體Enterprise JavaBean來管理的。
為了與外部實體相連接,MedRec通過Web服務公開應用程序功能,這允許不同系統之間使用一系列開放標準進行動態交互。通過使用Web服務公開服務,MedRec能夠為獨立的各方提供數據,或接受來自各方的數據,從而實現了集中式醫療記錄管理的首要目標。
圖1說明了MedRec的J2EE與WebLogic Server版本的高層架構。
圖1. J2EE版MedRec架構示意圖
為了使Spring能夠利用WebLogic Server的企業級特性,我們重新設計了MedRec的架構,以便使用Spring組件來代替相應的J2EE組件。我們把MedRec原始版本中的功能完全復制到了基于Spring的MedRec版本(MedRec-Spring)中。
引入Spring的IoC是MedRec-Spring中最重要的變化。IoC機制功能強大,通過一個容器把依賴性注入到配置好的組件中而應用。IoC解除了應用程序代碼和其配置之間的耦合。例如,對象與它們的依賴性沒有關聯,所以它們可以專注于其職責。對于MedRec-Spring,企業資源(比如DataSourc、JMS服務、MBean連接和對等服務)在運行時被提供給MedRec-Spring的對象。此外,通過遷移資源配置和在已編譯代碼之外進行引用,在從特定于開發的資源轉移到位于中間的生產資源和環境時,應用程序更加易于管理。
我們發現,要正確使用IoC,應用程序代碼需要遵守更加嚴格的Java編程規則——特別是在編寫接口的代碼時。接口比其他東西更能促進更好的協作,因為可以減輕依賴性,而且實現的變化被隔離開來。從IoC的角度看,接口支持依賴注入的可插入本性。為了利用IoC,我們對MedRec-Spring進行了重構,這樣就可以基于接口對業務對象進行編碼。
在MedRec-Spring中,無狀態會話EJB被無格式普通Java對象(Plain Old Java Object,POJO)所代替。無狀態會話EJB的長處在于它們的遠程控制和事務管理功能。因為MedRec-Spring通過Spring的HTTP Invoker架構公開了服務bean,所以它能夠滿足遠程控制的要求。事務管理是由Spring的事務抽象層提供的。MedRec-Spring的事務管理精確地映射了MedRec的事務管理,因為Spring事務管理器被配置為把責任委托給WebLogic Server的JTA事務管理器。
MedRec-Spring包含了原始MedRec的大部分消息收發功能。我們使用Spring的JMS包來簡化一些一般性的任務,比如連接工廠和目的站查找。Spring提供了一個代表消息收發目的站的對象,而不是通過編程獲得隊列句柄。和所有的Spring bean一樣,這些對象表示(JNDI名稱、連接工廠關聯,等等)是在已編譯代碼之外進行配置的。
MedRec-Spring包含應用程序管理特性。這些特性對WebLogic Server的域配置和它的運行時域有影響。MedRec-Spring必須按照WebLogic Server的MBean Server行事,而Spring提供了連接管理來簡化MBean Server的可訪問性。
最后,MedRec-Spring使用Web服務導出它的服務。Spring提供一個JAX-RPC工廠,該工廠為Web服務生成一個代理。類似于其他的Spring bean,工廠bean也是在已編譯代碼之外進行配置的,這使得應用程序更加靈活。
圖2顯示了基于Spring的MedRec版本的高層架構圖。
圖2. 基于Spring的MedRec版本的高層架構圖
比較了J2EE和Spring環境中的MedRec架構之后,現在,我們要介紹一些在實現MedRec-Spring應用程序的過程中,我們所發現的一些寶貴經驗:
為了幫助客戶使部署在WebLogic Server上的Spring應用程序發揮最大的功效,我們已經發布了一個經過認證的BEA發行版,其中包括Spring 1.2.5、MedRec on Spring應用程序以及其他的一些很不錯的工具。您可以從BEA的發行版Web站點上免費下載這個工具包。
Spring Framework的非侵入性IoC開發模型不但依賴于對J2EE應用服務器可用的特性集,而且旨在補充該特性集。事實上,在苛刻的生產環境中,底層應用服務器基礎架構所提供的服務質量對于Spring應用程序的可靠性、可用性和性能非常重要。WebLogic Server 9.0所提供的企業級特性可以增強Spring應用程序的所有方面。在本節中,我們將詳細討論這些特性,以及如何在Spring應用程序中利用它們。
一個WebLogic Server集群包括多個WebLogic Server服務器實例,這些服務器實例同時運行并一起工作,從而提高了可伸縮性和可靠性。對客戶端來說,集群就像單個的WebLogic Server實例一樣。構成集群的服務器實例既可以運行在同一臺機器上,也可以位于不同的機器上??梢酝ㄟ^在現有的機器上向集群添加另外的服務器實例,或者向集群添加機器以駐留增加的服務器實例,來提高集群的容量。WebLogic Server集群為Spring應用程序提供了一個企業級的部署平臺,雖然其他的技術產品也支持類似的特性,但是它們不具有WebLogic Server所提供的豐富性和易用性。參見Understanding Cluster Configuration and Application Deployment,其中有對WebLogic Server集群的配置和管理的全面討論。
Spring應用程序通常都被打包為web應用程序,這種情況下,要利用WebLogic Server集群就無需修改應用程序。只要把應用程序部署到集群中的服務器上,就可以獲得增強的可伸縮性和可用性。
Spring Web應用程序習慣在HTTP會話中保存信息,比如訂單ID和用戶信息。為了支持集群中servlet和JSP的自動復制和故障恢復,WebLogic Server支持幾種用于保持HTTP會話狀態的機制。只要為應用程序提供正確的weblogic.xml部署描述符,Spring Web應用程序就可以非侵入性地使用這些機制。參見配置各類會話持久性,可以獲得有關WebLogic Server 9.0的更多可用信息。
Spring提供功能強大的遠程控制支持,允許用戶輕松導出和使用遠程服務,同時仍然可以利用基于POJO的一致編程模型。通過一個接合到適當的Spring bean的RMI接口,Vanilla Spring支持代理POJO調用。然而,這種支持僅限于JRMP(Sun的RMI實現),或者通過JndiRmiProxyFactoryBean使用特定的遠程接口。借助于Spring 1.2.5 on WebLogic Server 9.0認證,我們已經擴展了JndiRmiProxyFactoryBean和相關的服務導出程序——這樣它就能支持任何J2EE RMI實現的POJO代理,包括RMI-IIOP和T3。這方面的支持還包括一個WebLogic RMI部署描述符,它支持代理RMI接口上的集群化,所以POJO調用可以跨一個WebLogic Server集群進行負載均衡:
<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> 服務導出程序如下: <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>
集群化的描述符是自動包含在內的,只需要以適當方式配置集群和將Spring應用程序部署到所有集群成員中。參見故障恢復支持,可以獲得更多相關信息。
Spring on WebLogic Server工具包中包含一個WebLogic Server控制臺擴展,它顯示了定義在應用程序中的Spring bean、屬性和操作。它構建在WebLogic控制臺擴展門戶框架之上,該框架可以變換WebLogic Administration控制臺的外觀、功能和布局,而無需修改服務器或控制臺代碼。將控制臺擴展復制到yourdomain/console-ext目錄下,則重新啟動服務器時就部署了控制臺擴展。想要了解有關部署控制臺擴展的更多信息,可以參考Spring on WebLogic Server工具包。
自動為不是MBean的Spring bean(大多數Spring bean)創建(JMX)管理接口,然后在applicationContext.xml中配置一個MbeanExporter,并指定哪些bean要通過匯編程序公開,這樣控制臺擴展就運行了。這項特性是Spring和WebLogic Server進行無縫和非侵入性合作的一個良好例證。要使應用程序支持JMX,只需修改應用程序上下文部署描述符。要使控制臺支持Spring,只需將一個簡單的jar部署到現有的域即可。
Spring遠程控制功能的另一個方面是它對RPC風格Web服務的支持。WebLogic Server提供基于Ant的工具,用于基于Web服務的WSDL描述生成JAX-RPC存根。Web服務客戶端使用這些生成的存根來獲取代表服務器端操作的一個遠程接口。Spring提供了一個JaxRpcPortProxyFactoryBean來簡化了這個過程。我們發現,在WebLogic Server環境中配置JaxRpcPortProxyFactoryBean有些棘手,所以為了節約客戶的時間,我們給出下面這個代碼片斷,演示如何為一個包含復雜類型的Document Literal包裝的Web服務配置代理生成。
大部分屬性都是自解釋的。其中有一些屬性比較有名:
把JaxRpcPortProxyFactoryBean上的lookupServiceOnStartup設置為false,可以關閉啟動期間的JAX-RPC服務查找。這樣,查找將在首次訪問時進行。這對于與WebLogic Server的可靠請求/響應Web服務通信的客戶端來說是必需的,而且此處的客戶端也必須是一個Web服務。通常在這些情況下,始發客戶端是與Web服務客戶端一起部署的。因為直到應用程序部署完成才會激活Web服務,所以客戶端Web服務對于Spring的上下文加載是不可用的。
<!-- reliable asynchronous Web service for sending new medical 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 its constructor which loads in type mappings --> <bean id="generatedReliableService" class="com.bea.physician.webservices.client.PhysicianWebServices_Impl"> </bean>
參見WebLogic Server的調用Web服務概覽和通過Spring使用遠程控制和Web服務,可以獲得進一步的信息。
WebLogic Server安全系統支持和擴展了J2EE安全性,同時提供一組豐富的安全提供程序,您可以對它們進行定制,然后使用它們來處理不同的安全性數據庫或安全性策略。除了使用標準的J2EE安全性之外,應用程序程序員還可以使用很多專有擴展,這些擴展使應用程序可以與安全系統緊密集成。WebLogic Server帶有幾個安全提供程序,例如,可以選擇包含大部分流行LDAP服務器的身份驗證數據庫、Active Directory、本地Windows和一個內置的身份驗證解決方案??梢允褂枚ㄖ频奶峁┏绦驅戎玫奶峁┏绦蜻M行擴充,從而幾乎可以與任意身份驗證數據庫、授權機制和憑證映射服務相集成。因為部署為webapp的Spring應用程序使用的是J2EE安全性,所以無需修改應用程序就可以獲得WebLogic Server的安全性優點。
經驗豐富的Spring用戶還會熟悉Acegi——Spring自身的安全框架。目前,可以在應用程序中使用Acegi、WebLogic Server安全性,或同時使用二者,因為它們是相互獨立的。稍后我們將講述與此相關的更多信息。
Spring為事務管理提供了基礎架構。除了對各家數據庫供應商提供支持之外,Spring還通過一家J2EE供應商的JTA實現支持分布式事務。通過WebLogicJtaTransactionManager,可以把Spring的JTA管理器配置為與WebLogic Server的JTA實現一起工作。
WebLogicJtaTransactionManager把責任直接委派給WebLogic Server的Java Transaction API。WebLogic Server的JTA TransactionManager接口可以通過JNDI為客戶端和bean提供者所用,而由Spring來管理這種交互。事務管理器還支持事務的作用域;事務可以作用于集群和域內部或二者之間。
WebLogicJtaTransactionManager最強大的特性是管理分布式事務的能力和用于企業應用程序的兩階段提交協議。通過采用WebLogicJtaTransactionManager,應用程序可以通過WebLogic Administration Console來進行事務監控。WebLogicJtaTransactionManager還支持按數據庫(per-database)隔離級別,這種級別支持復雜的事務配置。
<!-- spring's transaction manager delegates to WebLogic Server'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"> <bean class="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>
想要了解更多信息,請參見Overview of Transactions in WebLogic Server Applications 和 在Spring中實現事務掛起。
Java Management Extension(Java管理擴展,JMX)是用于監控和管理Java應用程序的規范。它使一般的管理系統能夠監控應用程序,當應用程序需要注意時發出通知,并修改應用程序狀態來補救問題。Spring提供廣泛的JMX支持,包括通過Spring的MBeanServerConnectionFactoryBean公開WebLogic Server的MBeanServer的能力。MBeanServerConnectionFactoryBean是一個使用方便的工廠,它附帶了一個MBeanServerConnection。在應用程序部署期間,連接被建立并緩存,以便稍后由引用bean對其進行操作。
可以配置MBeanServerConnectionFactoryBean,使其返回WebLogic Server的Runtime MBean Server,它會公開特定WebLogic Server實例的監控、運行時控制和活動配置。這包括對WebLogic Server的Diagnostics Framework的訪問。此外,Runtime MBean還為當前服務器提供對運行時MBean和活動配置MBean的訪問。]
還可以配置MBeanServerConnectionFactoryBean,獲得一個到WebLogic Server的Domain Runtime MBean Server的連接。Domain Runtime MBean Server提供對域范圍內服務的訪問,比如應用程序部署、JMS服務器和JDBC數據源。它還是訪問域中所有服務器的所有運行時MBean和活動配置MBean層次結構的單點。這個MBean Server還用作訪問位于托管服務器上的MBean的單點。
此外,可以配置MBeanServerConnectionFactoryBean,獲得一個到WebLogic Server的Edit MBean Server的連接。Edit MBean Server為管理當前WebLogic Server域配置提供入口點。
注意,WebLogic Server的Domain Runtime MBean Server在部署期間不是活動的。因此,需要使用延遲初始化來配置bean,它會在調用bean時獲取該bean。
下面給出了一個使用WebLogic的MBean Server配置Spring的MBeanServerConnectionFactoryBean的例子:
<!-- expose WebLogic Server's runtime mbeanserver 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>
想要了解更多信息,請參見Understanding WebLogic Server MBeans 和Spring的 JMX支持。
從WebLogic Server 9.0和Spring 1.2.5開始,BEA為Spring Framework on WebLogic Server提供了可用的支持和認證。這種支持不僅僅是對WebLogic Server上的Spring庫進行健全的測試,而且還涉及到BEA與Interface 21——Spring Framework的創建者和維護者之間的共同努力和協作。我們不僅測試了上述的所有Spring 1.2.5的特性和配置,一些新特性還是直接作為BEA和Interface 21的協作成果引入Spring 1.2.5中的。有一些特性需要對WebLogic Server本身進行調整,將來可以以Spring組合補丁的形式得到。
Spring Open Source Framework Support 1.2.5 download包括Spring 1.2.5(已在WebLogic Server 9.0上得到認證)、Spring JMX控制臺擴展以及使用Spring Framework重新編寫的WebLogic Medical Records示例應用程序。
以后,我們計劃提供WebLogic Server與Spring Framework的更深層次的集成。我們已經有了一些想法,其中比較有意思的是:
我們已經花了一些時間來考察Spring、WebLogic Server以及這兩種技術的集成。正如我們所說的那樣,Spring可以提高開發人員的效率,而WebLogic Server可以提高應用程序的服務質量。這兩種技術都是高度非侵入性的,因此用戶可以把精力集中在開發應用程序的業務功能之上,而不是糾纏于特定于技術的API的錯綜復雜性。
原文轉自:http://www.anti-gravitydesign.com