創(chuàng)建 WebLogic 配置 / 域
域是一組邏輯上相關(guān)的
WebLogic Server
資源,您可以把它當(dāng)作單個管理單元進(jìn)行管理。域?qū)⑺械馁Y源和應(yīng)用程序信息保存在一個基于
XML
的配置庫中。為了在
WebLogic Server
上部署并運行應(yīng)用程序,首先要創(chuàng)建域。
?
推薦使用域配置向?qū)ё鳛閯?chuàng)建新域的工具。如果您準(zhǔn)備編寫腳本來創(chuàng)建域,推薦使用slient模式的域配置向?qū)н@個工具。也可以從所提供的“開箱即用”的域模板或定制的域模板來創(chuàng)建WebLogic Server域。
?
為了創(chuàng)建定制的域模板,請使用配置模板生成器,它是一個單機的Java應(yīng)用程序,能夠讓您創(chuàng)建定制的配置和擴展。您可以使用這些配置和擴展來創(chuàng)建和更新域。
域配置向?qū)Ь哂幸韵聦傩裕?/span>
·?? 向?qū)龑?dǎo)您完成針對目標(biāo)環(huán)境創(chuàng)建或擴展域的過程。
·?? 向?qū)Э梢允褂?/span> OOB 預(yù)定義的域模板或定制域模板創(chuàng)建或擴展域。
·?? 向?qū)?chuàng)建 config.xml 文件,建立基本的安全性,構(gòu)造啟動腳本,等等。
·?? 可以使用 graphical 、 console 或 silent 模式啟動向?qū)А?/span>
要以
graphical
模式啟動向?qū)В堖\行以下命令之一:
域配置模板生成器具有以下屬性:
?
·?? 向?qū)龑?dǎo)您完成創(chuàng)建或擴展配置模板 (JAR file) 的過程。
·?? 配置向?qū)Э梢允褂靡褎?chuàng)建的配置(域)模板來創(chuàng)建域。
只能以
graphical
模式啟動配置模板生成器。
要啟動配置模板生成器,請運行以下命令之一:
技巧
·?? 如果 WebLogic Domain/Configuration 分布在多臺物理機器上,那么應(yīng)該只能在管理服務(wù)器硬件(機器)上運行域配置向?qū)А?/span>
·?? 并不要求一定在托管服務(wù)器硬件上運行域配置向?qū)А?/span> ?
·?? 在 WebLogic Server 安裝目錄之外創(chuàng)建 WebLogic 域 ( 默認(rèn)情況下,所創(chuàng)建的域位于 %BEA_HOME%Ser_projectsdomains ) 。
·?? 為管理服務(wù)器創(chuàng)建啟動腳本時,如果腳本 (startWebLogic.cmd/sh) 沒有調(diào)用域目錄中的 weblogic.Server 類,使用這個命令行選項來指定域的位置: -Dweblogic.RootDirectory=path 。
·?? 啟動托管服務(wù)器 (startManagedWebLogic.cmd/sh) 時,如果進(jìn)行設(shè)置的話, -Dweblogic.RootDirectory 將被設(shè)置為服務(wù)器根目錄,該目錄將被用于存儲文件,比如日志文件和托管服務(wù)器獨立( managed-server independence , MSI )文件。
服務(wù)器啟動
?
管理服務(wù)器從配置庫(config.xml)加載所有配置。所有相關(guān)的托管服務(wù)器必須在啟動期間連接到運行中的管理服務(wù)器。獨立的托管服務(wù)器可以從本地庫(msi-config.xml)加載配置。
?
如果WebLogic運行在裝有Unix操作系統(tǒng)的計算機上,您可以為WebLogic Server進(jìn)程分配一個UID或GID,以便在計算機執(zhí)行所有優(yōu)先的啟動操作之后,以root用戶的身份進(jìn)行綁定。如果WebLogic Server用戶想要綁定到更高的端口(>1024),則無需root權(quán)限。
技巧
編寫使服務(wù)器啟動自動化的腳本時,考慮以下因素:
·?? 在域中,必須在任何相關(guān)托管服務(wù)器之前啟動管理服務(wù)器。
·?? 當(dāng)把托管服務(wù)器作為相關(guān)服務(wù)器啟動時,它連接到管理服務(wù)器,以便下載配置。
·?? 當(dāng)把托管服務(wù)器作為獨立服務(wù)器啟動時,檢查 msi-config.xml 文件是否被存儲在服務(wù)器根目錄中。
·?? 在 Unix 中,使用 'nohup' 運行 WebLogic Server 啟動腳本,以保證即使您注銷以后,服務(wù)器依然在后臺運行。
·?? 在 OS 中,為安裝和啟動服務(wù)器創(chuàng)建一個 WebLogic Server 用戶。
·?? 存儲加密后的用戶身份,使用 boot.properties 文件來避免啟動腳本中出現(xiàn)硬編碼的用戶身份。
·?? 當(dāng)把服務(wù)器綁定到較低端口 (<1024) 時(這需要 root 權(quán)限),使用 WebLogic UNIX 機器配置來綁定 UID 或 GID 。
·?? 為了使 WebLogic 域中的管理服務(wù)器在機器重啟期間能夠自動重啟,使用操作系統(tǒng)提供的 daemon 進(jìn)程功能。
o?????????????? Windows 服務(wù)
o?????????????? UNIX daemon 進(jìn)程
·?? 當(dāng)您使用域配置向?qū)?chuàng)建域時,域中的管理服務(wù)器可以被當(dāng)成服務(wù)。
·?? 此外,可以使用位于域文件夾中的 installservice.cmd 和 uninstallservice.cmd 腳本在 Windows Service Control Manager (SCM) 中添加或刪除服務(wù)。
·?? 如果管理服務(wù)器和托管服務(wù)器是同一臺機器,配置管理服務(wù)器進(jìn)程和托管服務(wù)器進(jìn)程之間的 OS 級服務(wù)相關(guān)性。
·?? 配置 rc 腳本,以便在正確的運行級別上添加 WebLogic 啟動命令。
啟動和關(guān)機類
可以把
WebLogic Server
配置為在啟動和正常關(guān)機過程中調(diào)用類。在服務(wù)器初始化所有子系統(tǒng)之后和它給客戶端訪問開放端口之前,加載并執(zhí)行啟動類。類似地,在服務(wù)器啟動正常關(guān)機進(jìn)程之前加載關(guān)機類。和應(yīng)用程序文件不同,必須手動地使啟動和關(guān)機類在已部署服務(wù)器地本地
classpath
中可用。
技巧
·?? 在啟動期間,使服務(wù)器級的啟動類在已部署 WebLogic Server 實例的系統(tǒng) classpath 中可用。
·?? 域中的管理服務(wù)器到托管服務(wù)器都不能自動部署出現(xiàn)在系統(tǒng) classpath 中的類;應(yīng)用程序級別的類可以分布在域中的管理服務(wù)器到目標(biāo)服務(wù)器上。
·?? 重新部署應(yīng)用程序時,就會重新加載應(yīng)用程序級別的啟動類。
·?? 不能動態(tài)地重新加載服務(wù)器級別的啟動類;只能在它們各自的 WebLogic Server 重新啟動時重新加載它們。
·?? 使用應(yīng)用程序級別的啟動類,而不要定義服務(wù)器級別的啟動類。
節(jié)點管理器
使用
WebLogic Server
提供的節(jié)點管理器功能自動啟動托管服務(wù)器,或者重新啟動出現(xiàn)故障的托管服務(wù)器。節(jié)點管理器使管理員可以從管理服務(wù)器或命令行
(weblogic.Admin START…)
遠(yuǎn)程啟動托管服務(wù)器。這可以通過與管理服務(wù)器通信來實現(xiàn),而不用依賴
OS
特定的遠(yuǎn)程登錄功能。
?
此外,除了啟動和關(guān)閉托管服務(wù)器之外,節(jié)點管理器還能夠監(jiān)控它所啟動的服務(wù)器的健康狀況。如果進(jìn)行恰當(dāng)?shù)呐渲?,在出現(xiàn)故障時,節(jié)點管理器能夠自動重新啟動托管服務(wù)器。
技巧
·?? 使用節(jié)點管理器時,顯式地配置所托管服務(wù)器的有遠(yuǎn)程啟動屬性,而不要依靠節(jié)點管理器為托管服務(wù)器的配置提供的環(huán)境。
·?? 節(jié)點管理器只接收來自管理服務(wù)器的請求。管理服務(wù)器不可用時,想要通過節(jié)點管理器遠(yuǎn)程地重新啟動托管服務(wù)器是不可能的。
·?? 把節(jié)點管理器配置為一個服務(wù) / daemon 。
·?? 啟用托管服務(wù)器的自動重啟。
·?? 配置機器在出現(xiàn)故障時自動關(guān)閉,以便在節(jié)點管理器嘗試重新啟動一個出現(xiàn)故障的實例之前關(guān)閉它。
·?? 運行在一臺機器上的節(jié)點管理器可以被運行在該機器上的多臺托管服務(wù)器所共享。
·?? 節(jié)點管理器還可以被運行在同一臺機器上的多個域中的托管服務(wù)器所共享。
WebLogic Server
關(guān)閉過程
異常的
JVM
終止可以導(dǎo)致套接字或程序段這樣的資源被鎖定。在操作系統(tǒng)中關(guān)閉或終止
WebLogic Server
進(jìn)程被認(rèn)為是異常終止。
可以通過以下方式正常關(guān)閉
WebLogic Server
:
·?? 使用管理控制臺 'Graceful Shutdown" 超鏈接。
·?? 使用 weblogic.Admin SHUTDOWN… 命令。
·?? 使用 JMX ,具體是調(diào)用 ServerMBean 類的 stop 方法。
技巧
·?? 為了正常關(guān)閉生產(chǎn)服務(wù)器,需要使用 WebLogic 管理控制臺或者 weblogic.Admin 實用程序。
·?? 正常關(guān)機不會異常終止用戶會話;它等待 HTTP 會話完成或超時。
·?? 也可以把 WebLogic Server 配置為不等待(忽略 Session During Shutdown 選項)。
·?? 正常關(guān)機超時是可配置的;默認(rèn)情況下,服務(wù)器將會無限期地等待關(guān)機過程完成。
·?? 如果服務(wù)器沒有響應(yīng)正常關(guān)機請求,或者當(dāng)服務(wù)器等待正在進(jìn)行的會話時(處于待機狀態(tài))關(guān)閉服務(wù)器,使用 'Force Shutdown' 選項。
·?? 如果被配置為 daemon ,確保將 rc 腳本中的 stop 方法配置為在機器重啟和停止時正常關(guān)閉服務(wù)器。
·?? 如果對節(jié)點管理器進(jìn)行配置,終止節(jié)點管理器將不會停止由它們啟動的相應(yīng)服務(wù)器。必須單獨地停止各臺托管服務(wù)器。
備份和恢復(fù)
為了在出現(xiàn)故障時遷移或恢復(fù)
WebLogic
域,定期備份管理服務(wù)器機器上的整個域目錄樹。這樣,您就可以從硬件或系統(tǒng)故障中恢復(fù),而要做的不過是還原域目錄并重新啟動管理服務(wù)器。
?
如果管理服務(wù)器崩潰,管理服務(wù)器將會把所有正在運行的托管服務(wù)器的相關(guān)信息保留在running-managed-servers.xml文件中。重新啟動時,管理服務(wù)器將會讀取這個文件,并嘗試聯(lián)系所有以前運行的托管服務(wù)器。如果沒有托管服務(wù)器正在運行的話,discovery模式可能會增加管理服務(wù)器的啟動時間,但是始終要使用discovery模式(默認(rèn)情況下它是打開的),這樣才能保證有托管服務(wù)器已經(jīng)運行的情況下,管理服務(wù)器重新與所有托管服務(wù)器連接。
一些需要引起注意/定期從管理服務(wù)器機器上進(jìn)行備份的重要文件有:
·??
config.xml
域配置庫。
·??
config.xml.booted
成功啟動時對域配置庫的良好備份。
·??
boot.properties
啟動管理服務(wù)器時需要的加密后的用戶名和密碼。
·??
running-managed-servers.xml
這是當(dāng)前正在運行的相關(guān)托管服務(wù)器的一個列表。這個文件用于當(dāng)管理服務(wù)器重新啟動后,而且有托管服務(wù)器正在運行時,發(fā)現(xiàn)托管服務(wù)器。
·??
domain/configArchive/
包含域配置庫文件的拷貝。使用管理工具進(jìn)行更新時,管理服務(wù)器把舊的
config.xml
文件復(fù)制到這個目錄。
·??
domaindminserverdapdapfiles
當(dāng)前被域的管理服務(wù)器使用的內(nèi)嵌
LDAP
數(shù)據(jù)文件。
·??
*.ldift
文件
這些文件可以用于把
WebLogic Domain Embedded LDAP
服務(wù)器初始化為剛剛創(chuàng)建域時的樣子。
·??
domain/adminserver/ldap/backup/EmbeddedLDAPBackup.zip
WebLogic Domain Embedded LDAP
服務(wù)器的備份。內(nèi)嵌的
LDAP
被用于存儲用戶、組、角色、默認(rèn)的安全領(lǐng)域使用的策略、
myrealm
的安全提供程序。
·??
Batch/Shell
腳本
setEnv.cmd/sh, startWebLogic.cmd/sh, startManagedWebLogic.cmd/sh
。
?
為管理任務(wù)編寫腳本
為了創(chuàng)建用于管理域配置的腳本:
·?? 使用 weblogic.Admin 實用程序命令 BATCHUPDATE ,它運行一個批處理文件中指定的一系列命令。這個命令使用一個 JVM 運行所有列出的命令。
·?? -Dweblogic.system.BootIdentityFile 選項讓您可以避免把用戶名和密碼硬編碼在您的文本腳本中。
·?? 為了在操作系統(tǒng)腳本中構(gòu)建邏輯分支,使用下面的命令求出 weblogic.Admin 命令的返回代碼:
o?????????????? %ERRORLEVEL% (Windows)
o?????????????? 0 (bash shell)
·?? ?weblogic.Admin 的-adminurl 選項從管理服務(wù)器檢索托管服務(wù)器的配置Mbean和運行時Mbean。
·?? 不推薦直接修改 config.xml 文件。
·?? 如果您必須修改 config.xml 文件:
o?????????????? 首先,在編輯之前備份原始文件。
o?????????????? 使用 XML 編輯器,以避免錄入錯誤。
o?????????????? 當(dāng)管理服務(wù)器正在運行時,要避免編輯該文件。
·?? 使用 wlconfig Ant 任務(wù)來為配置信息編寫腳本,并把它集成到整個構(gòu)建過程中。
·?? 當(dāng)管理服務(wù)器正在運行并且處于離線狀態(tài)時,使用 WebLogic Scripting Tool (WLST) 來修改域配置。 (dev2dev.bea.com)
·?? WLST 提供一個功能強大的到 WebLogic Server 的 shell 接口,而且它使用 Jython 作為腳本語言。
·?? 您還可以使用第三方的解決方案來管理配置,比如 WLShell 使用程序。 (www.wlshell.com)
·?? WLShell 提供一個功能強大的、 Unix 風(fēng)格的到 WebLogic Server 的 shell 接口;它針對 WebLogic Server MBean 使用文件系統(tǒng)模擬 。
日志記錄
日志記錄了和事件(比如服務(wù)器的啟動和關(guān)閉)、新應(yīng)用程序的部署或者一個或多個子系統(tǒng)故障有關(guān)的信息。日志消息包括和事件的時間與日期,以及啟動事件用戶的
ID
有關(guān)的信息。每個
WebLogic Server
實例都可以維護一份服務(wù)器日志、一份
HTTP
訪問日志、一份
JDBC
日志和一份
JTA
事務(wù)日志。
技巧
·?? 為了防止當(dāng)日志文件所占空間過大時,出現(xiàn)相應(yīng)的服務(wù)器重啟的情況,需要啟用日志旋轉(zhuǎn)( log rotation )。
·?? 考慮按照大小旋轉(zhuǎn)日志,而不是按照生成的時間旋轉(zhuǎn),因為使用生成時間這個選項會使文件增長非常迅速。
·?? 如果您沒有進(jìn)行交互式調(diào)試,而且 WebLogic Server 是在后臺( Windows 或 Unix )啟動的,使用以下命令把 stdout 和 stderr 重定向到一個文件:
o?????????????? -Dweblogic.Stdout="stdout-filename"
o?????????????? -Dweblogic.Stderr="stderr-filename"
·?? 在生產(chǎn)中,如果您不啟用 WebLogic Server 創(chuàng)建 JDBC 日志,您就可以避免服務(wù)器上的額外文件 I/O 。
·?? 使用節(jié)點管理器啟動托管服務(wù)器時,節(jié)點管理器捕捉服務(wù)器的 stdout 并把它存儲到一個文件中??梢允褂霉芾砜刂婆_來查看該文件的內(nèi)容。
·?? 經(jīng)常檢查 WebLogic Server 的日志文件,以熟悉常規(guī)操作,這樣您就能夠很容易地辨認(rèn)出異常的日志項。
JDBC
在
WebLogic Server
中,使用池緩沖到數(shù)據(jù)庫的
JDBC
連接可以提高應(yīng)用程序的性能。連接池根除了為每個應(yīng)用程序創(chuàng)建新的數(shù)據(jù)庫連接的需要。
JDBC
連接池提供到您數(shù)據(jù)庫的現(xiàn)成連接。
?
使用連接池時,到數(shù)據(jù)庫的連接的數(shù)目可以動態(tài)改變。但是,在負(fù)載高峰時期試圖增加JDBC連接的數(shù)目將會使情況惡化,因為創(chuàng)建數(shù)據(jù)庫連接是一項開銷昂貴的操作。
?
連接池還可以通過緩存用于重用的prepared statement和callable statement來提高性能。重用prepared statement和callable statement可以降低數(shù)據(jù)庫服務(wù)器上的CPU利用率。
?
通過把其他應(yīng)用程序分離到單獨的機器或硬件上,可以避免耗盡WebLogic Server機器上的處理能力;為數(shù)據(jù)庫指派一臺專用的機器。
技巧
·?? 如果有可能,按大小排列數(shù)據(jù)庫連接池,這樣它們就永遠(yuǎn)不會增加連接的數(shù)目;設(shè)置初始容量為最大容量。
·?? 設(shè)置連接池的最大容量至少等于執(zhí)行線程的數(shù)量。
·?? 配置 Inactive Connection Timeout ,以指定一個連接在被回收到池中之前,保持非活動狀態(tài)的時間長短。
·?? Connection Leak Profiling 選項顯示了連接池中泄漏的連接。 BEA 建議您不要在生產(chǎn)中使用這個選項;它要使用額外的資源,并且通常會降低連接池操作的速度。
·?? 如果您能夠負(fù)擔(dān)把測試連接作為常規(guī)請求處理一部分所帶來的開銷,您可以只使用 Test Reserved Connections 選項。
·?? 避免對“ Test Table Name ”使用生產(chǎn)表,而要使用啞表 ( 例如 Dual) 。
·?? 使用語句緩存提高 prepared 和 callable statement 的性能。
·?? 為緩存選擇 least-recently-used (LRU) 算法;這將從緩存中刪除很少使用的語句。
·?? 當(dāng)創(chuàng)建連接池或者啟動 WebLogic Server 時,如果數(shù)據(jù)庫不可訪問,可以使用 Connection Creation Retry Frequency 重新嘗試建立到數(shù)據(jù)庫的連接。
·?? 當(dāng) WebLogic Server 正在運行時,如果重新啟動數(shù)據(jù)庫, Test Frequency 可以從 0 開始增加,這樣所有連接都會被關(guān)閉,然后被重新打開,以重新建立有效的物理連接。在重新創(chuàng)建所有連接之后,將它改回 0 將禁止測試。
·?? 當(dāng)為連接池使用 DataSource 對象時,使用 Honors Global Transaction 選項來創(chuàng)建 TxDataSource 。
·?? 您應(yīng)該使用 non-Tx DataSource 的惟一場合就是當(dāng)您想在數(shù)據(jù)庫上完成一些工作,而又不想把該數(shù)據(jù)庫包括到當(dāng)前事務(wù)中時。
·?? 當(dāng)配置一個連接池,以便與 WebLogic JMS JDBC Store 一起使用時,使用 non-XA 數(shù)據(jù)庫驅(qū)動程序。
JMS
WebLogic Server JMS
體系結(jié)構(gòu)允許在一個
WebLogic
域中創(chuàng)建多臺
JMS
服務(wù)器。但是每臺
JMS
服務(wù)器只能在一臺
WebLogic Server
上被實例化(目標(biāo)化),因為它是一項“僅一次”的服務(wù)。一臺
JMS
服務(wù)器可以作為多個目的地的宿主。永久性存儲(基于磁盤的文件或可通過
JDBC
訪問的數(shù)據(jù)庫)可以被配置用于存儲永久性的消息數(shù)據(jù)。
?
如果必須跨多個目的地共享一個JMS存儲器,將多個目的地配置為駐留在一臺JMS服務(wù)器上。但是,為了使用對每個目的地使用單獨的永久性存儲器,在多臺JMS服務(wù)器下創(chuàng)建它們。
技巧
·?? 針對 JMS 文件存儲啟用直接寫入同步寫入策略,這可以釋放虛擬內(nèi)存( VM )堆,但是只有當(dāng)存在一些并發(fā)的活動 JMS 客戶端時,直接寫入可以顯著地提高性能。
·?? 在單獨的磁盤上,或者甚至是在單獨的磁盤控制器上分離文件存儲。
·?? 為了使文件存儲高度可用,您可以使用 Storage Area Network (SAN) ,一種多端口的磁盤或者磁盤鏡像技術(shù)。
·?? 不要把使用 XA JDBC 驅(qū)動程序的連接池與 JMS JDBC 存儲器關(guān)聯(lián)起來,因為 JMS JDBC 存儲器不支持 XA 資源驅(qū)動程序 (WebLogic JMS 實現(xiàn)了它自己的 XA 資源 ) 。
·?? 使用 Using Expiration Scan Interval 掃描目的地的到期消息可以釋放 VM ,但是太頻繁的掃描會增加掃描開銷;確保您對此做最優(yōu)調(diào)整。
·?? 在連接工廠上設(shè)置 MessagesMaximum ,以便調(diào)整異步消息管道的大小。
·?? 為了避免消息增長,在連接工廠級別上設(shè)置 Time To Live 屬性。
·?? 禁用默認(rèn)的 JMS 連接工廠;針對生產(chǎn)配置特定于應(yīng)用程序的 JMS 連接工廠。
·?? 為跨物理目的地(在不同的 JMS 服務(wù)器中進(jìn)行配置)的負(fù)載平衡 JMS 消息配置一個分布式的目的地。
·?? 當(dāng)部署分布式目的地時,針對群集中的每臺 JMS 服務(wù)器和成員目的地使用類似的設(shè)置。
消息分頁
永久性和非永久性消息消耗服務(wù)器內(nèi)存,除非啟用分頁。消息分頁是釋放永久性和非永久性消息所占用的服務(wù)器內(nèi)存的過程,因為永久性消息也會把它們的數(shù)據(jù)緩存在內(nèi)存中。一條被換出頁面的消息不會釋放它使用的所有內(nèi)存。消息頭和消息屬性仍然留在內(nèi)存中,以供查找、排序和過濾之用。在事務(wù)性會話中發(fā)送的消息只有在會話被提交后才適合于分頁。在這之前,消息被保存在內(nèi)存中。
技巧
·?? 如果啟用 JMS 分頁,而且沒有配置分頁存儲器, WLS 8.1 會自動創(chuàng)建一個分頁存儲器,但是推薦顯式地配置頁面存儲器(您可以指定存儲器的位置)。
·?? JMS 分頁增加了一個 WebLogic Server 實例能夠包含的消息數(shù)據(jù)的數(shù)量,而不要求增加 JVM 堆大小。
·?? 分頁的確會降低性能,但是對非永久性消息進(jìn)行分頁時,其效果比對永久性消息分頁時要小。
·?? 始終為 WebLogic JMS Server 配置限額;限額可以防止消息溢出服務(wù)器內(nèi)存。
流控制
定義
JMS
服務(wù)器之后,您可以配置一個或多個連接工廠,以使用預(yù)定義的屬性創(chuàng)建連接。借助流控制功能,您可以在消息生產(chǎn)程序確定自己將會變得過載時,引導(dǎo)
JMS
服務(wù)器或目的地降低它的速度。
技巧
·?? 為了降低過于活躍的、從 WebLogic Server 進(jìn)程之外淹沒目的地的生產(chǎn)程序的速度,需要配置流控制。
·?? 在服務(wù)器內(nèi)部使用流控制會導(dǎo)致服務(wù)器線程速度變慢;要小心使用。
部署
WebLogic Server
允許您把部署單元存儲為單個存檔文件,或者是一個包含與上述存檔文件相同內(nèi)容的已展開目錄。存檔文件是包含一個所有應(yīng)用程序或模塊的類、靜態(tài)文件、目錄和部署描述符文件的單個文件。
?
在托管服務(wù)器實例上部署用戶應(yīng)用程序。這將管理應(yīng)用程序(控制臺)和域配置從用戶應(yīng)用程序分離出來。在生產(chǎn)環(huán)境和多服務(wù)器環(huán)境中,避免使用應(yīng)用程序的自動部署。以“生產(chǎn)模式”運行WebLogic域?qū)⒔乖谏a(chǎn)中進(jìn)行自動部署。如果您創(chuàng)建腳本來把應(yīng)用程序部署為整個結(jié)構(gòu)的一部分,考慮使用wldeploy Ant任務(wù)。
如果您在部署應(yīng)用程序(或模塊)時,在把On Future Redeploys選項設(shè)置為Initialize Roles and Policies From DD 之前,一次或多次將其設(shè)置為Ignore Roles and Policies From DD,您就可以使用管理控制臺設(shè)置安全策略和安全角色。但是,使用管理控制臺進(jìn)行的這些修改將覆蓋部署描述符中指定的安全性。
技巧
·?? 使用生產(chǎn)模式運行生產(chǎn)應(yīng)用程序。
·?? 避免在管理服務(wù)器實例上部署用戶應(yīng)用程序。
·?? 為了指定服務(wù)器的默認(rèn) Web 應(yīng)用程序,在 weblogic.xml 或 application.xml 文件中使用一個空的 context-root 元素或者一個值為 "/" 的元素。
·?? 在管理控制臺中部署應(yīng)用程序之后,對該應(yīng)用程序的安全策略的修改將會覆蓋部署描述符中的策略。
重新部署
部署一個應(yīng)用程序之后,您可以重新部署該應(yīng)用程序本身或者它的一部分。重新部署一個完整的應(yīng)用程序包括卸載它所有的類,然后使用修改后的文件再次部署該應(yīng)用程序。在生產(chǎn)中重新部署應(yīng)用程序是一個很嚴(yán)肅的任務(wù),它可能影響到性能,所以要仔細(xì)規(guī)劃應(yīng)用程序的更新。
?
如果生產(chǎn)中有一個Web應(yīng)用程序正在使用中,重新部署將導(dǎo)致WebLogic Server丟失所有活動的HTTP會話。通過在WebLoigc特定的部署描述符文件(weblogic.xml)中打開一個特殊的屬性,可以還原HTTP會話。
技巧
·?? 如果您只修改了靜態(tài)文件,那么在不用重新部署整個應(yīng)用程序的情況下刷新它們是可能的。
·?? 使用命令行選項部分地重新部署已擴展的應(yīng)用程序 (weblogic.Deployer … -redeploy <files>…) 。
·?? 想要在不改變應(yīng)用程序的情況下修改部署參數(shù),需要使用備用的部署描述符。
·?? 為了簡化在重新部署期間,把應(yīng)用程序存檔文件重新分布到多個 WebLogic Server 實例上的過程,需要使用分段模式部署。
·?? 如果管理服務(wù)器不可用,可以以獨立模式啟動具有全部分段應(yīng)用程序的托管服務(wù)器,并使它的功能完全。
企業(yè)應(yīng)用程序
如果客戶端位于相同的企業(yè)級應(yīng)用程序類中,而且可以在企業(yè)應(yīng)用程序中跨所有存檔應(yīng)用程序共享庫,
WebLogic
優(yōu)化了對
EJB
的訪問。所以,考慮創(chuàng)建企業(yè)存檔文件,而不是獨立部署相關(guān)的應(yīng)用程序。此外還可以使用企業(yè)范圍內(nèi)的設(shè)置,而不要使用部署描述符中的多項本地設(shè)置。使用
WebLogic
控制臺在
WebLogic Server
域中創(chuàng)建
JDBC
資源,而不要采用
weblogic-application.xml
技術(shù)。
技巧
·?? 在 WebLogic Server 中,避免把 EJB 存檔文件和相關(guān) Web 應(yīng)用程序部署為單獨的獨立應(yīng)用程序。
·?? 當(dāng) Web 組件訪問同一個企業(yè)應(yīng)用程序中的 EJB 組件時,可以提高運行時性能。
·?? 可以把企業(yè)部署為一個部署單元。
·?? 不要把特定于應(yīng)用程序的類或 JAR 文件放入系統(tǒng) classpath ( 避免為了重新加載它們而不得不重新啟動服務(wù)器 ) 。
·?? 使用 WebLogic Server 8.1 時,請使用企業(yè)應(yīng)用程序目錄結(jié)構(gòu)中新的 APP-INF/lib 和 APP-INF/classes 目錄,這是為了簡化實用程序類和實用程序存檔文件的打包工作。
預(yù)編譯
生產(chǎn)和測試部署應(yīng)該包括經(jīng)過預(yù)編譯的
JSP
頁面和
EJB
(使用
weblogic.appc
,如果是早期的
weblogic
版本則使用
weblogic.jspc /weblogic.ejbc
)。在您部署應(yīng)用程序之前的很長一段時間內(nèi),它們可以捕捉該應(yīng)用程序的錯誤。此外,離線編譯可以驗證部署描述符與當(dāng)前規(guī)范的兼容性。部署已編譯的應(yīng)用程序可以縮減部署時間和接下來的服務(wù)器重啟時間。用在開發(fā)人員的工作站上的開發(fā)部署可以使用動態(tài)編譯。
技巧
·?? 為了在應(yīng)用程序部署期間或服務(wù)器啟動期間預(yù)先編譯 JSP 文件,在 weblogic.jar 中啟用預(yù)編譯參數(shù)。
·?? 在生產(chǎn)環(huán)境中,要禁止運行時的頁面檢查和重新編譯,需要把 pageCheckSeconds 設(shè)定為 -1 。
·?? 您可以使用 weblogic.appc 或 weblogic.ejbc ( 不再使用 ) 在服務(wù)器 VM 之外編譯 EJB 。這可以減少隨后服務(wù)器的重啟時間。
·?? 在腳本中使用 weblogic.Deployer 實用程序,或者它相關(guān)的 Ant 任務(wù) wldeploy ,以便在生產(chǎn)環(huán)境中使部署自動化。
部署描述符編輯
只有當(dāng)重新部署應(yīng)用程序時,修改
J2EE
應(yīng)用程序的部署描述符才會生效。
WebLogic
管理控制臺提供一種方法來修改某些部署描述符屬性,而不用重新部署應(yīng)用程序。當(dāng)域以開發(fā)模式運行時,為了利用這項功能,您必須在已展開的目錄結(jié)構(gòu)中部署應(yīng)用程序(非存檔格式)。
?
為了在部署之后修改應(yīng)用程序的描述符值(以展開的格式),執(zhí)行以下操作:Web Application Module > Your Application > Configuration 選項卡 > Descriptor選項卡。
技巧
·?? 使用 WebLogic Server 提供的工具生成和編輯 XML 部署描述符。
·?? WebLogic Builder 生成描述符;它包括一個用于編輯描述符的接口。
·?? DDInit 是一個命令行實用工具,用于為 WebLogic Server 應(yīng)用程序生成部署描述符。
·?? ddcreate 是一個 Ant 任務(wù),可以用于為企業(yè)應(yīng)用程序創(chuàng)建部署描述符。
EJB
無狀態(tài)會話
EJB
自由池可以提高性能和吞吐量,因為
bean
是在服務(wù)器啟動期間或部署期間被創(chuàng)建的。
WebLogic Server
使用
bean
實例的緩存來提高有狀態(tài)會話
EJB
的性能。該緩存在內(nèi)存中存儲活動的
EJB
實例,這樣它們馬上就可以為客戶端請求所用。
?
使用應(yīng)用程序級/聯(lián)合緩存將導(dǎo)致碎片減少,而且內(nèi)存和堆空間的利用率更高。但是應(yīng)用程序級/聯(lián)合緩存的使用僅限于企業(yè)應(yīng)用程序中的實體EJB。對于要求高吞吐量的應(yīng)用程序來說,要使用bean級別的緩存。bean級緩存是高效的,因為任務(wù)們不用競爭對聯(lián)合緩存中一個控制線程的控制權(quán)。
為了在應(yīng)用程序中使用WebLogic為EJB組件提供的調(diào)用優(yōu)化,把<enable-call-by-reference>設(shè)置為true。
?
在同一個企業(yè)應(yīng)用程序中為要訪問的EJB編寫本地接口,也可以達(dá)到相同的目的。
?
實體EJB的并發(fā)策略包括:
數(shù)據(jù)庫:
遵從數(shù)據(jù)庫可以提高吞吐量(對于
EJB1.1
和
2.0
來說,這是默認(rèn)的也是建議使用的機制)。
互斥的:
避免死鎖;只有當(dāng)在非群集的服務(wù)器上要求高度一致性時才使用它。
樂觀的:
在事務(wù)期間,
EJB
容器或數(shù)據(jù)庫中不會保持鎖定。但是
EJB
容器確保事務(wù)正在更新的數(shù)據(jù)沒有被修改。
只讀的:
事務(wù)結(jié)束時,容器不會試著保存
bean
的狀態(tài);對不會對永久性數(shù)據(jù)做任何修改的
EJB
使用這一點。借助只讀策略,使用
<read-time-out-seconds>
使容器中緩存的
bean
數(shù)據(jù)變得無效;當(dāng)出現(xiàn)超時時,這會更新永久性存儲器中數(shù)據(jù)。
技巧
·?? 考慮執(zhí)行線程的數(shù)目,以便配置自由池中 bean 的最大數(shù)目。
·?? 要限制有狀態(tài)會話 EJB 使用的內(nèi)存,需要設(shè)置能夠駐留在緩存中的 bean 的最大數(shù)目 (max-beans-in-cache) 。
·?? 緩存過小會導(dǎo)致頻繁的激活和鈍化。
·?? 緩存過大會導(dǎo)致內(nèi)存浪費。
·?? 當(dāng)達(dá)到理想的超時時間長短之后, LRU 算法會讓 bean 保持在鈍化狀態(tài)。
·?? 為了避免鈍化有狀態(tài)會話 EJB 所帶來的相關(guān)開銷,使用 Not Recently Used (NRU) 算法。
·?? EJB 的本地接口提供對服務(wù)器端 EJB 客戶端的最優(yōu)訪問。
·?? 聯(lián)合緩存使管理員能夠在 weblogic-application.xml 中只調(diào)整一塊緩存,而不是多塊緩存。
·?? 使用容器托管事務(wù)的消息驅(qū)動 bean 必須使用 XA 連接工廠。
安全性
永遠(yuǎn)不要對生產(chǎn)服務(wù)器使用開發(fā)模式;開發(fā)模式會放寬域中所有服務(wù)器的安全限制。使用兼容性安全性時,禁用生產(chǎn)中的客人登錄,這樣就可以使用客人登錄來訪問
WebLogic Server
中的
WebLogic
資源。
?
創(chuàng)建安全策略時,如果通過繼承得到的策略語句出現(xiàn)在Policy Editor頁面的Inherited Policy Statement框中,新的策略會覆蓋它們。想要修改在J2EE部署描述符中定義的安全策略,需要進(jìn)行重新部署;在管理控制臺中修改內(nèi)嵌的LDAP策略是動態(tài)的。把另外的管理用戶配置為諸如admin、deployer、 monitor 或 operator這樣的角色。
?
SerializedSystemIni.dat包含對域中密碼進(jìn)行處理以后得到的雜亂信息;確保您在安全的地方存儲了這個文件的拷貝。只能授予WebLogic系統(tǒng)管理員帳號對SerializedSystemIni.dat的讀權(quán)限。如果您丟失了管理密碼,而且沒有以boot.properties文件的形式保存啟動身份,那么您不能重新啟動服務(wù)器。
技巧
·?? 在 boot.properties 文件中保存對有權(quán)啟動 WebLogic Server 的用戶進(jìn)行加密后的啟動身份。
·?? BEA 建議使用安全角色(而不是用戶或組)來保護 WebLogic 資源;首先把用戶指派給組,然后創(chuàng)建角色語句。
·?? 不要以 root 權(quán)限安裝或運行 WebLogic Server 。如果您必須綁定到一個要求授權(quán)的端口,請在 WebLogic 機器配置中使用 post-bind UID 或 post-bind GID 。
·?? 設(shè)置 WebLogic 安裝和應(yīng)用程序目錄的所有權(quán),只允許運行服務(wù)器的用戶帳戶訪問它們。
恢復(fù)管理員密碼
使用默認(rèn)的身份認(rèn)證程序時,如果您尚未修改全局的管理角色(默認(rèn)情況下被授給管理員組),您可以恢復(fù)
WebLogic
域中的管理員密碼。
<span style="FONT-SIZE: 9pt; COLOR: black; F