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

通向架構師的道路(第八天)之 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)

分享創造快樂