創(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è)UID或GID,以便在計(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 statement和callable statement來(lái)提高性能。重用prepared statement和callable 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)用程序中使用WebLogic為EJB組件提供的調(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)的。把另外的管理用戶配置為諸如admin、deployer、 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