1. 程式人生 > >weblogic 之web伺服器部署及相關問題整理

weblogic 之web伺服器部署及相關問題整理

寫一些不同領域的博文,希望我的博文或者經驗對不同層次的你有所幫助!下面寫一篇關於java web 應用伺服器主題的博文!相信大家在剛接觸java web 這個方向的時候,做的第一個關於java web的專案的時候使用的第一個web 應用伺服器就是(湯姆貓)Tomcat,這個貓一直伴隨著從事java web開發的你。相信對於它的配置我再熟悉不過了。那麼大家是否已經對湯姆貓應用“疲倦”了呢???下面跟大家介紹一款商業版web 應用伺服器【weblogic】,.也歡迎大家進入群【376447127】與我交流網際網路技術。

關於weblogic的安裝步驟我在這裡就不過多廢話了,直接進入正題:

安裝weblogic11g r1完成之後,如下圖:

安裝目錄說明(如圖)(一些常配置目錄簡介):

下面我們開始走進weblogic,啟用weblogic服務,和Tomcat類似,執行自己的啟用指令碼!這些指令碼設定web伺服器的一些啟用引數以及需要的環境變數引數,這些啟動指令碼的配置對後期問題處理也至關重要。

下面介紹weblogic的幾種常見的部署專案的方式:

方式一:自動部署(看weblogic的目錄結構的英文意思就可大致明白每個目錄下檔案的的作用)

在weblogic的每個域中,即weblogic主目錄\Middleware\user_projects\domains\xx域\autodeploy\  路徑下的autodeploy目錄其實就相當於Tomcat的的webapps目錄,只要我們把自己做好的專案放在該目錄即可。這樣就可以將我們的 專案自動部署到weblogic中了,不需要到weblogic console中進行手動配置。和Tomcat的webapps類似。

注意事項
1)自動部署適合開發階段使用,不建議在生產環境中應用
2)將應用copy到autodeploy中,在weblogic的domain的控制檯中,進入“域結構”->“部署”,如果未發現自動部署記錄,此時,你可以檢視weblogic的logs資料夾下面的日誌(一般情況下可能是應用問題導致部署失敗)

方式二:域控制檯部署(weblogic提供圖形介面的部署方式,在控制檯同時可以進行一些複雜伺服器配置型,當然我們貓也有這樣圖形介面部署,但相對簡單)

這個方式部署就跟安裝軟體一樣,傻瓜式的下一步就行。根據自己需要選擇配置選項即可!

方式三:命令部署(該種配置方式的具體配置可參見weblogic提供幫助文件來進行或者官網)在這裡就不詳細說了!

值得注意的是我們做的專案如果要想成功部署到weblogic上,我們還需要給我們專案新增weblogic約定的部署描述符weblogic.xml檔案,和我們web.xml類似。這些部署描述符告訴我們web伺服器在啟動時的一些行為約定。下面weblogic.xml的常見配置:(如下圖)

<?xml version="1.0" encoding="UTF-8" ?>
<weblogic-web-app
	xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
	<jsp-descriptor>
		<!-- 
			在JSP 編譯過程中儲存作為中間步驟生成的 Java 
			檔案。除非此引數設定為 true,否則編譯完成後
			將刪除所有中間 Java 檔案是否讓編譯jsp檔案產
			生的.java檔案持續存在,如果設定為true,就可
			以在部署的環境檢視jsp產生的.java檔案,方便調
			試錯誤。
		-->
		<keepgenerated>true</keepgenerated>
		<!-- -1表示永不檢查頁面,該值為生產環境中的預設值,0表示總是檢查頁面,1表示每秒檢查一次頁面,該值為開發環境中的預設值。 -->
		<page-check-seconds>60</page-check-seconds>
		<!-- 如果設定為 true,當部署或重新部署 Web應用程式時,或啟動 WebLogic時,WebLogic Server會自動預編譯所有已修改的JSP。 -->
		<precompile>true</precompile>
		<precompile-continue>true</precompile-continue>
	</jsp-descriptor>

	<container-descriptor>
		<!-- 
			該引數的預設值也是1,每隔1秒檢查servlet是否被修改並需要重新編譯。
			這裡建議修改為-1,表示永不檢查,具體設定如下:
		-->
		<servlet-reload-check-secs>1</servlet-reload-check-secs>
		<!-- 
			該引數針對 Web應用程式範圍內資源路徑中發現的快取資源執行元資料快取。
			該引數標識 WebLogic Server檢查資源是否發生修改的頻率,如果已修改,則重新載入。
			值 -1 表示元資料進行快取,但從不對磁碟進行檢查以便找出所做的更改。建議在生產環境中使用該值,以提升效能。
			值 0 表示不執行元資料快取。持續更改檔案的客戶必須將該引數設定為大於或等於 0的一個值。
			值 1 表示每秒重新載入一次。該值為開發環境中的預設值。
		-->
		<resource-reload-check-secs>1</resource-reload-check-secs>
		<!-- 
			公司的專案還遇到這樣一個問題,Tomcat下用的好好的,
			但是放到weblogic下就出了問題,最可能造成這樣的原因
			是應用程式的jar包和weblogic下的jar包衝突。
			
			說明:此種方法理論上可以解決問題,但其改變了weblogic預設的載入jar的順序。
			大部分時候可能帶來更多的版本不相容問題。所以如果此方法中看不中用的話再用下面的方法解決。
		-->
		<prefer-web-inf-classes>true</prefer-web-inf-classes>
		<optimistic-serialization>true</optimistic-serialization>
		<show-archived-real-path-enabled>
			true
		</show-archived-real-path-enabled>
	</container-descriptor>
	<!-- 指定應用上下文,設定在根路徑即可訪問該服務 如:http://localhost:7001/jplogic-->
	<context-root>/jplogic</context-root>
	<!--
	說明: 
    1)你c盤上面的路徑結構應該為 c:\jplogic\jplogic [將需要的資源放入jplogic下面] 
    2)資源訪問路徑為 http://localhost:7001/jplogic/..相當於 c:\jplogic\jplogic\... 
    3)這樣配置虛擬目錄的方式可以將一些圖片、視屏、檔案等資源存放在這些目錄下,這樣在入口網站上就可以訪問這些資源
	
		<virtual-directory-mapping>
			<local-path>c:/jplogic</local-path>
			<url-pattern>/jplogic/*</url-pattern>
		</virtual-directory-mapping>
	-->
</weblogic-web-app>

下面詳細說一下<prefer-web-inf-classes>true</prefer-web-inf-classes>引數,理論上我們將該引數設定為true之後,welogic載入jar的順序先載入專案本身的jar,但同時也可以出現其他相容性問題!這是很多人在將專案部署到Tomcat上是可以正常執行,一旦部署到weblogic的時候就會出現諸多問題。有可能會與weblogic本身自帶的jar衝突。

如果遇到類似的問題可從幾個方面解決這些問題使用引數<prefer-web-inf-classes>true</prefer-web-inf-classes>配置,如果問題還存在可在weblogic目錄中找出衝突jar,然後在weblogic的啟動指令碼檔案中設定jar的載入路徑,也就是classpath環境變數!

說了這麼多以上三中部署方式僅供大家參考,其實就是配置weblogic的核心配置檔案config.xml(啟動weblogic之後會根據使用者的配置行為以及autodepoy目錄是否存在專案來自動檢測更新配置檔案config.xml)如下所示:

  <app-deployment>
    <name>WebRoot</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>D:\DeveloperTool\javaProjects\workspace\jplogicPlatform\WebRoot</source-path>
    <security-dd-model>DDOnly</security-dd-model>
  </app-deployment>
  <app-deployment>
    <name>_appsdir_webofficeDemo_dir</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>autodeploy\webofficeDemo</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
  </app-deployment>
  <app-deployment>
    <name>_appsdir_textflow_dir</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>autodeploy\textflow</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
  </app-deployment>
  <app-deployment>
    <name>_appsdir_suggest_dir</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>autodeploy\suggest</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
  </app-deployment>
  <admin-server-name>AdminServer</admin-server-nam<strong>e></strong>

下面jplogic部署到weblogic的效果圖:

伺服器監控檢視: