歡迎光臨
每天分享高質量文章

通向架構師的道路(第八天)之 Weblogic 與 Apache 的整合與調優

(點擊上方公眾號,可快速關註)


來源:袁鳴凱 ,

blog.csdn.net/lifetragedy/article/details/7751059

一、BEAWeblogic的歷史

BEA WebLogic是用於開發、集成、部署和管理大型分佈式Web應用、 網絡應用和資料庫應

用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的

開發、集成、部署和管理之中。

BEA WebLogic Server擁有處理關鍵Web應用系統問題所需的性能 、可擴展性和高可用性。

與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogicServer可為部署適應性個性化

電子商務應用系統提供完善的解決方案。

BEA WebLogic Server具有開發和部署關鍵任務電子商務Web應用系統所需的多種特色和優

勢,包括:

1)      領先的標準

對業內多種標準的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實

施更為簡單,並且保護了投資,同時也使基於標準的解決方案的開發更加簡便。

2)      無限的可擴展性

BEA WebLogicServer以其高擴展的架構體系聞名於業內,包括客戶機連接的共享、資源

pooling以及動態網頁和EJB組件群集。

3)      快速開發

憑藉對EJB和JSP的支持,以及BEAWebLogic Server 的Servlet組件架構體系,可加速投

放市場速度。這些開放性標準與WebGainStudio配合時,可簡化開發,並可發揮已有的技能,

迅速部署應用系統。

4)      部署更趨靈活

BEA WebLogicServer的特點是與領先資料庫、操作系統和Web服務器緊密集成。

5)      關鍵任務可靠性

其容錯、系統管理和安全性能已經在全球數以千記的關鍵任務環境中得以驗證。

6)      體系結構

BEA WebLogicServer是專門為企業電子商務應用系統開發的。企業電子商務應用系統需

要快速開發,並要求服務器端組件具有良好的靈活性和安全性,同時還要支持關鍵任務所必需

的擴展、性能、和高可用性。BEAWebLogic Server簡化了可移植及可擴展的應用系統的開發,

併為其它應用 系統和系統提供了豐富的互操作性。

憑藉其出色的群集技術,BEAWebLogic Server擁有最高水平的可擴展性和可用性。BEA

WebLogic Server既實現了網頁群集,也實現了EJB組件 群集,而且不需要任何專門的硬體或

操作系統支持。網頁群集可以實現透明的複製、負載平衡以及表示內容容錯,如Web購物車;

組件群集則處理複雜的複製、負載平衡和EJB組件容錯,以及狀態物件(如EJB物體)的恢復。

無論是網頁群集,還是組件群集,對於電子商務解決方案所要求的可擴展性和可用性都是至關

重要的。共享的客戶機/服務器和資料庫連接以及資料快取和EJB都增強了性能表現。這是其它

Web應用系統所不具備的。

二、Weblogic對各jdk版本的支持

這個對jdk版本的支持一定要牢牢記住:

比如說你手上有一個bea weblogic10.0,你拿它佈署了只有jdk1.6才能解釋的東西,就不要怪weblogic啦,而且沒有為什麼的,到時不支持就是不支持。

反過來:

說你機器上裝的是jdk1.6,你裝個weblogic 8.x,嘿嘿,一樣不支持。

Weblogic從8.x後被Oracle收購了,成了和OracleDatabase一樣的可以在Oracle官網上免費下載的軟體,而且不是那種trial version或者是development version,是真正的企業版,只要你拿它做實驗、個人研究、玩不用在任何商業收費行為,是沒有任何問題的,因此Weblogic從9.0後各版本可以從Oracle官網上免費下載,而且可以無限期使用沒有license.jar這個東西再困擾你了(下載Oracle Weblogic)。

三、Weblogic的安裝

3.1 32位的weblogic

我們在Windows環境下一般安裝32位的weblogic:

它一般是一個exe檔案,雙擊即可安裝。

3.2 64位的weblogic

如果你的機器是64位的操作系統或者是Linux/Unix操作系統,一般下載下來後都是一個.jar檔案:

你安裝時需要鍵入java –d64 –jar wls1034_generic.jar。

如果是32位可以不需要這個-d64的引數,如果是64位機器一定一定一定要記得加這個-d64,要不然。。。。。。嘿嘿,它在安裝界面出來後會拋一個out of memory的錯。。。。。。偶暈!

3.3 安裝

確保你的JAVA_HOME變數與path里包含有%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。

如果是Linux環境,你的JAVA_HOME與path的設置如下:

export $JAVA_HOME=/opt/jdk/java6

export $path=$path:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

環境設置好後在weblogic安裝時會找到你系統的JDK,我在此建議大家在安裝Weblogic時儘量用標準的Oracle Sun的JDK,當然Weblogic也自帶jdk,由於都是Oracle的產品,因此用Oracle Sun的JDK最標準。

將“我希望通過My Oracle Support接收安全更新”項前的勾disable掉,然後在彈出對話框中選”Yes”。

我們選定製安裝

我們只安裝Weblogic Server,暫不安裝OracleCoherence,在以後的網格與雲里會講這個Oracle Coherence。

我們不要使用Weblogic自帶的jdk也不用它自帶的jrockit,我們點下麵的[瀏覽]按鈕,選中本地的jdk的主目錄(即OracleSun的標準JDK)。

有人說用JRockit要吧獲得更好的性能,還有人建議在32位機下使用JRockit可以突破jvm在32位機下只能使用到2GB記憶體的限制。。。。。。

如果真要用大記憶體還不如使用64位機呢,真折騰,而且JRockit里的jvm優化引數調優和標準的SUN的JDK是不同的。

註意這邊的路徑名,確保不要帶有空格,下劃線等特殊字符,java對特殊字符很忌諱的,有時一個編譯錯誤不知道為什麼,就是因為java home帶有空格或者下劃線一類的,你的目錄名乾凈點,比如說:

有的人安裝java就用預設安裝路徑,什麼c:\programfiles\java\jdk1.6.3.2什麼什麼之類的。

你直接一個c:\jdk6這樣一個名字,多乾凈?

這邊再多啰嗦幾句,tomcat的安裝路徑也是這樣的,你直接d:\tomcat1, d:\tomcat2多乾凈,哪要這麼多什麼d:\apache_jakarta_tomcat6.0.12這樣的東西啊,對吧!

選否。

這裡隨便。

最後review一下,開始安裝了。

裝好了,把“運行Quickstart”選項前的勾disable掉,我們可以看到windows選單里有了我們的weblogic的選單了,如下圖所示:

四、使用Weblogic

還記得我們的Tomcat如何佈署我們的WAR應用程式嗎?把WAR包或者是WAR目錄結構扔到tomcat的webapps目錄下,對吧!

Weblogic的webapps目錄被稱為domain,因此我們在裝完weblogic後如果需要建立自己的webapp,就需要建一個domain。

4.1 建立domain

在我們的Windows選單點選擇Oracle Weblogic->Weblogic Server11gR1->Tools->Configuration Wizard

這個是Weblogic的admin console的登錄信息,即weblogic裝完後有一個網頁版的主控制台,用於配置和佈署我們的web app的應用的,它一般以:http://ip:7001/console 這樣的形式登錄,登錄時需要用戶名和密碼,就如同tomcat的http://localhost:8080/manager/html這個console一樣,我們的用戶名叫”weblogic”,我們的密碼就叫”password_1”吧。

我們將我們這個用於實驗的domain名取成mydomain。

這邊來了,還記得我們在“(第四天)之Tomcat性能調優-讓小貓飛奔”說到過的jvm的引數之:java –server與java –client的區別嗎?

  • 這邊的”開發樣式”就是你的weblogic將以java –client樣式啟動;

  • 如果你選的是”生產樣式” 那麼你的weblogic將以java –server樣式啟。

選”生產樣式”點”下一步”。

這邊我們一個不選,因為我們先不做weblogic的集群配置。點”下一步”。

點[創建]按鈕。

創建成功。點[完成]結束domain的配置。

Look,這個就是我們剛纔創建的domain,現在開始讓我脫離windows選單來用命令列啟動、停止weblogic吧,因為在大型應用中一般weblogic或者是IBMWebsphere都是運行在Unix小型機上或者是64位的Linux機器上的,因此大家要開始熟悉命令操作了。

4.2.1 啟動weblogic前的準備工作

Weblogic的啟動一般是呼叫”weblogic安裝目錄\yourdomain\”目錄下的startWebLogic.cmd或者是startWebLogic.sh(UNX/LNX下)來啟動weblogic的。

而startWebLogic會選呼叫”weblogic安裝目錄\yourdomain\bin\”目錄下的setDomainEnv.cmd或者是setDomainEnv.sh(UNX/LNX下)來初始化環境變數的。

先別急著啟動,啟動前我們來做一些優化

我們使用檔案編輯工具打開setDomainEnv.cmd檔案,搜索:MEM_ARGS這個關鍵字,可以找到下麵這麼一大陀(這是Weblogic11里的內容,在10里不一樣的)

set WLS_HOME=%WL_HOME%\server

 

if “%JAVA_VENDOR%”==”Sun” (

 

         set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m

 

         set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m

 

) else (

 

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

 

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

 

)

 

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%

 

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%

 

if “%JAVA_USE_64BIT%”==”true” (

 

         set MEM_ARGS=%MEM_ARGS_64BIT%

 

) else (

 

         set MEM_ARGS=%MEM_ARGS_32BIT%

 

)

 

set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m

 

set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m

 

if “%JAVA_USE_64BIT%”==”true” (

 

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%

 

) else (

 

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%

 

)

 

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

 

set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m

不難看懂,很簡單,我們是32位的機器,因此我們就在32位所對應的jvm的設置里做一些調整。

1)      我們先把32位下的PermSize從原來的48m改成128m,把32位下的MaxPermSize從128m改成256m

set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m

 

if “%JAVA_USE_64BIT%”==”true” (

 

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%

 

) else (

 

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%

 

)

 

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

 

set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m

2)      更改jvm 的heap size

if “%JAVA_VENDOR%”==”Sun” (

 

set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m

 

set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m

 

) else (

 

set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

 

set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

 

)

上面這段根據你們自己的實際情況將WLS_MEM_ARGS_32BIT=後的值進行修改。

註意:

  • Xms與Xmx設成一樣大小

  • 修改Xmx值前請先用java –Xmx你想要的sizem –version進行測試

我們這個例子里就暫都改成512m就夠了。一定不要在數值後面漏打”m”啊!

if “%JAVA_VENDOR%”==”Sun” (

 

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

 

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

 

) else (

 

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

 

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

 

)

找到下麵這一段:

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%

現在可以加入我們的jvm調優引數了,如下:

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT% -Dweblogic.threadpool.MinPoolSize=25 -Dweblogic.threadpool.MaxPoolSize=1000 -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC

 

-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled

 

-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods

 

-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true

 

  

 

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT% -Dweblogic.threadpool.MinPoolSize=25 -Dweblogic.threadpool.MaxPoolSize=1000

 

-Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC

 

-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled

 

-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods

 

-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true

除了:

  • -Dweblogic.threadpool.MinPoolSize=25

  • -Dweblogic.threadpool.MaxPoolSize=1000

其它的引數均已經在“(第四天)之Tomcat性能調優-讓小貓飛奔->2.2 Tomcat啟動行引數的優化”中詳細擅訴過了。

那麼上面這兩個值是什麼意思?

這兩個值就是weblogic的“應用程式執行緒池”,它的大小決定了你的應用程式服務器的“吞吐量”或者說是“容量”,以前在Weblogic中可以通過登錄weblogic 的http://yourip:7001/console後顯視的去做調整,而在weblogic9.x後這兩個值變成了隱視的了,因此很多人不知道如何去調Weblogic里的執行緒池的大小,是因為根據在console界面中找不到這兩個值來讓你修改的,所以我們在weblogic的啟動引數中,可以手工的加上,如果你不加也行,weblogic有一個預設的執行緒池的大小的。一般為最小25最大200。依據你的服務器的性能可以加大這個值。

4.2.2 啟動weblogic

鍵入上述的命令後回車

Weblogic啟動控制台會提示要你輸入用戶名和密碼,即我們在“創建domain”時輸入的weblogic/password_1。

我們輸入相應的用戶名和密碼後,一直看到控制台輸出這樣一行信息後,即代表我們的weblogic啟動正常無誤了。

4.2.3 如何讓Weblogic每次啟動時不用再輸入用戶名和密碼

每次啟動Weblogic時都要輸入用戶名和密碼,假設我的Weblogic是自動隨著我的服務器的啟動而啟動,那麼如果此時因為是無人值守,鬼才來輸這個用戶名和密碼啊,是不是?

所以,我們先文本編輯工具先來製作一個檔案,叫boot.properties,內容很簡單,如下所示:

username=weblogic

password=password_1

然後我們來到我們的domain的目錄下

如:”D:\oracle\Middleware\user_projects\domains\mydomain\servers\AdminServer”目錄下,手工建一個security的目錄,將剛纔新建的boot.properties檔案,拷入此目錄後,重啟weblogic。

此時你會發覺,weblogic再也不會提示要求你輸入weblogic管理台的用戶名和密碼了,等到啟動成功後,即看到這樣的輸出行:

我們來到” D:\oracle\Middleware\user_projects\domains\mydomain\servers\AdminServer\security”目錄,打開剛纔拷入的boot.properties,它的內容已經自動變成了下麵這樣了:

#Thu Jul 19 11:54:14 CST 2012

password={AES}anBOrQK1z+ErQKBJSKxlN1t2qv+hxmhyzhQW6S4WnLQ\=

 

username={AES}D2z8M4xrI3E981Q6u4cfbgAMlDcd23LVgLxvTxARc6k\=

Weblogic把它給加密了,因此只有裝Weblogic的那個人即SystemAdmin才真正知道Weblogic控制台的登錄信息,這樣就很安全了。

4.2.4 配置Weblogic的資料源

在Weblogic運行的狀態下我們用ie進入Weblogic的adminconsole,輸入http://localhost:7001/console

輸入我們在創建domain時的用戶名與密碼

記得要把“鎖定並編輯”變成“釋放配置”的狀態,要不然,你們看,右邊的資料源的編輯按鈕全部是灰色的。

點[新建]按鈕選“一般資料源”。

我們使用oracle來配置我們的jdbc資料源。

填入相應的資料庫的連接信息下一步下一步到如下這個界面:

把資料源需要起作用的服務器即“target”要選中,因為在Weblogic里可以用一個控制台控制多個Server,那麼你的資料源是針對哪台server起作用呢?你需要告訴Weblogic。

點擊[完成]

4.2.5 調優Weblogic的資料源

記得點擊控制台左上角的“激活並儲存編輯修改”,要不然剛纔所做的操作全部作廢,儲存後你會看到如上的信息。

點擊我們剛纔新建的資料源,”jdbc_cbbsds”

進入此界面後點擊左上角的“鎖定並編輯”按鈕,右邊就是我們需要設置的值了。我們對“連接池”進行調整:

  • 初始容量

即最小資料連接數

  • 最大容量

最大資料連接數

  • 容量增長

每次增加的連接數

  • 陳述句高速緩衝類

為快取選擇 least-recently-used (LRU) 演算法;這將從快取中刪除很少使用的陳述句。

還有一個值為Fixed。

LRU演算法在有新的陳述句到來時,將最不經常被用得陳述句調整齣快取。FIXED演算法為先進先出的演算法。

一般應用我們使用LRU。

  • 陳述句高速緩衝大小

增加Statement Cache Size對於大量使用PreparedStatement物件的應用程式很有幫助,WebLogic能夠為每一個連接快取這些物件,此值預設為10。在保證資料庫游標大小足夠的前提下,可以根據需要提高Statement Cache Size。比如當你設置連接數為25,Cache Size為10時,資料庫可能需要打開25*10=250個游標。

那麼我們的oracle資料庫預設最大游標假設為1000,我們最大連接數設了25,那麼這個statement cache的值就應該為:40,因為25*40=1000。

這個值不能過大,如果是開發環境上可以把這個值設為0,在生產環境上需要根據你oracle的max cursor數量進行實際設定,不是說越大越好的,千萬不要拍腦袋啦!!!

註意:

和jvm的heap size一樣,將“初始容量”與“最大容量”設成相等,根據oracle預設最大支持150個processor,那麼oracle預設最大的連接數為max processor*1.1即165,那麼我們就給最大25最小25就夠了,必竟我們只是一個測試。

配完上面的引數後點一下儲存,然後我們點“高級”這個鏈接。

高級有很多,我們一項項來過。

  • 保留時測試連接

請把此項打上勾。

我們的資料庫連接池會不斷的掃描我們的jdbc的連接使用情況,當發覺不用的jdbc連接時會“回收”掉它,因此你必須把這個選項的勾打上,要不然,weblogic的資料庫連接池不會去掃描你的不用的連接或者長時間不活動的連接,此選項將有助於你系統的穩定性。比如說:有時我們碰到一些忘關的連接或者廢棄的連接,那麼weblogic將會自動為我們“回收”這些連接,以使得資料庫連接池被充分利用。

  • 測試頻率

這個值與上面的“保留時測試連接”是關聯的,這個值預設為120秒,即2分鐘,weblogic會產生一條探測陳述句“SQL SELECT 1 FROM DUAL”來探測你的oracle資料庫中的連接,這個值絕對不能太小比如說:60秒,或者更有甚者設了個5秒,那麼你的weblogic會不停的向oracle發送“SQL SELECT 1 FROM DUAL”陳述句,並且造成大量的inactive狀態的資料庫連接,最後甚至把你的oracle資料庫給活活搞死,搞死搞死。。。。。。而且是“挺屍”就是資料庫服務器動也動不了了,真的,不信你試試!J

一般在production環境上,如果相對穩定,可以把這個值,設大點,比如說:15分鐘,或者20分鐘探測一次。

  • 測試表名稱

就是“探測”資料庫的陳述句,我們就用它的預設的,挺好,不變

  • 初始化 SQL

保持預設,我們這邊沒有特殊的初始化的步驟。

  • 重試創建連接的頻率

嘗試建立資料庫連接的間隔秒數。

如果不設置此值,則在資料庫不可用的情況下,創建資料源的操作將失敗。如果已設置此值且在創建資料源時資料庫不可用,則在您指定的秒數之後,WebLogic Server 將重新嘗試在池中創建連接,並會不斷嘗試創建連接,直到創建成功。

如果設置為 0,則將禁用連接重試。

我們此處就保持為0,沒有特殊需求好failout的相關的需求(這個要根據客戶的需求來定的)。

  • 登錄延遲

創建每個物理資料庫連接前的延遲秒數。此延遲支持不能快速連續處理多個連接請求的資料庫服務器。

在初始資料源創建及資料源生命周期內,每當創建物理資料庫連接時都會有此延遲。

我們保持它為0。

  • 非活動連接超時

保留連接處於不活動狀態的秒數,該秒數過後WebLogic Server 將收回該連接並將其釋放回連接池。

可以使用“非活動連接超時”功能收回泄漏的連接 – 未由應用程式顯式關閉的連接。請註意,不能使用此功能來代替正常關閉連接。

如果設置為 0,則將禁用此功能。

如果上面的“保留時測試連接”、“測試頻率”,“測試表名稱”沒有設置或者是“保留時測試連接”沒有勾選,那麼這個選項是沒有用處的,因為它就是我們上面提到的,Weblogic會自動為我們釋放一個超時的連接,這個超時要和oracle資料庫中的sql_time_out一致,比如說:60秒,我們回收一個超時了的inactive的連接。

這個值的設定對我們資料庫的穩定性和性能也有著很大的影響。

  • 最大等待連接數

等待保留資料源的連接池中的連接時會阻塞執行緒的最大併發連接請求數。

來看它的預設值“2147483647”,這邊可千萬不要用預設值啊,要不然你的資料庫也一樣會在出現阻塞或者是死鎖時活活被搞死,搞死搞死。。。。。。而且是“挺屍”,為啥,一個阻塞了沒事,這下好,一個阻塞了,然後它允許後面的連接繼續進,進啊進啊進,你人又不可能天天時時分好盯著個oracle的監控端看著它,好了,進到2147483647個連接時,資料庫不死了才怪呢。

一般太平點的,給個合理的數量就可以了,比如說100或者是200,不要超過oracle資料庫提供的最大max session數就可以了。

  • 連接保留超時

保留連接池中的連接的呼叫超時之前經過的秒數。

如果設置為 0,則呼叫永遠不會超時。

如果設置為 -1,則呼叫會立即超時(對資料庫來說,這個值是最安全的,SQL陳述句一被呼叫就超時,然後經過上面的“非活動連接超時”後,會被weblogic的資料庫連接池給回收。

  • 陳述句超時

此時間後當前正在執行的陳述句將超時。

StatementTimeout依賴於底層 JDBC 驅動程式支持。WebLogic Server 使用 java.sql.Statement.setQueryTimeout() 方法將指定的時間傳遞給 JDBC 驅動程式。如果 JDBC 驅動程式不支持此方法,可能會引發異常錯誤並導致忽略超時值。

值為 -1 時禁用此功能。

值為 0 表示陳述句不會超時。

最小值:-1

最大值:2147483647

註:

下麵三個選項保持預設選擇,沒有特殊應用時不需要設置。

  • 忽略正在使用的連接

即便仍在使用從池獲取的連接,也能夠將資料源關閉。

  • 固定到執行緒

PinnedToThread 是一個能夠改善性能的選項,它啟用執行執行緒以保持已入池的資料庫連接,即使在應用程式關閉邏輯連接之後。

啟用 PinnedToThread 後,WebLogicServer 將在應用程式首次使用某個執行執行緒保留連接時將連接池中的一個資料庫連接固定到此執行緒。當應用程式使用完此連接並呼叫 connection.close() (此方法在其他情況下會將連接傳回到連接池) 時,WebLogic Server 會將該連接保留給執行執行緒,而不會將其傳回連接池。當此後某個應用程式使用相同的執行執行緒請求連接時,WebLogic Server 將提供此執行緒已保留的這個連接。

使用 PinnedToThread,當多個執行緒嘗試同時保留一個連接時,連接池上不會發生鎖定衝突,對於試圖在有限個數的資料庫連接中保留同一個連接的執行緒,也沒有衝突。

如果應用程式使用相同的執行執行緒同時保留連接池中的多個連接,WebLogic Server 將創建附加的資料庫連接並同樣將它們固定到此執行緒。

  • 已啟用刪除受影響的連接

指定在應用程式使用底層供應商連接物件之後是否從連接池中刪除連接。

如果禁止刪除已占用的連接,必須確保該資料庫連接適合由其他應用程式重用。

設置為真 (預設設置) 時,應用程式關閉邏輯連接後不會將物理連接傳回給連接池。將關閉並重新創建此物理連接。

設置為假時,應用程式關閉邏輯連接後,物理連接將傳回到連接池並可由該應用程式或其他應用程式重用。

全部設置完了,不要忘了點頁面最下端的[儲存]按鈕,並且點左邊選單上方的[激活並更改]按鈕,要不然你剛纔的一切設置均作廢。

在儲存後我們來點“監視”這個tab

點“測試”

Look, 測試成功。重啟Weblogic(只有重啟Weblogic才會使得“高級”配置里的引數生效)。

怎麼重啟:

Windows下

直接ctrl+c,然後重新啟動

Linux下

儘量使用stopWebLogic.sh或者使用ps –ef |grep java,查到weblogic所屬的行程,然後使用:

kill -9 行程號

來殺,這個太暴力了!!!

4.2.6 部署web應用

Weblogic是真正的J2EE App Server,它不僅可以佈署WAR應用,還可以佈署EAR應用包括EJB,而Tomcat是做不到的,它只能佈署WAR應用,如果要佈署EAR或者EJB需要安裝和配置額外的插件。

確保你的web應用中web.xml里系結的資料源的jndi名與weblogic里設定的資料庫連接池的jndi名一致

 

                   oracle db

 

                   jdbc/cbbsds

 

                   javax.sql.DataSource

 

                   Container

 

                   Shareable

 

你佈署的可以是一個“打碎了的符合war格式的目錄”也可以是一個war包。

點左邊選單的“佈署”,然後點“鎖定並編輯”,然後右邊的按鈕就可以用了。

此時,點[安裝],定位到你的要佈署的WAR

點下一步。

然後出錯了,嘿嘿!

打開WAR里的WEB-INF\下的web.xml看啊看,看到這一行:

 

         /myPageTag

 

         /WEB-INF/tld/myPageTag.tld

 

哦,知道了,weblogic的jstl校驗很嚴格,原來在tomcat里工程跑的那叫一個歡呀,跑到weblogic里了,把這段改成下麵這樣的形式吧:

 

         

 

                   /myPageTag

 

                   /WEB-INF/tld/myPageTag.tld

 

         

 

看到區別沒有?在外要多一對,嘿嘿,仔細,仔細!

改完後儲存web.xml,重新回weblogic佈署。

然後下一步下一步,下啊下啊下。。。再往下,到了這一步:

點[儲存]。

點“激活更改”。在“產品樣式(production mode)”下,每次作過什麼動作都必須“激活更改”一下,才能生效,一定記住,下次就再也不提了。

佈署好後,看這個狀態,這邊的狀態是“準備就緒”,準備就緒不代表此應用可以用,要使它的狀態變成激活狀。

選中此應用前的checkbox

選“為所有請求提供服務”。

選“是”。

就代表部署成功了,你此時可以打開一個IE輸入:http://localhost:7001/cbbs,登錄後一切正常,Weblogic下WAR應用佈署成功。

 

五、整合Weblogic與Apache

還記得我在第一天的“之Apache整合Tomcat”中講到過,apache和tomcat是通過mod_jk來派發java請求給tomcat的嗎?那麼一樣,weblogic是通過mod_wl_apache的版本號.so來做同樣的事。

從我們的FTP中可以得到這些.so檔案(也可以直接上oracle官網上下這些.so檔案,免費公開的),我們來看。

1)      拷貝mod_wl_22.so檔案至apache的安裝目錄下的modules目錄,如我的是:D:\tools\httpd\modules。

2)      打開httpd.conf檔案,還記得我們在第一天中的httpd.conf檔案嗎?找到,在它的上面,敲一個回車,加入下麵這一陀東西

LoadModule weblogic_module modules/mod_wl_22.so

 

 

   WebLogicHost localhost

 

   WebLogicPort 7001

 

   MatchExpression /cbbs/WEB-INF

 

   MatchExpression /cbbs/*WEB-INF

 

   MatchExpression /cbbs/*.action

 

   MatchExpression /cbbs/servlet/*

 

   MatchExpression /cbbs/*.jsp

 

   MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.*

 

   MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/*

 

   WLLogFile logs/wlproxy.log

 

看這個MatchExpression,還記得mod_jk里的JKMount嗎?到了Weblogic和apache映射就成了MatchExpression了。

另:

在production環境上應該WLLogFile logs/wlproxy.log這一句註釋掉,避免較多的log影響服務器的性能。

註意在兩個地方要把index.jsp放在首要位置:

1)       Web.xml檔案中

 

           index.jsp

 

2)       Httpd.conf檔案中

DirectoryIndex index.jsp index.html index.htm

啟動ie,輸入:http://shnlap93:7001/cbbs/

再來看weblogic控制台:

Html等靜態內容被apache解釋了,而java的內容被weblogic解釋了,這就是apache+weblogic。

後一天,我們將講述利用apache+weblogic來實現集群,見識一下商業級App Server的強大吧!

系列


看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,提升Java技能

赞(0)

分享創造快樂