創(chuàng)建 WebLogic 配置 /

域是一組邏輯上相關(guān)的 WebLogic Server 資源,您可以把它當(dāng)作單個(gè)管理單元進(jìn)行管理。域?qū)⑺械馁Y源和應(yīng)用程序信息保存在一個(gè)基于 XML 的配置庫(kù)中。為了在 WebLogic Server 上部署并運(yùn)行應(yīng)用程序,首先要?jiǎng)?chuàng)建域。
?
推薦使用域配置向?qū)ё鳛閯?chuàng)建新域的工具。如果您準(zhǔn)備編寫(xiě)腳本來(lái)創(chuàng)建域,推薦使用slient模式的域配置向?qū)н@個(gè)工具。也可以從所提供的“開(kāi)箱即用”的域模板或定制的域模板來(lái)創(chuàng)建WebLogic Server域。
?
為了創(chuàng)建定制的域模板,請(qǐng)使用配置模板生成器,它是一個(gè)單機(jī)的Java應(yīng)用程序,能夠讓您創(chuàng)建定制的配置和擴(kuò)展。您可以使用這些配置和擴(kuò)展來(lái)創(chuàng)建和更新域。

域配置向?qū)Ь哂幸韵聦傩裕?/span>

·?? 向?qū)?huì)引導(dǎo)您完成針對(duì)目標(biāo)環(huán)境創(chuàng)建或擴(kuò)展域的過(guò)程。

·?? 向?qū)Э梢允褂?/span> OOB 預(yù)定義的域模板或定制域模板創(chuàng)建或擴(kuò)展域。

·?? 向?qū)?chuàng)建 config.xml 文件,建立基本的安全性,構(gòu)造啟動(dòng)腳本,等等。

·?? 可以使用 graphical console silent 模式啟動(dòng)向?qū)А?/span>


要以 graphical 模式啟動(dòng)向?qū)В?qǐng)運(yùn)行以下命令之一:


域配置模板生成器具有以下屬性: ?

·?? 向?qū)?huì)引導(dǎo)您完成創(chuàng)建或擴(kuò)展配置模板 (JAR file) 的過(guò)程。

·?? 配置向?qū)Э梢允褂靡褎?chuàng)建的配置(域)模板來(lái)創(chuàng)建域。


只能以 graphical 模式啟動(dòng)配置模板生成器。
要啟動(dòng)配置模板生成器,請(qǐng)運(yùn)行以下命令之一:



技巧

·?? 如果 WebLogic Domain/Configuration 分布在多臺(tái)物理機(jī)器上,那么應(yīng)該只能在管理服務(wù)器硬件(機(jī)器)上運(yùn)行域配置向?qū)А?/span>

·?? 并不要求一定在托管服務(wù)器硬件上運(yùn)行域配置向?qū)А?/span> ?

·?? WebLogic Server 安裝目錄之外創(chuàng)建 WebLogic ( 默認(rèn)情況下,所創(chuàng)建的域位于 %BEA_HOME%Ser_projectsdomains )

·?? 為管理服務(wù)器創(chuàng)建啟動(dòng)腳本時(shí),如果腳本 (startWebLogic.cmd/sh) 沒(méi)有調(diào)用域目錄中的 weblogic.Server 類(lèi),使用這個(gè)命令行選項(xiàng)來(lái)指定域的位置: -Dweblogic.RootDirectory=path

·?? 啟動(dòng)托管服務(wù)器 (startManagedWebLogic.cmd/sh) 時(shí),如果進(jìn)行設(shè)置的話, -Dweblogic.RootDirectory 將被設(shè)置為服務(wù)器根目錄,該目錄將被用于存儲(chǔ)文件,比如日志文件和托管服務(wù)器獨(dú)立( managed-server independence MSI )文件。


服務(wù)器啟動(dòng)
?
管理服務(wù)器從配置庫(kù)(config.xml)加載所有配置。所有相關(guān)的托管服務(wù)器必須在啟動(dòng)期間連接到運(yùn)行中的管理服務(wù)器。獨(dú)立的托管服務(wù)器可以從本地庫(kù)(msi-config.xml)加載配置。
?
如果WebLogic運(yùn)行在裝有Unix操作系統(tǒng)的計(jì)算機(jī)上,您可以為WebLogic Server進(jìn)程分配一個(gè)UIDGID,以便在計(jì)算機(jī)執(zhí)行所有優(yōu)先的啟動(dòng)操作之后,以root用戶的身份進(jìn)行綁定。如果WebLogic Server用戶想要綁定到更高的端口(>1024),則無(wú)需root權(quán)限。

技巧
編寫(xiě)使服務(wù)器啟動(dòng)自動(dòng)化的腳本時(shí),考慮以下因素:

·?? 在域中,必須在任何相關(guān)托管服務(wù)器之前啟動(dòng)管理服務(wù)器。

·?? 當(dāng)把托管服務(wù)器作為相關(guān)服務(wù)器啟動(dòng)時(shí),它連接到管理服務(wù)器,以便下載配置。

·?? 當(dāng)把托管服務(wù)器作為獨(dú)立服務(wù)器啟動(dòng)時(shí),檢查 msi-config.xml 文件是否被存儲(chǔ)在服務(wù)器根目錄中。

·?? Unix 中,使用 'nohup' 運(yùn)行 WebLogic Server 啟動(dòng)腳本,以保證即使您注銷(xiāo)以后,服務(wù)器依然在后臺(tái)運(yùn)行。

·?? OS 中,為安裝和啟動(dòng)服務(wù)器創(chuàng)建一個(gè) WebLogic Server 用戶。

·?? 存儲(chǔ)加密后的用戶身份,使用 boot.properties 文件來(lái)避免啟動(dòng)腳本中出現(xiàn)硬編碼的用戶身份。

·?? 當(dāng)把服務(wù)器綁定到較低端口 (<1024) 時(shí)(這需要 root 權(quán)限),使用 WebLogic UNIX 機(jī)器配置來(lái)綁定 UID GID

·?? 為了使 WebLogic 域中的管理服務(wù)器在機(jī)器重啟期間能夠自動(dòng)重啟,使用操作系統(tǒng)提供的 daemon 進(jìn)程功能。

o?????????????? Windows 服務(wù)

o?????????????? UNIX daemon 進(jìn)程

·?? 當(dāng)您使用域配置向?qū)?chuàng)建域時(shí),域中的管理服務(wù)器可以被當(dāng)成服務(wù)。

·?? 此外,可以使用位于域文件夾中的 installservice.cmd uninstallservice.cmd 腳本在 Windows Service Control Manager (SCM) 中添加或刪除服務(wù)。

·?? 如果管理服務(wù)器和托管服務(wù)器是同一臺(tái)機(jī)器,配置管理服務(wù)器進(jìn)程和托管服務(wù)器進(jìn)程之間的 OS 級(jí)服務(wù)相關(guān)性。

·?? 配置 rc 腳本,以便在正確的運(yùn)行級(jí)別上添加 WebLogic 啟動(dòng)命令。


啟動(dòng)和關(guān)機(jī)類(lèi)
可以把 WebLogic Server 配置為在啟動(dòng)和正常關(guān)機(jī)過(guò)程中調(diào)用類(lèi)。在服務(wù)器初始化所有子系統(tǒng)之后和它給客戶端訪問(wèn)開(kāi)放端口之前,加載并執(zhí)行啟動(dòng)類(lèi)。類(lèi)似地,在服務(wù)器啟動(dòng)正常關(guān)機(jī)進(jìn)程之前加載關(guān)機(jī)類(lèi)。和應(yīng)用程序文件不同,必須手動(dòng)地使啟動(dòng)和關(guān)機(jī)類(lèi)在已部署服務(wù)器地本地 classpath 中可用。

技巧

·?? 在啟動(dòng)期間,使服務(wù)器級(jí)的啟動(dòng)類(lèi)在已部署 WebLogic Server 實(shí)例的系統(tǒng) classpath 中可用。

·?? 域中的管理服務(wù)器到托管服務(wù)器都不能自動(dòng)部署出現(xiàn)在系統(tǒng) classpath 中的類(lèi);應(yīng)用程序級(jí)別的類(lèi)可以分布在域中的管理服務(wù)器到目標(biāo)服務(wù)器上。

·?? 重新部署應(yīng)用程序時(shí),就會(huì)重新加載應(yīng)用程序級(jí)別的啟動(dòng)類(lèi)。

·?? 不能動(dòng)態(tài)地重新加載服務(wù)器級(jí)別的啟動(dòng)類(lèi);只能在它們各自的 WebLogic Server 重新啟動(dòng)時(shí)重新加載它們。

·?? 使用應(yīng)用程序級(jí)別的啟動(dòng)類(lèi),而不要定義服務(wù)器級(jí)別的啟動(dòng)類(lèi)。


節(jié)點(diǎn)管理器
使用 WebLogic Server 提供的節(jié)點(diǎn)管理器功能自動(dòng)啟動(dòng)托管服務(wù)器,或者重新啟動(dòng)出現(xiàn)故障的托管服務(wù)器。節(jié)點(diǎn)管理器使管理員可以從管理服務(wù)器或命令行 (weblogic.Admin START…) 遠(yuǎn)程啟動(dòng)托管服務(wù)器。這可以通過(guò)與管理服務(wù)器通信來(lái)實(shí)現(xiàn),而不用依賴 OS 特定的遠(yuǎn)程登錄功能。
?
此外,除了啟動(dòng)和關(guān)閉托管服務(wù)器之外,節(jié)點(diǎn)管理器還能夠監(jiān)控它所啟動(dòng)的服務(wù)器的健康狀況。如果進(jìn)行恰當(dāng)?shù)呐渲茫诔霈F(xiàn)故障時(shí),節(jié)點(diǎn)管理器能夠自動(dòng)重新啟動(dòng)托管服務(wù)器。


技巧

·?? 使用節(jié)點(diǎn)管理器時(shí),顯式地配置所托管服務(wù)器的有遠(yuǎn)程啟動(dòng)屬性,而不要依靠節(jié)點(diǎn)管理器為托管服務(wù)器的配置提供的環(huán)境。

·?? 節(jié)點(diǎn)管理器只接收來(lái)自管理服務(wù)器的請(qǐng)求。管理服務(wù)器不可用時(shí),想要通過(guò)節(jié)點(diǎn)管理器遠(yuǎn)程地重新啟動(dòng)托管服務(wù)器是不可能的。

·?? 把節(jié)點(diǎn)管理器配置為一個(gè)服務(wù) / daemon

·?? 啟用托管服務(wù)器的自動(dòng)重啟。

·?? 配置機(jī)器在出現(xiàn)故障時(shí)自動(dòng)關(guān)閉,以便在節(jié)點(diǎn)管理器嘗試重新啟動(dòng)一個(gè)出現(xiàn)故障的實(shí)例之前關(guān)閉它。

·?? 運(yùn)行在一臺(tái)機(jī)器上的節(jié)點(diǎn)管理器可以被運(yùn)行在該機(jī)器上的多臺(tái)托管服務(wù)器所共享。

·?? 節(jié)點(diǎn)管理器還可以被運(yùn)行在同一臺(tái)機(jī)器上的多個(gè)域中的托管服務(wù)器所共享。


WebLogic Server
關(guān)閉過(guò)程
異常的 JVM 終止可以導(dǎo)致套接字或程序段這樣的資源被鎖定。在操作系統(tǒng)中關(guān)閉或終止 WebLogic Server 進(jìn)程被認(rèn)為是異常終止。
可以通過(guò)以下方式正常關(guān)閉 WebLogic Server

·?? 使用管理控制臺(tái) 'Graceful Shutdown" 超鏈接。

·?? 使用 weblogic.Admin SHUTDOWN… 命令。

·?? 使用 JMX ,具體是調(diào)用 ServerMBean 類(lèi)的 stop 方法。


技巧

·?? 為了正常關(guān)閉生產(chǎn)服務(wù)器,需要使用 WebLogic 管理控制臺(tái)或者 weblogic.Admin 實(shí)用程序。

·?? 正常關(guān)機(jī)不會(huì)異常終止用戶會(huì)話;它等待 HTTP 會(huì)話完成或超時(shí)。

·?? 也可以把 WebLogic Server 配置為不等待(忽略 Session During Shutdown 選項(xiàng))。

·?? 正常關(guān)機(jī)超時(shí)是可配置的;默認(rèn)情況下,服務(wù)器將會(huì)無(wú)限期地等待關(guān)機(jī)過(guò)程完成。

·?? 如果服務(wù)器沒(méi)有響應(yīng)正常關(guān)機(jī)請(qǐng)求,或者當(dāng)服務(wù)器等待正在進(jìn)行的會(huì)話時(shí)(處于待機(jī)狀態(tài))關(guān)閉服務(wù)器,使用 'Force Shutdown' 選項(xiàng)。

·?? 如果被配置為 daemon ,確保將 rc 腳本中的 stop 方法配置為在機(jī)器重啟和停止時(shí)正常關(guān)閉服務(wù)器。

·?? 如果對(duì)節(jié)點(diǎn)管理器進(jìn)行配置,終止節(jié)點(diǎn)管理器將不會(huì)停止由它們啟動(dòng)的相應(yīng)服務(wù)器。必須單獨(dú)地停止各臺(tái)托管服務(wù)器。


備份和恢復(fù)
為了在出現(xiàn)故障時(shí)遷移或恢復(fù) WebLogic 域,定期備份管理服務(wù)器機(jī)器上的整個(gè)域目錄樹(shù)。這樣,您就可以從硬件或系統(tǒng)故障中恢復(fù),而要做的不過(guò)是還原域目錄并重新啟動(dòng)管理服務(wù)器。
?
如果管理服務(wù)器崩潰,管理服務(wù)器將會(huì)把所有正在運(yùn)行的托管服務(wù)器的相關(guān)信息保留在running-managed-servers.xml文件中。重新啟動(dòng)時(shí),管理服務(wù)器將會(huì)讀取這個(gè)文件,并嘗試聯(lián)系所有以前運(yùn)行的托管服務(wù)器。如果沒(méi)有托管服務(wù)器正在運(yùn)行的話,discovery模式可能會(huì)增加管理服務(wù)器的啟動(dòng)時(shí)間,但是始終要使用discovery模式(默認(rèn)情況下它是打開(kāi)的),這樣才能保證有托管服務(wù)器已經(jīng)運(yùn)行的情況下,管理服務(wù)器重新與所有托管服務(wù)器連接。

一些需要引起注意/定期從管理服務(wù)器機(jī)器上進(jìn)行備份的重要文件有:

·?? config.xml
域配置庫(kù)。

·?? config.xml.booted
成功啟動(dòng)時(shí)對(duì)域配置庫(kù)的良好備份。

·?? boot.properties
啟動(dòng)管理服務(wù)器時(shí)需要的加密后的用戶名和密碼。

·?? running-managed-servers.xml
這是當(dāng)前正在運(yùn)行的相關(guān)托管服務(wù)器的一個(gè)列表。這個(gè)文件用于當(dāng)管理服務(wù)器重新啟動(dòng)后,而且有托管服務(wù)器正在運(yùn)行時(shí),發(fā)現(xiàn)托管服務(wù)器。

·?? domain/configArchive/
包含域配置庫(kù)文件的拷貝。使用管理工具進(jìn)行更新時(shí),管理服務(wù)器把舊的 config.xml 文件復(fù)制到這個(gè)目錄。

·?? domaindminserverdapdapfiles
當(dāng)前被域的管理服務(wù)器使用的內(nèi)嵌 LDAP 數(shù)據(jù)文件。

·?? *.ldift 文件
這些文件可以用于把 WebLogic Domain Embedded LDAP 服務(wù)器初始化為剛剛創(chuàng)建域時(shí)的樣子。

·?? domain/adminserver/ldap/backup/EmbeddedLDAPBackup.zip
WebLogic Domain Embedded LDAP
服務(wù)器的備份。內(nèi)嵌的 LDAP 被用于存儲(chǔ)用戶、組、角色、默認(rèn)的安全領(lǐng)域使用的策略、 myrealm 的安全提供程序。

·?? Batch/Shell 腳本
setEnv.cmd/sh, startWebLogic.cmd/sh, startManagedWebLogic.cmd/sh


? 為管理任務(wù)編寫(xiě)腳本
為了創(chuàng)建用于管理域配置的腳本:

·?? 使用 weblogic.Admin 實(shí)用程序命令 BATCHUPDATE ,它運(yùn)行一個(gè)批處理文件中指定的一系列命令。這個(gè)命令使用一個(gè) JVM 運(yùn)行所有列出的命令。

·?? -Dweblogic.system.BootIdentityFile 選項(xiàng)讓您可以避免把用戶名和密碼硬編碼在您的文本腳本中。

·?? 為了在操作系統(tǒng)腳本中構(gòu)建邏輯分支,使用下面的命令求出 weblogic.Admin 命令的返回代碼:

o?????????????? %ERRORLEVEL% (Windows)

o?????????????? 0 (bash shell)

·?? ?weblogic.Admin -adminurl 選項(xiàng)從管理服務(wù)器檢索托管服務(wù)器的配置Mbean和運(yùn)行時(shí)Mbean

·?? 不推薦直接修改 config.xml 文件。

·?? 如果您必須修改 config.xml 文件:

o?????????????? 首先,在編輯之前備份原始文件。

o?????????????? 使用 XML 編輯器,以避免錄入錯(cuò)誤。

o?????????????? 當(dāng)管理服務(wù)器正在運(yùn)行時(shí),要避免編輯該文件。

·?? 使用 wlconfig Ant 任務(wù)來(lái)為配置信息編寫(xiě)腳本,并把它集成到整個(gè)構(gòu)建過(guò)程中。

·?? 當(dāng)管理服務(wù)器正在運(yùn)行并且處于離線狀態(tài)時(shí),使用 WebLogic Scripting Tool (WLST) 來(lái)修改域配置。 (dev2dev.bea.com)

·?? WLST 提供一個(gè)功能強(qiáng)大的到 WebLogic Server shell 接口,而且它使用 Jython 作為腳本語(yǔ)言。

·?? 您還可以使用第三方的解決方案來(lái)管理配置,比如 WLShell 使用程序。 (www.wlshell.com)

·?? WLShell 提供一個(gè)功能強(qiáng)大的、 Unix 風(fēng)格的到 WebLogic Server shell 接口;它針對(duì) WebLogic Server MBean 使用文件系統(tǒng)模擬


日志記錄
日志記錄了和事件(比如服務(wù)器的啟動(dòng)和關(guān)閉)、新應(yīng)用程序的部署或者一個(gè)或多個(gè)子系統(tǒng)故障有關(guān)的信息。日志消息包括和事件的時(shí)間與日期,以及啟動(dòng)事件用戶的 ID 有關(guān)的信息。每個(gè) WebLogic Server 實(shí)例都可以維護(hù)一份服務(wù)器日志、一份 HTTP 訪問(wèn)日志、一份 JDBC 日志和一份 JTA 事務(wù)日志。

技巧

·?? 為了防止當(dāng)日志文件所占空間過(guò)大時(shí),出現(xiàn)相應(yīng)的服務(wù)器重啟的情況,需要啟用日志旋轉(zhuǎn)( log rotation )。

·?? 考慮按照大小旋轉(zhuǎn)日志,而不是按照生成的時(shí)間旋轉(zhuǎn),因?yàn)槭褂蒙蓵r(shí)間這個(gè)選項(xiàng)會(huì)使文件增長(zhǎng)非常迅速。

·?? 如果您沒(méi)有進(jìn)行交互式調(diào)試,而且 WebLogic Server 是在后臺(tái)( Windows Unix )啟動(dòng)的,使用以下命令把 stdout stderr 重定向到一個(gè)文件:

o?????????????? -Dweblogic.Stdout="stdout-filename"

o?????????????? -Dweblogic.Stderr="stderr-filename"

·?? 在生產(chǎn)中,如果您不啟用 WebLogic Server 創(chuàng)建 JDBC 日志,您就可以避免服務(wù)器上的額外文件 I/O

·?? 使用節(jié)點(diǎn)管理器啟動(dòng)托管服務(wù)器時(shí),節(jié)點(diǎn)管理器捕捉服務(wù)器的 stdout 并把它存儲(chǔ)到一個(gè)文件中。可以使用管理控制臺(tái)來(lái)查看該文件的內(nèi)容。

·?? 經(jīng)常檢查 WebLogic Server 的日志文件,以熟悉常規(guī)操作,這樣您就能夠很容易地辨認(rèn)出異常的日志項(xiàng)。


JDBC
WebLogic Server 中,使用池緩沖到數(shù)據(jù)庫(kù)的 JDBC 連接可以提高應(yīng)用程序的性能。連接池根除了為每個(gè)應(yīng)用程序創(chuàng)建新的數(shù)據(jù)庫(kù)連接的需要。 JDBC 連接池提供到您數(shù)據(jù)庫(kù)的現(xiàn)成連接。
?
使用連接池時(shí),到數(shù)據(jù)庫(kù)的連接的數(shù)目可以動(dòng)態(tài)改變。但是,在負(fù)載高峰時(shí)期試圖增加JDBC連接的數(shù)目將會(huì)使情況惡化,因?yàn)閯?chuàng)建數(shù)據(jù)庫(kù)連接是一項(xiàng)開(kāi)銷(xiāo)昂貴的操作。
?
連接池還可以通過(guò)緩存用于重用的prepared statementcallable statement來(lái)提高性能。重用prepared statementcallable statement可以降低數(shù)據(jù)庫(kù)服務(wù)器上的CPU利用率。
?
通過(guò)把其他應(yīng)用程序分離到單獨(dú)的機(jī)器或硬件上,可以避免耗盡WebLogic Server機(jī)器上的處理能力;為數(shù)據(jù)庫(kù)指派一臺(tái)專(zhuān)用的機(jī)器。

技巧

·?? 如果有可能,按大小排列數(shù)據(jù)庫(kù)連接池,這樣它們就永遠(yuǎn)不會(huì)增加連接的數(shù)目;設(shè)置初始容量為最大容量。

·?? 設(shè)置連接池的最大容量至少等于執(zhí)行線程的數(shù)量。

·?? 配置 Inactive Connection Timeout ,以指定一個(gè)連接在被回收到池中之前,保持非活動(dòng)狀態(tài)的時(shí)間長(zhǎng)短。

·?? Connection Leak Profiling 選項(xiàng)顯示了連接池中泄漏的連接。 BEA 建議您不要在生產(chǎn)中使用這個(gè)選項(xiàng);它要使用額外的資源,并且通常會(huì)降低連接池操作的速度。

·?? 如果您能夠負(fù)擔(dān)把測(cè)試連接作為常規(guī)請(qǐng)求處理一部分所帶來(lái)的開(kāi)銷(xiāo),您可以只使用 Test Reserved Connections 選項(xiàng)。

·?? 避免對(duì)“ Test Table Name ”使用生產(chǎn)表,而要使用啞表 ( 例如 Dual)

·?? 使用語(yǔ)句緩存提高 prepared callable statement 的性能。

·?? 為緩存選擇 least-recently-used (LRU) 算法;這將從緩存中刪除很少使用的語(yǔ)句。

·?? 當(dāng)創(chuàng)建連接池或者啟動(dòng) WebLogic Server 時(shí),如果數(shù)據(jù)庫(kù)不可訪問(wèn),可以使用 Connection Creation Retry Frequency 重新嘗試建立到數(shù)據(jù)庫(kù)的連接。

·?? 當(dāng) WebLogic Server 正在運(yùn)行時(shí),如果重新啟動(dòng)數(shù)據(jù)庫(kù), Test Frequency 可以從 0 開(kāi)始增加,這樣所有連接都會(huì)被關(guān)閉,然后被重新打開(kāi),以重新建立有效的物理連接。在重新創(chuàng)建所有連接之后,將它改回 0 將禁止測(cè)試。

·?? 當(dāng)為連接池使用 DataSource 對(duì)象時(shí),使用 Honors Global Transaction 選項(xiàng)來(lái)創(chuàng)建 TxDataSource

·?? 您應(yīng)該使用 non-Tx DataSource 的惟一場(chǎng)合就是當(dāng)您想在數(shù)據(jù)庫(kù)上完成一些工作,而又不想把該數(shù)據(jù)庫(kù)包括到當(dāng)前事務(wù)中時(shí)。

·?? 當(dāng)配置一個(gè)連接池,以便與 WebLogic JMS JDBC Store 一起使用時(shí),使用 non-XA 數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。


JMS
WebLogic Server JMS
體系結(jié)構(gòu)允許在一個(gè) WebLogic 域中創(chuàng)建多臺(tái) JMS 服務(wù)器。但是每臺(tái) JMS 服務(wù)器只能在一臺(tái) WebLogic Server 上被實(shí)例化(目標(biāo)化),因?yàn)樗且豁?xiàng)“僅一次”的服務(wù)。一臺(tái) JMS 服務(wù)器可以作為多個(gè)目的地的宿主。永久性存儲(chǔ)(基于磁盤(pán)的文件或可通過(guò) JDBC 訪問(wèn)的數(shù)據(jù)庫(kù))可以被配置用于存儲(chǔ)永久性的消息數(shù)據(jù)。
?
如果必須跨多個(gè)目的地共享一個(gè)JMS存儲(chǔ)器,將多個(gè)目的地配置為駐留在一臺(tái)JMS服務(wù)器上。但是,為了使用對(duì)每個(gè)目的地使用單獨(dú)的永久性存儲(chǔ)器,在多臺(tái)JMS服務(wù)器下創(chuàng)建它們。

技巧

·?? 針對(duì) JMS 文件存儲(chǔ)啟用直接寫(xiě)入同步寫(xiě)入策略,這可以釋放虛擬內(nèi)存( VM )堆,但是只有當(dāng)存在一些并發(fā)的活動(dòng) JMS 客戶端時(shí),直接寫(xiě)入可以顯著地提高性能。

·?? 在單獨(dú)的磁盤(pán)上,或者甚至是在單獨(dú)的磁盤(pán)控制器上分離文件存儲(chǔ)。

·?? 為了使文件存儲(chǔ)高度可用,您可以使用 Storage Area Network (SAN) ,一種多端口的磁盤(pán)或者磁盤(pán)鏡像技術(shù)。

·?? 不要把使用 XA JDBC 驅(qū)動(dòng)程序的連接池與 JMS JDBC 存儲(chǔ)器關(guān)聯(lián)起來(lái),因?yàn)?/span> JMS JDBC 存儲(chǔ)器不支持 XA 資源驅(qū)動(dòng)程序 (WebLogic JMS 實(shí)現(xiàn)了它自己的 XA 資源 )

·?? 使用 Using Expiration Scan Interval 掃描目的地的到期消息可以釋放 VM ,但是太頻繁的掃描會(huì)增加掃描開(kāi)銷(xiāo);確保您對(duì)此做最優(yōu)調(diào)整。

·?? 在連接工廠上設(shè)置 MessagesMaximum ,以便調(diào)整異步消息管道的大小。

·?? 為了避免消息增長(zhǎng),在連接工廠級(jí)別上設(shè)置 Time To Live 屬性。

·?? 禁用默認(rèn)的 JMS 連接工廠;針對(duì)生產(chǎn)配置特定于應(yīng)用程序的 JMS 連接工廠。

·?? 為跨物理目的地(在不同的 JMS 服務(wù)器中進(jìn)行配置)的負(fù)載平衡 JMS 消息配置一個(gè)分布式的目的地。

·?? 當(dāng)部署分布式目的地時(shí),針對(duì)群集中的每臺(tái) JMS 服務(wù)器和成員目的地使用類(lèi)似的設(shè)置。


消息分頁(yè)
永久性和非永久性消息消耗服務(wù)器內(nèi)存,除非啟用分頁(yè)。消息分頁(yè)是釋放永久性和非永久性消息所占用的服務(wù)器內(nèi)存的過(guò)程,因?yàn)橛谰眯韵⒁矔?huì)把它們的數(shù)據(jù)緩存在內(nèi)存中。一條被換出頁(yè)面的消息不會(huì)釋放它使用的所有內(nèi)存。消息頭和消息屬性仍然留在內(nèi)存中,以供查找、排序和過(guò)濾之用。在事務(wù)性會(huì)話中發(fā)送的消息只有在會(huì)話被提交后才適合于分頁(yè)。在這之前,消息被保存在內(nèi)存中。

技巧

·?? 如果啟用 JMS 分頁(yè),而且沒(méi)有配置分頁(yè)存儲(chǔ)器, WLS 8.1 會(huì)自動(dòng)創(chuàng)建一個(gè)分頁(yè)存儲(chǔ)器,但是推薦顯式地配置頁(yè)面存儲(chǔ)器(您可以指定存儲(chǔ)器的位置)。

·?? JMS 分頁(yè)增加了一個(gè) WebLogic Server 實(shí)例能夠包含的消息數(shù)據(jù)的數(shù)量,而不要求增加 JVM 堆大小。

·?? 分頁(yè)的確會(huì)降低性能,但是對(duì)非永久性消息進(jìn)行分頁(yè)時(shí),其效果比對(duì)永久性消息分頁(yè)時(shí)要小。

·?? 始終為 WebLogic JMS Server 配置限額;限額可以防止消息溢出服務(wù)器內(nèi)存。


流控制
定義 JMS 服務(wù)器之后,您可以配置一個(gè)或多個(gè)連接工廠,以使用預(yù)定義的屬性創(chuàng)建連接。借助流控制功能,您可以在消息生產(chǎn)程序確定自己將會(huì)變得過(guò)載時(shí),引導(dǎo) JMS 服務(wù)器或目的地降低它的速度。

技巧

·?? 為了降低過(guò)于活躍的、從 WebLogic Server 進(jìn)程之外淹沒(méi)目的地的生產(chǎn)程序的速度,需要配置流控制。

·?? 在服務(wù)器內(nèi)部使用流控制會(huì)導(dǎo)致服務(wù)器線程速度變慢;要小心使用。


部署
WebLogic Server
允許您把部署單元存儲(chǔ)為單個(gè)存檔文件,或者是一個(gè)包含與上述存檔文件相同內(nèi)容的已展開(kāi)目錄。存檔文件是包含一個(gè)所有應(yīng)用程序或模塊的類(lèi)、靜態(tài)文件、目錄和部署描述符文件的單個(gè)文件。
?
在托管服務(wù)器實(shí)例上部署用戶應(yīng)用程序。這將管理應(yīng)用程序(控制臺(tái))和域配置從用戶應(yīng)用程序分離出來(lái)。在生產(chǎn)環(huán)境和多服務(wù)器環(huán)境中,避免使用應(yīng)用程序的自動(dòng)部署。以“生產(chǎn)模式”運(yùn)行WebLogic域?qū)⒔乖谏a(chǎn)中進(jìn)行自動(dòng)部署。如果您創(chuàng)建腳本來(lái)把應(yīng)用程序部署為整個(gè)結(jié)構(gòu)的一部分,考慮使用wldeploy Ant任務(wù)。

如果您在部署應(yīng)用程序(或模塊)時(shí),在把On Future Redeploys選項(xiàng)設(shè)置為Initialize Roles and Policies From DD 之前,一次或多次將其設(shè)置為Ignore Roles and Policies From DD,您就可以使用管理控制臺(tái)設(shè)置安全策略和安全角色。但是,使用管理控制臺(tái)進(jìn)行的這些修改將覆蓋部署描述符中指定的安全性。

技巧

·?? 使用生產(chǎn)模式運(yùn)行生產(chǎn)應(yīng)用程序。

·?? 避免在管理服務(wù)器實(shí)例上部署用戶應(yīng)用程序。

·?? 為了指定服務(wù)器的默認(rèn) Web 應(yīng)用程序,在 weblogic.xml application.xml 文件中使用一個(gè)空的 context-root 元素或者一個(gè)值為 "/" 的元素。

·?? 在管理控制臺(tái)中部署應(yīng)用程序之后,對(duì)該應(yīng)用程序的安全策略的修改將會(huì)覆蓋部署描述符中的策略。


重新部署
部署一個(gè)應(yīng)用程序之后,您可以重新部署該應(yīng)用程序本身或者它的一部分。重新部署一個(gè)完整的應(yīng)用程序包括卸載它所有的類(lèi),然后使用修改后的文件再次部署該應(yīng)用程序。在生產(chǎn)中重新部署應(yīng)用程序是一個(gè)很?chē)?yán)肅的任務(wù),它可能影響到性能,所以要仔細(xì)規(guī)劃應(yīng)用程序的更新。
?
如果生產(chǎn)中有一個(gè)Web應(yīng)用程序正在使用中,重新部署將導(dǎo)致WebLogic Server丟失所有活動(dòng)的HTTP會(huì)話。通過(guò)在WebLoigc特定的部署描述符文件(weblogic.xml)中打開(kāi)一個(gè)特殊的屬性,可以還原HTTP會(huì)話。

技巧

·?? 如果您只修改了靜態(tài)文件,那么在不用重新部署整個(gè)應(yīng)用程序的情況下刷新它們是可能的。

·?? 使用命令行選項(xiàng)部分地重新部署已擴(kuò)展的應(yīng)用程序 (weblogic.Deployer … -redeploy <files>…)

·?? 想要在不改變應(yīng)用程序的情況下修改部署參數(shù),需要使用備用的部署描述符。

·?? 為了簡(jiǎn)化在重新部署期間,把應(yīng)用程序存檔文件重新分布到多個(gè) WebLogic Server 實(shí)例上的過(guò)程,需要使用分段模式部署。

·?? 如果管理服務(wù)器不可用,可以以獨(dú)立模式啟動(dòng)具有全部分段應(yīng)用程序的托管服務(wù)器,并使它的功能完全。


企業(yè)應(yīng)用程序
如果客戶端位于相同的企業(yè)級(jí)應(yīng)用程序類(lèi)中,而且可以在企業(yè)應(yīng)用程序中跨所有存檔應(yīng)用程序共享庫(kù), WebLogic 優(yōu)化了對(duì) EJB 的訪問(wèn)。所以,考慮創(chuàng)建企業(yè)存檔文件,而不是獨(dú)立部署相關(guān)的應(yīng)用程序。此外還可以使用企業(yè)范圍內(nèi)的設(shè)置,而不要使用部署描述符中的多項(xiàng)本地設(shè)置。使用 WebLogic 控制臺(tái)在 WebLogic Server 域中創(chuàng)建 JDBC 資源,而不要采用 weblogic-application.xml 技術(shù)。

技巧

·?? WebLogic Server 中,避免把 EJB 存檔文件和相關(guān) Web 應(yīng)用程序部署為單獨(dú)的獨(dú)立應(yīng)用程序。

·?? 當(dāng) Web 組件訪問(wèn)同一個(gè)企業(yè)應(yīng)用程序中的 EJB 組件時(shí),可以提高運(yùn)行時(shí)性能。

·?? 可以把企業(yè)部署為一個(gè)部署單元。

·?? 不要把特定于應(yīng)用程序的類(lèi)或 JAR 文件放入系統(tǒng) classpath ( 避免為了重新加載它們而不得不重新啟動(dòng)服務(wù)器 )

·?? 使用 WebLogic Server 8.1 時(shí),請(qǐng)使用企業(yè)應(yīng)用程序目錄結(jié)構(gòu)中新的 APP-INF/lib APP-INF/classes 目錄,這是為了簡(jiǎn)化實(shí)用程序類(lèi)和實(shí)用程序存檔文件的打包工作。


預(yù)編譯
生產(chǎn)和測(cè)試部署應(yīng)該包括經(jīng)過(guò)預(yù)編譯的 JSP 頁(yè)面和 EJB (使用 weblogic.appc ,如果是早期的 weblogic 版本則使用 weblogic.jspc /weblogic.ejbc )。在您部署應(yīng)用程序之前的很長(zhǎng)一段時(shí)間內(nèi),它們可以捕捉該應(yīng)用程序的錯(cuò)誤。此外,離線編譯可以驗(yàn)證部署描述符與當(dāng)前規(guī)范的兼容性。部署已編譯的應(yīng)用程序可以縮減部署時(shí)間和接下來(lái)的服務(wù)器重啟時(shí)間。用在開(kāi)發(fā)人員的工作站上的開(kāi)發(fā)部署可以使用動(dòng)態(tài)編譯。

技巧

·?? 為了在應(yīng)用程序部署期間或服務(wù)器啟動(dòng)期間預(yù)先編譯 JSP 文件,在 weblogic.jar 中啟用預(yù)編譯參數(shù)。

·?? 在生產(chǎn)環(huán)境中,要禁止運(yùn)行時(shí)的頁(yè)面檢查和重新編譯,需要把 pageCheckSeconds 設(shè)定為 -1

·?? 您可以使用 weblogic.appc weblogic.ejbc ( 不再使用 ) 在服務(wù)器 VM 之外編譯 EJB 。這可以減少隨后服務(wù)器的重啟時(shí)間。

·?? 在腳本中使用 weblogic.Deployer 實(shí)用程序,或者它相關(guān)的 Ant 任務(wù) wldeploy ,以便在生產(chǎn)環(huán)境中使部署自動(dòng)化。


部署描述符編輯
只有當(dāng)重新部署應(yīng)用程序時(shí),修改 J2EE 應(yīng)用程序的部署描述符才會(huì)生效。 WebLogic 管理控制臺(tái)提供一種方法來(lái)修改某些部署描述符屬性,而不用重新部署應(yīng)用程序。當(dāng)域以開(kāi)發(fā)模式運(yùn)行時(shí),為了利用這項(xiàng)功能,您必須在已展開(kāi)的目錄結(jié)構(gòu)中部署應(yīng)用程序(非存檔格式)。
?
為了在部署之后修改應(yīng)用程序的描述符值(以展開(kāi)的格式),執(zhí)行以下操作:Web Application Module > Your Application > Configuration 選項(xiàng)卡 > Descriptor選項(xiàng)卡。

技巧

·?? 使用 WebLogic Server 提供的工具生成和編輯 XML 部署描述符。

·?? WebLogic Builder 生成描述符;它包括一個(gè)用于編輯描述符的接口。

·?? DDInit 是一個(gè)命令行實(shí)用工具,用于為 WebLogic Server 應(yīng)用程序生成部署描述符。

·?? ddcreate 是一個(gè) Ant 任務(wù),可以用于為企業(yè)應(yīng)用程序創(chuàng)建部署描述符。


EJB
無(wú)狀態(tài)會(huì)話 EJB 自由池可以提高性能和吞吐量,因?yàn)?/span> bean 是在服務(wù)器啟動(dòng)期間或部署期間被創(chuàng)建的。 WebLogic Server 使用 bean 實(shí)例的緩存來(lái)提高有狀態(tài)會(huì)話 EJB 的性能。該緩存在內(nèi)存中存儲(chǔ)活動(dòng)的 EJB 實(shí)例,這樣它們馬上就可以為客戶端請(qǐng)求所用。
?
使用應(yīng)用程序級(jí)/聯(lián)合緩存將導(dǎo)致碎片減少,而且內(nèi)存和堆空間的利用率更高。但是應(yīng)用程序級(jí)/聯(lián)合緩存的使用僅限于企業(yè)應(yīng)用程序中的實(shí)體EJB。對(duì)于要求高吞吐量的應(yīng)用程序來(lái)說(shuō),要使用bean級(jí)別的緩存。bean級(jí)緩存是高效的,因?yàn)槿蝿?wù)們不用競(jìng)爭(zhēng)對(duì)聯(lián)合緩存中一個(gè)控制線程的控制權(quán)。

為了在應(yīng)用程序中使用WebLogicEJB組件提供的調(diào)用優(yōu)化,把<enable-call-by-reference>設(shè)置為true
?
在同一個(gè)企業(yè)應(yīng)用程序中為要訪問(wèn)的EJB編寫(xiě)本地接口,也可以達(dá)到相同的目的。
?
實(shí)體EJB的并發(fā)策略包括:

數(shù)據(jù)庫(kù):
遵從數(shù)據(jù)庫(kù)可以提高吞吐量(對(duì)于 EJB1.1 2.0 來(lái)說(shuō),這是默認(rèn)的也是建議使用的機(jī)制)。

互斥的:
避免死鎖;只有當(dāng)在非群集的服務(wù)器上要求高度一致性時(shí)才使用它。

樂(lè)觀的:
在事務(wù)期間, EJB 容器或數(shù)據(jù)庫(kù)中不會(huì)保持鎖定。但是 EJB 容器確保事務(wù)正在更新的數(shù)據(jù)沒(méi)有被修改。

只讀的:
事務(wù)結(jié)束時(shí),容器不會(huì)試著保存 bean 的狀態(tài);對(duì)不會(huì)對(duì)永久性數(shù)據(jù)做任何修改的 EJB 使用這一點(diǎn)。借助只讀策略,使用 <read-time-out-seconds> 使容器中緩存的 bean 數(shù)據(jù)變得無(wú)效;當(dāng)出現(xiàn)超時(shí)時(shí),這會(huì)更新永久性存儲(chǔ)器中數(shù)據(jù)。

技巧

·?? 考慮執(zhí)行線程的數(shù)目,以便配置自由池中 bean 的最大數(shù)目。

·?? 要限制有狀態(tài)會(huì)話 EJB 使用的內(nèi)存,需要設(shè)置能夠駐留在緩存中的 bean 的最大數(shù)目 (max-beans-in-cache)

·?? 緩存過(guò)小會(huì)導(dǎo)致頻繁的激活和鈍化。

·?? 緩存過(guò)大會(huì)導(dǎo)致內(nèi)存浪費(fèi)。

·?? 當(dāng)達(dá)到理想的超時(shí)時(shí)間長(zhǎng)短之后, LRU 算法會(huì)讓 bean 保持在鈍化狀態(tài)。

·?? 為了避免鈍化有狀態(tài)會(huì)話 EJB 所帶來(lái)的相關(guān)開(kāi)銷(xiāo),使用 Not Recently Used (NRU) 算法。

·?? EJB 的本地接口提供對(duì)服務(wù)器端 EJB 客戶端的最優(yōu)訪問(wèn)。

·?? 聯(lián)合緩存使管理員能夠在 weblogic-application.xml 中只調(diào)整一塊緩存,而不是多塊緩存。

·?? 使用容器托管事務(wù)的消息驅(qū)動(dòng) bean 必須使用 XA 連接工廠。


安全性
永遠(yuǎn)不要對(duì)生產(chǎn)服務(wù)器使用開(kāi)發(fā)模式;開(kāi)發(fā)模式會(huì)放寬域中所有服務(wù)器的安全限制。使用兼容性安全性時(shí),禁用生產(chǎn)中的客人登錄,這樣就可以使用客人登錄來(lái)訪問(wèn) WebLogic Server 中的 WebLogic 資源。
?
創(chuàng)建安全策略時(shí),如果通過(guò)繼承得到的策略語(yǔ)句出現(xiàn)在Policy Editor頁(yè)面的Inherited Policy Statement框中,新的策略會(huì)覆蓋它們。想要修改在J2EE部署描述符中定義的安全策略,需要進(jìn)行重新部署;在管理控制臺(tái)中修改內(nèi)嵌的LDAP策略是動(dòng)態(tài)的。把另外的管理用戶配置為諸如admindeployer monitor operator這樣的角色。
?
SerializedSystemIni.dat包含對(duì)域中密碼進(jìn)行處理以后得到的雜亂信息;確保您在安全的地方存儲(chǔ)了這個(gè)文件的拷貝。只能授予WebLogic系統(tǒng)管理員帳號(hào)對(duì)SerializedSystemIni.dat的讀權(quán)限。如果您丟失了管理密碼,而且沒(méi)有以boot.properties文件的形式保存啟動(dòng)身份,那么您不能重新啟動(dòng)服務(wù)器。

技巧

·?? boot.properties 文件中保存對(duì)有權(quán)啟動(dòng) WebLogic Server 的用戶進(jìn)行加密后的啟動(dòng)身份。

·?? BEA 建議使用安全角色(而不是用戶或組)來(lái)保護(hù) WebLogic 資源;首先把用戶指派給組,然后創(chuàng)建角色語(yǔ)句。

·?? 不要以 root 權(quán)限安裝或運(yùn)行 WebLogic Server 。如果您必須綁定到一個(gè)要求授權(quán)的端口,請(qǐng)?jiān)?/span> WebLogic 機(jī)器配置中使用 post-bind UID post-bind GID

·?? 設(shè)置 WebLogic 安裝和應(yīng)用程序目錄的所有權(quán),只允許運(yùn)行服務(wù)器的用戶帳戶訪問(wèn)它們。


恢復(fù)管理員密碼
使用默認(rèn)的身份認(rèn)證程序時(shí),如果您尚未修改全局的管理角色(默認(rèn)情況下被授給管理員組),您可以恢復(fù) WebLogic 域中的管理員密碼。
<span style="FONT-SIZE: 9pt; COLOR: black; F