第一章 介紹與導覽
本文描述Weblogic Server的域以及如何配置域。域是WebLogic Server的基本管理單元。一個域可以包括一個或多個WebLogic Server實例以及相關資源,只需使用一個Administration Server進行管理。
以下章節描述該指南的內容與結構——理解域配置。
文檔范圍與讀者
文檔向導
相關文檔
示例與指南
該發布版本中新的域特性
文檔范圍與讀者
文檔主要適用于基于一個或多個Weblogic server域開發和部署Web應用的J2EE系統架構師、應用開發人員和系統管理員。
文檔的主題僅和軟件項目的設計與開發階段相關,不涉及產品過程管理、監控或者性能調整。對于這些主題的WebLogic Server文檔和資源鏈接,參見“相關文檔”。
文檔假定讀者熟悉J2EE,XML的基本概念以及應用管理的一般概念。
文檔向導
本章“介紹與導覽”,介紹該指南的目的、結構和上下文關系。
第二章“理解WebLogic Server域”介紹Weblogic Server域。
第三章“使用WebLogic工具配置域”,展示你可以用來修改域配置的幾種工具。
第四章“域配置文件”描述維護域和域的內容的磁盤表現形式的配置與目錄。
第五章“管理配置變更”描述如何變更Weblogic Server的管理特性。
相關文檔
關于用于創建和配置Weblogic Server域的工具的更多信息,參見:
使用配置向導創建WebLogic域
WebLogic腳本工具
使用JMX部署可管理的應用
WebLogic Server命令參考
管理控制臺在線幫助
關于其他系統管理任務的信息,參見系統管理文檔,尤其是:
設計和配置WebLogic Server環境
使用WebLogic Server集群
示例和向導
BEA系統公司為本文檔提供了和域配置、管理相關的以下代碼示例和指南:
BEA WebLogic Server的示例安裝(可選)于目錄WL_HOME/samples/server/examples/src/examples,WL_HOME是你安裝WebLogic Server的頂級目錄,這些示例也可以通過Windows開始菜單使用。集群示例會在BEA WebLogic Server集群指南示例中描述,指導你掌握使用WebLogic配置向導和管理控制臺來創建和配置一個新的server實例集群的整個過程。
本版中新的域特性
Weblogic Server 9.0在Weblogic Server域配置中引入了幾項重要變化:
config.xml的XML Schema
域目錄結構
配置變更管理
config.xml的XML Schema
WebLogic Server域和實例配置的磁盤表現形式在本版本中有所不同。在原版本中,配置信息被保存在單個XML倉庫文件config.xml中,默認位于user_projects/domains/domain_name目錄下。在本版的WebLogic Server中,config.xml文件符合XML Schema定義(用來驗證域配置文件格式的有效性)。而且,config.xml融合了其他配置文件(符合各自的XML Schema)的配置信息。在本版中,config.xml默認位于user_projects/domains/domain_name/config目錄下,config.xml核心文件涉及的輔助配置文件位于user_projects/domains/domain_name/config目錄的子目錄中。更多信息,參見第四章“域配置文件”。
域目錄結構
本版中,Weblogic Server域在磁盤上的目錄結構有了改變。域的父目錄命名為domains。域的配置信息保存在domains/domain_name/config目錄和config目錄的子目錄中。更多信息,參見“域目錄內容”。
配置變更管理
WebLogic Server提供了一些新特性用來管理服務配置變更,這使你可以安全、可預知地實現分發某個域的配置變更。當然這要求你在使用控制臺進行配置變更前獲得管理員控制臺鎖。
WebLogic Server中的變更管理過程和數據庫事務有些類似。由管理服務器維護一個獨立的,可編輯的域配置表現形式,稱為編輯層。server實例并不涉及編輯層。相反,server實例使用只讀層來發現配置。為了開啟編輯過程,你應當可以獲得一個編輯層的鎖以防止其他人更改。當你完成更改后,你保存并將其分發至域中的所有server實例。分發完成后,每一個server來決定自己是否接受該變更。一旦所有的server都接受該變更,則更新運行的配置層,變更才完成。
現在的管理控制臺包括一個名為Change Center(變更中心)的區域。當你使用管理控制臺進行配置變更時,你必須首先通過點擊Change Center的Lock & Make Changes(鎖且變更)獲得鎖。進行期望的配置變更以后,然后可以在Change Center:
點擊Activate Changes(激活變更)接受更改,向域中的sever實例分發,或者
點擊Undo All Changes(撤銷所有變更),釋放鎖。
WebLogic Server一般采用相同方式控制配置變更,無論變更是使用管理控制臺實現,還是WebLogic 腳本工具、配置管理服務或者JMX API。
更多信息,參見第五章“管理配置變更”。
第二章 理解Weblogic Server域
以下章節介紹Weblogic Server域和域的內容:
域是什么
組織域
域的內容
域約束
域是什么?
一個Weblogic Server管理域是邏輯上相關的Weblogic Server資源組。域包括一個特殊的Weblogic Server實例,叫做管理服務器(Administration Server),這是你配置和管理域的所有資源的關鍵。通常,你配置的一個域會加入另外的WebLogic Server實例,叫作托管服務器(Managed Server)。你的Web應用、EJB和其他資源會部署在托管服務器上,而管理服務器只是用于配置和管理。
多個托管服務器可以組織成集群(clusters),這使你能夠保持負載平衡和對于臨界的應用提供失敗保護,同時只使用一個管理服務器會使托管服務器實例的管理變得簡單。
組織域
如何將WebLogic Server裝置組織成域,這取決于你的業務需求。你可以基于系統管理員職責、應用邊界或者server運行的地理位置的不同定義多個域。與之相反,你也可以決定將所有WebLogic Server管理行為集中于一個域。
根據你特定的業務需求和系統管理實際,你可以按照如下標準決定如何組織你的域:
應用的邏輯區分。比如,你可以有一個域用于類似購物車的終端用戶功能,另一個域用于后臺記賬。
物理位置。你可以為業務的不同地理位置和分支分別建域。
大小。你會發現域被組織成更小的單元可能會使不同的系統管理員管理效率更高。反之,你也會發現維護單個域或者少量的域,配置更容易保持一致。
一個域由一個管理服務器和一個或多個托管服務器組成,也可以只由單個孤立的server組成,既扮演管理服務器的角色又駐留應用。
由分散的托管服務器組成的域:簡單的產品環境由幾個駐留應用的托管服務器,一個執行管理操作的管理服務器組成。在這種配置下,應用和資源部署在各自的托管服務器中;類似地,訪問應用的客戶端與各自的托管服務器連接。
如果產品環境對增強應用性能、吞吐量或者可用性有要求,那么應該將兩個或者更多的托管服務器配置成集群。機群允許多個托管服務器作為單個個體駐留應用和資源。關于在孤立的和集群托管服務器之間差異的更多信息,參見“托管服務器和托管服務器集群”。
孤立的server域:對于開發或測試環境而言,你可能想在部署單個應用和server獨立于產品域中的server。這種情況下,你可以部署一個簡單域,只由單個server實例組成,既作為管理服務器,又駐留你開發的應用。你用WebLogic Server安裝的wl_server域就是一個孤立server域的例子。
注意:在產品環境中,BEA建議你只在域中的托管服務器部署應用,管理服務器應當只負責管理任務。
域的內容
盡管域的范圍與目的會有很大差異,但是大多數 WebLogic Server域都包含本章節中描述的組件。
下圖展示了產品環境,包括一個管理服務器,三個孤立的托管服務器和三個托管服務器組成的集群。
管理服務器
每個Weblogic Server域都必須有一個server實例作為管理服務器。你使用管理服務器(編程或者通過管理服務器)來配置域中的所有其他server實例和資源。
管理服務器的角色
在啟動域的托管服務器之前,應先啟動管理服務器。當你啟動一個孤立或集群托管服務器時,它會按配置信息與管理服務器相聯。這種方式下,管理服務器在整個域配置中充當核心控制體。
當管理服務器啟動時,加載域的config.xml文件,除非你在創建域時指定另一個目錄存儲config.xml。
BEA_HOME/user_projects/domains/mydomain/config
這里mydomain是特定域的目錄,名稱與域相同。config.xml引用的其他配置文件,位于域的config目錄的子目錄下。
管理服務器每一次成功啟動后,將在域目錄中創建一份命名為config-booted.jar的備份配置文件。萬一配置文件在server實例生命周期內有損壞,有可能恢復原先的配置。
如果管理服務器出錯會發生什么?
域的管理服務器出錯不會影響域中的托管服務器的操作。如果域的管理服務器變得不可用,而它所管理的server實例——集群或者其他方式——仍在運行,那么那些托管服務器將繼續運行。如果該域包含集群server實例,那么由域配置支持的負載平衡和失敗性能保持可用,即使管理服務器出錯。如果域的管理服務器停止運行而托管服務器繼續運行,那么每一個托管服務器會周期性地嘗試重新連接管理服務器,周期由ServerMBean屬性AdminReconnectIntervalSecs指定。AdminReconnectIntervalSecs默認為10秒。
如果管理服務器因為主機的硬件或軟件錯誤而失敗,同一臺機器的其它server實例都可能受到同樣的影響。然而,管理服務器自身的失敗不會中斷域的托管服務器的運行。而且即使管理服務器不在運行狀態,你也可以啟動托管服務器。這種情況下,托管服務器使用配置文件的本地拷貝來作為它的啟動配置,然后周期性地向管理服務器作連接嘗試,連接后利用管理服務器來同步配置狀態。
對于重啟管理服務器的指令,參見“管理服務器啟動與關閉”。
托管服務器和托管服務器集群
在域中,非管理服務器的server實例,指向托管服務器。托管服務器駐留構成你應用的組件和相關資源,比如JSP和EJB。當某個托管服務器啟動后,它會連接域的管理服務器來獲得配置和部署設置。
注意:即使管理服務器不可用,域中的托管服務器也可以獨立于管理服務器啟動。更多信息參見“管理server啟動與關閉”中的“避免server失敗與恢復”。
兩個或更多的托管服務器可以配置成一個WebLogic Server集群,來增加應用的可伸縮性與可用性。在WebLogic Server集群中,大多數資源與服務平均部署給每一個托管服務器(與單個托管服務器相反),來使失敗與負載平衡。要想了解哪種組件類型和服務可以進行集群(部署給集群中的所有server實例),參見“使用WebLogic Server集群”中的“理解WebLogic Server集群”。
你可以創建一個非集群的托管服務器,然后通過配置有關server實例和集群的參數將其加入集群。你也可以通過重新配置參數從集群中刪除某個托管服務器。在集群與非集群托管服務器之間的根本區別在于對失敗和負載平衡的支持。這些特性僅在集群托管服務器中可用。
你對于可伸縮性與可靠性的要求將決定你是否采用集群托管服務器。比如,如果你的應用不常遇到易變的加載,應用服務中可能的中斷也是可以接受的,那么就沒有必要采用集群。
關于WebLogic Server集群的好處與性能的更多信息,參見“使用WebLogic Server集群”中的“理解WebLogic Server集群”。單個域可以包含多個WebLogic Server集群,同樣多個托管服務器也可以不被配置成集群。
資源與服務
除了管理服務器和托管服務器之外,域還包括托管服務器所需的資源和服務及部署在該域上的應用。
域配置包括域運行的網絡計算機環境信息,比如:
機器定位依靠硬件上某個特定的物理片段來識別。機器定位被用來關聯駐留托管服務器的計算機。該信息由節點管理器(Node Manager)重啟一臺出錯的托管服務器,集群的托管服務器選擇存儲重復的會話數據的最好位置時使用。關于節點管理器的更多信息,參見“設計與配置WebLogic Server環境”的“使用節點管理器控制服務器”。
網絡通道,一個可以用來定義默認端口、協議和協議設置的可選資源。在創建一個網絡通道后,可以將它分配給域中任意一個托管服務器和集群。更多信息,參見“設計與配置WebLogic Server環境”中的“配置網絡資源”。
域配置還包括與駐留在域中應用相關的資源和服務信息。這些資源和服務的例子包括:
應用組件,比如EJB
連接器
JDBC連接池
JMS server
啟動類
資源和服務可能被限制于域中一個或多個托管服務器,而不是對于整個域可用。你可以選擇托管服務器或者集群進行部署資源與服務。
域約束
WebLogic Server環境可以由單個域組成,包括駐留應用所需的所有托管服務器,也可以是多個域。你可以選擇創建多個域,根據組織單元、系統管理員職責、應用邊界或者其它要考慮的事項來劃分。在設計域配置時,注意以下約束:
每一個域都需要自身的管理服務器執行管理操作。當你使用管理控制臺執行管理和監控任務時,你可以在域中來回切換,同時你會連接不同的管理服務器。
同一個集群中的所有托管服務器必須位于相同的域,你不能將集群拆分至多個域。
同一個域中的所有托管服務器運行的WebLogic Server軟件版本必須相同。域中的管理服務器可以和托管服務器運行相同的版本,也可以是更新的版本。
你不能在域中共享配置資源與子系統。比如,如果你在一個域中創建了一個JDBC連接池,你就不可能在另一個域中的托管服務器或集群中使用。代之,你必須在第二個域中創建一個類似的連接池。
第三章 使用Weblogic工具配置域
WebLogic包括了你可以用來創建、修改或者復制域配置的一系列工具。包括以下工具:
域配置向導——域配置向導是創建一個新的域或集群的推薦工具。關于使用域配置向導的更多信息,參見“使用配置向導創建WebLogic域”。
WebLogic Server管理控制臺——管理控制臺是管理服務器的圖形化用戶界面(GUI)。管理控制臺描述參見“管理控制臺在線幫助”。
WebLogic腳本工具(WLST)——你可以使用命令行腳本接口來創建、管理和維護WebLogic Server配置變更。WebLogic腳本工具描述參見“WebLogic腳本工具”。
WebLogic Server應用編程接口(API)—— 你可以使用WebLogic Server提供的API編寫程序修改配置屬性。JMX API描述參見“使用JMX開發可管理的應用”。
WebLogic Server命令行工具——該工具允許你創建腳本來自動進行域管理。關于該工具的更多信息,參見“WebLogic Server命令參考”。
對于大多數方式而言,要修改域配置域的管理服務器必須運行。然而,你如果使用 WLST 來進行域配置變更不需要運行管理服務器。這種情況下,WLST造成的變更也不會立即生效直到管理服務器和托管服務器重啟。
第四章 域配置文件
本章節描述如何在文件系統中表示域。它包括以下部分:
配置文件概覽
config.xml
域域目錄概覽
域目錄內容
域配置文件概覽
WebLogic Server管理和配置服務通過Java管理擴展(JMX)API來訪問。域的配置保存在域目錄下的配置目錄中。這些配置目錄中的文件用來持久化存儲WebLogic Server在使用JMX API運行期間創建和修改的托管對象。config.xml的目的是存儲托管配置對象的變更以使得WebLogic Server重啟時可以訪問。
域的核心配置文件為domain_name/config/config.xml文件。它指定域的名稱和域中每一個server實例、集群、資源和服務的配置參數。域的一些主要子系統配置保存在domain_name/config目錄的子目錄中。
域目錄還包括你用來啟動域的管理服務器和托管服務器的默認腳本文件。
config.xml
域的核心配置文件為/domains/domain_name/config/config.xml文件。它指定域的名稱和域中每一個server實例、集群、資源與服務的配置參數。
config.xml文件符合XML Schema,URL為 http://www.bea.com/ns/weblogic/config。schema位于文件系統中的JAR文件BEA_HOME/weblogic90/server/lib/schema/configuration-binding.jar中,即META-INF/schemas/schema-0.xsd。XML編輯工具可以使用XML Schema來修改和驗證config.xml文件。
編輯配置文件
大多數情況下,你不應該直接修改config.xml或其他配置文件,而應該使用管理控制臺或者用第三章“使用WebLogic工具配置域”中列出的某個工具來修改域配置。配置變更將會映射到配置文件中。
如果你選擇放置配置文件,安裝的其他組件在源控制之下(使用WLST管理),直接修改配置文件可能是合適的。
警告:當WebLogic Server運行時你不能編輯配置文件,因為WebLogic Server會周期性地重寫該文件。你的更改將會丟失,也可能造成WebLogic Server失敗,這取決于你的平臺。
WebLogic Server配置文件是格式友好的XML文件,因此它有可能使用XML解析應用比如 Apache Xerces, or JDOM來使某個重復性的變更腳本實現。
確保完整測試所創建的腳本,在作變更之前對每一個配置文件作備份性拷貝。
輔助配置文件
在原版本中,config.xml文件存放了所有配置信息。新版本中,幾個WebLogic Server子系統被配置在輔助配置文件中,由核心的config.xml來引用。這些輔助配置文件位于/domains/domain_name/config目錄的子目錄中。關于輔助配置文件的更多信息,參見“域目錄概覽”和“域目錄內容”。
配置文件壓縮包
WebLogic Server對配置文件作備份拷貝。萬一配置變更需要推倒重來或者配置文件被破壞(當然這種情況不太可能),這使得恢復很容易。當管理服務器啟動時,它將配置文件保存在一個命名為config-booted.jar的JAR文件中。當你變更配置文件時,舊文件以JAR文件的形式保存在域目錄下的configArchive目錄中,命名帶數字序列,比如config-1.jar。
域目錄概覽
圖4-1是域目錄樹型結構的概覽。 domain-name 、deployment-name和server-name目錄名稱不是字面所示,實際上替換成任何指定的名稱都是可以的;其他的目錄名稱則是字面所示。概覽只顯示目錄,不含目錄內的文件。任何實際的特定域目錄樹,整個結構都可能不會是這樣。
域目錄內容
本節描述域目錄和子目錄的內容,以斜體表示的目錄名稱不是實際的名稱,而是要以適當的具體名稱來替代,非斜體的名稱則是字面上所示的名稱。
domain-name
該目錄的名稱為域的名稱。
applications
該目錄提供了一種在部署服務器上部署應用的快速方式。當Weblogic Server實例以開發模式運行時,它會自動部署你放置在該目錄的任何應用與模塊。
你放置在目錄的文件可以是:
一個J2EE應用
一個EAR文件
一個WAR、EJB JAR、RAR或者CAR的壓縮模塊
一個應用或者一個模塊的解壓目錄
bin
該目錄包括了一些用來啟動或終止域中的管理服務器和托管服務器進程的腳本。它也可以包括一些其他廣義上的域腳本,比如啟動和終止數據庫管理系統、全文檢索引擎進程等的腳本。更多信息,參見管理server啟動和終止。
config
該目錄包含域的當前配置和部署狀態,核心域配置文件config.xml即位于本目錄中。
config/deployments
保存域部署應用的目錄。
config/deployments/library_modules
保存類庫模塊的目錄,也就是說,該目錄中的任何文件都將以類庫模塊自動注冊。
config/deployments/deployment-name-1
該目錄包含一個應用或者可發布的模塊。它所含的子級目錄可以包含一個壓縮文件(EAR或WAR),一個部署清單,擴展描述符等等。
config/diagnostics
該目錄包含WebLogic診斷服務(WebLogic Diagnostic Service)系統模塊。更多信息,參見“理解WebLogic診斷服務”。
config/jdbc
該目錄包含JDBC系統模塊:所有JDBC模塊都可以通過JMX直接配置(和JSR-88不同)。更多信息,參見“數據庫連接(JDBC)”。
config/jms
該目錄包含JMS系統模塊:所有JMS模塊都可以通過JMX直接配置。更多信息,參見“消息與數據庫連接(JDBC)”。
config/nodemanager
該目錄保存與節點管理器連接的的配置信息。更多信息,參見“設計與配置WebLogic Server環境”中的“使用節點管理器管理服務”。
config/security
該目錄包含安全框架系統模塊。包含了當前域的每一種安全供應器的安全供應器配置擴展。更多信息,參見理解“WebLogic 安全”。
config/startup
該目錄包含含啟動計劃的系統模塊。啟動計劃被用來生成shell腳本,作為server啟動的一部分。
configArchive
該目錄包含一組用于保存域配置狀態的JAR文件。在未決的配置變更激活前,域的當前配置狀態,包括config.xml文件和其他相關文件,保存在帶版本號的JAR文件中,命名成config.jar#1,config.jar#2等等。
帶版本號的JAR文件的最大數量由DomainMBean的archiveConfigurationCount屬性指定。一旦達到最大數,在新版本創建之前刪除最舊的版本。
lib
放置在該目錄中的任何JAR文件在sever的Java虛擬機啟動時都會添加至域中每一個server實例的系統classpath。
pending
該目錄包含的域配置文件表示已請求,但還沒有激活的配置變更。一旦配置變更被激活,該目錄中的配置文件將被刪除。更多信息,參見“管理配置變更”。
security
該目錄保存的安全相關文件對于域中的每一個WebLogic Server實例來說都是相同的。
SerializedSystemIni.dat
該目錄還保存只有域管理服務器需要的安全相關文件:
DefaultAuthorizerInit.ldift
DefaultAuthenticatorInit.ldift
DefaultRoleMapperInit.ldift
更多信息,參見“理解WebLogic安全”。
servers
該目錄為域中每一個WebLogic Server實例設置一個子目錄。
servers/server-name
該目錄為server目錄,名稱和WebLogic Server實例的名稱相同。
servers/server-name/bin
該目錄存放可執行的或shell文件,對于不同的server可能會不同。server環境腳本(setServerEnv.sh或setServerEnv.cmd)是位于此處的一個文件示例,因為它能區分一個WebLogic Server實例與下一個實例的不同,這取決于server實例是否有自己的啟動計劃。
servers/server-name/cache
該目錄存放包含緩存數據的目錄和文件。這里“緩存(cached)”表示該數據是其他數據的拷貝,可能是進程中的形式(已編譯,已翻譯或重新格式化的)。
servers/server-name/cache/EJBCompilerCache
該目錄為已編譯的EJB緩存。
servers/server-name/data
和臨時的、緩存的或者歷史信息相反,該目錄存放的文件維護持久化的預服務狀態,而不是安全狀態,用于運行WebLogic Server實例。該目錄中的文件非常重要,必須存在于WebLogic Server實例開始,停止,崩潰,重啟或升級至新版本的整個過程中。
servers/server-name/data/ldap
該目錄存放內嵌的LDAP數據庫。WebLogic Server實例的運行時安全狀態持久化于該目錄。
servers/server-name/data/store
該目錄存放JMS持久化存儲。對于每一個持久化存儲,都有一個子目錄存放表示持久化存儲的文件。子目錄的名稱為持久化存儲的名稱。照例有一個存儲命名為default。
servers/server-name/logs
該目錄存放日志和診斷信息。實際上只是一些歷史信息,對于server的運行并非至關重要,可以刪除(不過至少WebLogic Server實例應該終止)而不影響正確的運行。然而,這些信息對于調試和檢查相當有用,如果沒有好的理由不應當刪除。
servers/server-name/logs/diagnostic_images
該目錄存放WebLogic診斷服務(WebLogic Diagnostic Service)的Server圖片捕獲器(Server Image Capture)組件創建的信息。更多信息,參見“理解WebLogic診斷服務”。
servers/server-name/logs/jmsServers
該目錄為WebLogic Server實例中的每一個JMS服務提供一個子目錄。每一個那樣的子目錄包含JMS服務的日志。子目錄的名稱為JMS服務的名稱。
servers/server-name/logs/connector
該目錄是連接器模塊(JCA資源適配器)日志的默認基目錄。
servers/server-name/security
該目錄存放安全相關文件,每一個WebLogic Server實例都可能不同。文件boot.properties是位于此處的一個文件示例,因為它能區分一個server實例與下一個實例的不同。該目錄還維護與SSL key相關的文件。
servers/server-name/tmp
該目錄存放server實例運行時創建的臨時目錄與文件。server運行時該目錄中的文件應當保留,但可以在server實例終止后隨意刪除。
第五章 管理配置變更
為了提供一個安全、可預期的方式來分發域的配置變更,WebLogic Server采用了大致類似于數據庫事務的變更管理進程。域的配置在文件系統中表示為一組XML配置文件,核心為config.xml文件,在運行時表示為配置MBean(Configuration MBeans)樹。當你編輯域配置時,你實際上編輯的是分離的管理服務器的配置MBeans樹。要開始編輯過程,你應獲得編輯樹的鎖以阻止其他人進行變更。完成變更后,保存變更。不過變更不會生效直到你激活它們,分發給域中的所有server實例。激活變更后,每一個server都決定是否接受變更。如果所有server都可以接受該變更,則更新運行著的配置層,變更完成。
注意WebLogic Server的變更管理過程適用于域的變更和server配置數據,不適用于安全或應用數據。
關于如何通過JMX和配置MBean來實現配置變更的更多詳細信息,參見“使用JMX開發可管理的應用”中的“理解WebLogic Server MBeans”
如第三章“使用WebLogic工具配置域”中的描述,你可以使用一系列不同的WebLogic Server工具進行配置變更:
管理控制臺
WebLogic 腳本工具
JMX API
無論你使用哪一個工具進行配置變更,WebLogic Server都采用大體相同的方式來處理變更過程。
以下章節描述配置變更管理:
管理控制臺的變更管理
配置變更管理過程
配置管理狀態圖
管理控制臺的變更管理
WebLogic管理控制臺將配置變更管理過程集中于Change Center:
如果你想使用管理控制臺進行配置變更,你必須先點擊Change Center中的Lock & Edit(鎖定并編輯)按鈕。當你點擊Lock & Edit后,你會獲得域中所有server的配置MBean的可編輯層(編輯樹)的鎖。
在你使用管理控制臺進行配置變更后,在適當的頁面點擊Save(保存)(某些情況下為Finish(完成)),這些不會使變更立即生效,而是在你點擊Save時,將變更保存至編輯樹,domain-name/pending/config.xml文件和相關的配置文件。只有在你點擊Change Center的Activate Changes(激活變更)時變更才會生效,此時,配置變更分發至域中的每一個server。只有每一個server都接受該變更,變更才會生效。如果有任何server不接受該變更,那么域中的所有server的所有變更全部回滾。變更保持為未決狀態,你既可以編輯該未決變更以解決問題或者恢復未決變更。
配置變更管理過程
以下步驟詳細描述該過程,從你首先導入域的管理服務器開始:
1.服務器啟動時讀取域配置文件,包括config.xml文件和config.xml文件涉及的所有附屬配置文件,使用這些數據對隨后的MBean樹進行實例化:
–一個配置 MBean的只讀樹包含管理服務器的當前資源配置。
–域中所有服務器的所有配置 MBean的可編輯樹。
注意:管理服務器也會實例化一個運行時MBean樹和一個域運行時MBean樹,但是這些不用于配置管理。
2. 按以下步驟開始配置變更:
a. 獲得當前配置鎖。
b. 使用你選擇的工具(管理控制臺,WLST,JMX API等),按你的要求變更。
c. 將變更保存至config.xml文件的未決版本。
3. 配置管理器服務將來自編輯MBean樹的所有數據保存成一份獨立的配置文件,目錄名為pending。參見圖5-2。
pending目錄直接位于域的根目錄下。比如說,如果你的域命名為mydomain,那么未決的config.xml文件的默認路徑名為mydomain/pending/config.xml。
4. 進行其它變更或者取消已做出的變更。
5. 當你準備激活域的變更時,使用管理控制臺Change Center的Activate Changes按鈕或者使用ConfigurationManagerMBean。
激活變更(參見圖 5-3):
a. 對于域的每一個server實例,配置管理器服務將未決配置文件拷貝至server的根目錄下的pending目錄。
如果托管服務器和管理服務器共享根目錄,ConfigurationManagerMBean不必拷貝未決的配置文件,托管服務器直接使用管理服務器的未決文件。
b. 每一個server實例將它的當前配置和未決文件中的配置進行比較。
c. 每一個server內部的子系統將對自身是否能接受新配置進行投票。
只有要任一子系統表示它不能接受該變更,整個的激活過程將回滾,ConfigurationManagerMBean拋出異常。你可以修改變更,再次進行變更激活,或者放棄鎖,編輯配置MBean樹和未決配置文件恢復至只讀配置MBean樹和配置文件的配置。
d. 如果所有server的所有子系統都能接受該變更,配置管理器服務將域的每一個server實例的只讀配置文件替換成未決配置文件。
e. 每一個server實例都會更新bean和只讀配置MBean樹以和新的配置文件的變更保持一致。
f. 然后未決配置文件從pending目錄中刪除。
6. 你可以保持鎖以進行其它的變更或者釋放鎖以使其他人可以更新配置。你也可以設置超時時限使配置管理器服務放棄鎖。
注意:配置變更鎖不會防止你在使用相同的管理員賬號造成的配置編輯沖突。比如,如果你使用管理控制臺獲得配置變更鎖,然后以相同的用戶帳號使用WebLogic腳本工具,你將訪問的是在管理控制臺中打開的相同的編輯會話,你不會因為使用腳本工具而被鎖定。由于這可能造成配置變更的混亂和沖突,這不是一種受推薦的手段。你應該通過為每一個管理員身份的用戶維護一個獨立的管理員賬號來減少發生這種情況是造成的風險。不過如果你有使用相同的用戶帳號的多個相同腳本實例,相同的問題仍然會發生,
處理變更沖突
這種情況,你保存的多個變更沒有被激活,某個變更會使前一個變更無效,變更管理器服務需要你在保存變更前手動解決該無效問題。
配置管理狀態圖

配置管理服務遵循圖 5-4中描述的狀態轉換。