本文要討論的是如何在weblogic上deploy shared lib
以及application的版號控制和引用lib


關於欲共用的lib(ex: log4j, framework...)
以往是直接將其上傳至domain下的lib資料夾
不過此方式除了管理不易外,在deploy application時還會造成一些奇怪的問題
如log4j無法印出訊息,更新framework時,ap無法正確載入...


透過以下方式進行deploy將可解決上述問題




1. Shared library


在上傳*.jar檔前,先編輯jar根目錄中的META-INF\MANIFEST.MF
加上以下三行設定
Extension-Name: myExtension
Specification-Version: 3.8
Implementation-Version: 9.0.0


關於後面可加的文字規範請參考 >>這篇文章<<


接著deploy至weblogic上後
將成為一個註冊名稱為myExtension
major,minor版號為(3.8,9.0.0)
Type是Library的 shard lib


2. Deploy Enterprise Application


習慣上我們會用ear檔來deploy
*.ear中的目錄結構如下


a. APP-INF\lib\ 這邊放私有lib
b. META-INF\application.xml 定義這是個ejb module or web module
c. META-INF\weblogic-application.xml

本檔案中可使用library-ref來引用shard lib,例如





以上寫法如遇相同library name但版號不同的lib時
將自動selects the highest specification version
另外也可特別指定要用哪個版號的lib,不過我測試時似乎不work


d. META-INF\MANIFEST.MF
這裡可以用來標明本application的版號
設定方法很簡單
記得還要再加上Class-Path這個變數,並填上private lib中的jar name
Weblogic-Application-Version: v1.1.1
Class-Path: webwork-2.2.2.jar webwork-nostatic-2.2.2.jar xwork.jar

關於後面可加的文字規範請參考 >>這篇文章<<




最後說明一下Library的更新以及application的更新


1. Redeploy Library


首先更新一下META-INF\MANIFEST.MF中的版本號
然後勾選原有的library,點選Update
若有application reference至原有版本
update過程有個步驟系統會讓你勾選要立即更新的application


Library update完成後
新舊版的Library都會在列表上,狀態都是Active


有勾選的ap會立即引用新版Library


沒勾選的就繼續使用舊版的Library
下次這個application再重新update時
就會指向新版Library


由此可推知Shared lib是起不同的instance
提供不同application引用
這跟resin or tomcat似乎不同


之前有經驗是log4j放在resin or tomcat的share lib中
多個application中都有各自的log4j properties
但是start server後
log4j只load進某ap的log4j properties
其他ap 就都不能寫log了


如果我們在weblogic上
向本文一開始所述,只將log4j.jar丟入domain lib
也會有此問題

不過乖乖採用Shared lib來deploy後問題就解決了


2. Redeploy application


首先更新一下META-INF\MANIFEST.MF中的版本號
然後勾選原有的application,點選Update


application update完成後
新舊版的application都會在列表上


新版的狀態是Active
新的request這時會使用這個版本


舊版的會繼續處理尚在進行中的request
這時狀態會是stop Running
直到所有request結束,狀態會變成Retired


此時若發現新版application有問題而想要roll back回舊版
只要勾選舊版,執行Start/Servicng all requests即可


相關參考資料
Creating a Split Development Directory Environment
Creating and Configuring Web Applications

創作者介紹
創作者 babyincar 的頭像
babyincar

 [孩子在車上‧Babyincar's Blog]

babyincar 發表在 痞客邦 留言(0) 人氣()