2011年4月23日 星期六

WAS 指令

最近在用WAS,當搭配RSA使用時,簡直就是吃記憶體怪獸,
加上RSA作部署時,有時候會發生某些設定檔會找不到的狀況,原因不明。
解決辦法如下:

  1. 重開機
  2. 重新作一次 maven update dependencies
  3. 使用EAR透過WAS主控台部署
以上三種全都很煩。由於上列原因,在加上RSA真的不快。
所以決定研究一下WAS 的指令。

前提:
知道WAS安裝的目錄
例如我的是 "D:\Program piles\IBM\SDP\runtimes\base_v7\profiles\AppSrv01\"
然後要知道自己的was ap的一些資訊
你的AP名字  appName = "tac-ear"
你的cell名字 appCell = "CHT-EE08CCC2D29Node01Cell"  一般來說是 appNode+Cell
你的node名字 appNode = "CHT-EE08CCC2D29Node01"   一般來說是 完整電腦名稱 +Node01
你的server名字 appServer = "server1"
你要部署 ear 檔放置目錄 "C:/Documents and Settings/ropin13/.m2/repository/tac/tac-ear/1.0-SNAPSHOT/tac-ear-1.0-SNAPSHOT.ear"

我們可以進入console模式,對was使用以下指令:
進入was bin目錄,裡面有一些指令可以使用
cd "D:\Program Files\IBM\SDP\runtimes\base_v7\profiles\AppSrv01\bin"
常用指令
  1. 啟動was(要指定server)     startServer.bat server1
  2. 關閉was(要指定server) stopServer.bat server1
  3. 使用admin進行部署...等等操作 wsadmin.bat
    wsadmin.bat -lang jython -c "xxx"
    -lang 是指定要執行的script語言, 上面是指定 jython, 類似Python
    -c     是代表後面接的是 script command ,例如常用的有:
    安裝ear檔:
    wsadmin.bat -lang jython -c "AdminApp.install('C:/Documents and Settings/ropin13/.m2/repository/tac/tac-ear/1.0-SNAPSHOT/tac-ear-1.0-SNAPSHOT.ear', '[-server server1]')"
    移除ear檔:
    wsadmin.bat -lang jython -c "AdminApp.uninstall('tac-ear')"
    -f 代表後面接的是 script file, 例如: wsadmin.bat -lang jython -f "D:/jythonscript/update.py"

搭配was, jython語法可以參考 IBM網站

下面提供在was中幾個jython的指令:
共用區塊

#相關參數
appName = "tac-ear"
appCell = "CHT-EE08CCC2D29Node01Cell"
appNode = "CHT-EE08CCC2D29Node01"
appServer = "server1"
#ear檔目錄
earfile = "C:/Documents and Settings/ropin13/.m2/repository/tac/tac-ear/1.0-SNAPSHOT/tac-ear-1.0-SNAPSHOT.ear"

關閉單個app

print "檢查"+appName+"狀態是否為關閉狀態"
myAppStatus = AdminControl.completeObjectName('type=Application,name='+appName+',*')
if myAppStatus!="":
print "停止"+appName
queryName = 'cell='+appCell+',node='+appNode+',type=ApplicationManager,process='+appServer+',*'
print "queryName"+queryName
appManager = AdminControl.queryNames(queryName)
#透過appManager 停止 tac-ear
AdminControl.invoke(appManager, 'stopApplication', appName)
print "停止"+appName+"完成"
else:
print appName+"為關閉狀態"

啟動單個app

print "檢查"+appName+"狀態是否為開啟狀態"
myAppStatus = AdminControl.completeObjectName('type=Application,name='+appName+',*')
if myAppStatus=="":
print "啟動tac-ear"
#取得appManager
appManager = AdminControl.queryNames('cell='+appCell+',node='+appNode+',type=ApplicationManager,process='+appServer+',*')
#透過appManager啟動 myApplication
AdminControl.invoke(appManager, 'startApplication', appName)
print "啟動"+appName+"完成"
else:
print appName+"為啟動狀態"

更新單個app

print "更新檢查"
myAppStatus = AdminControl.completeObjectName('type=Application,name='+appName+',*')
if myAppStatus=="":
#-----------------
#更新app
print "更新中"
bindJndiForEJBValue = [["Increment Enterprise Java Bean", "Increment", " Increment.jar,META-INF/ejb-jar.xml", "Inc"]]
AdminApp.update(appName, 'app', ['-operation', 'update', '-contents',earfile, '-usedefaultbindings', '-nodeployejb','-BindJndiForEJBNonMessageBinding', bindJndiForEJBValue])
print "更新完成"
#save
AdminConfig.save()
print "儲存完成"
else:
print "未進行更新"

查詢server中所有app(包含執行與非執行中)

print "列出所有app"
print AdminApp.list()

檢查app是否運行中

print "查詢"+appName
coName = "type=Application,name="+appName+",*"
myAppStatus = AdminControl.completeObjectName(coName)
if myAppStatus!="":
print appName+"執行中"
print "'"+myAppStatus+"'"
else:
print appName+"沒有運行"


以上,請盡情享用

沒有留言:

張貼留言