【轉(zhuǎn)帖】IBM WAS WPS的腳本語(yǔ)言jacl探索
作者:keyboardsun 轉(zhuǎn)載請(qǐng)標(biāo)明出處,請(qǐng)尊重作者原創(chuàng)權(quán)利Site:http://www.chinacsharp.net http://blog.csdn.net/keyboardsun
我們知道WAS,WPS的控制臺(tái)功能很強(qiáng)大,也同樣的很復(fù)雜,其實(shí)呢,這些控制太的操作我們都可以通過(guò)編寫jacl腳本實(shí)現(xiàn),為什么要用腳本呢?呵呵,簡(jiǎn)單的說(shuō)方便管理吧,我舉個(gè)例子,大家就知道為什么要使用jacl腳本了。
我 們?cè)谧鲆粋€(gè)電信的投訴項(xiàng)目,里面涉及的流程,包括子流程一共有400多個(gè),按照IBM的建議,一個(gè)EAR流程應(yīng)用最多打20個(gè)流程,如果多的話,會(huì)影響性 能的,當(dāng)然我們?cè)侔凑瘴覀兊臉I(yè)務(wù)還要分類打包,那結(jié)果如何,我們打了40多個(gè)ear,這么多ear啊,呵呵,我們光是登陸某一臺(tái)機(jī)器的web控制臺(tái),我們 一個(gè)一個(gè)發(fā)布,這要多久?呵呵,這需要半天,整整半天,當(dāng)然我們的后臺(tái)的服務(wù)器是集群的,有7臺(tái)機(jī)器需要安裝呢。撇開這個(gè)不說(shuō),當(dāng)我們某個(gè)應(yīng)用需要更新的 時(shí)候,我們?cè)趺崔k?一個(gè)一個(gè)的控制臺(tái)登陸,然后一個(gè)一個(gè)的更新。這多麻煩啊,對(duì)于維護(hù)人員,壓力太大。
如果我們用jacl來(lái)解決這問(wèn)題,那就簡(jiǎn)單 多了,因?yàn)閣sadmin支持遠(yuǎn)程命令,可以通過(guò)SOAP登陸執(zhí)行,也就是說(shuō),我們的ear在自己的windows里面,我們就可以通過(guò)遠(yuǎn)程命令把程序安 裝我各個(gè)AIX系統(tǒng)的WPS,WAS里面,節(jié)省時(shí)間,而且容易控制,避免出錯(cuò)。
本文我不打算詳細(xì)介紹jacl,本文側(cè)重于應(yīng)用,根據(jù)一個(gè)需求,給出解決的辦法。
簡(jiǎn)單的說(shuō),我們?cè)赪AS上安裝一個(gè)應(yīng)用,jacl代碼如下:
puts "-------------------------------------------------------------------"
puts "—開始執(zhí)行jacl代碼啦 --"
puts "-------------------------------------------------------------------"
#這是我們要發(fā)布的應(yīng)用的存放路徑
set EARDIR /home/XXX.ear
#這是我們要發(fā)布的應(yīng)用的名稱
set APPNAME APPNAME
set NODE [$AdminControl getNode]
#簡(jiǎn)單的理解,取得當(dāng)前的上下文
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=$NODE,process=server1,*]
puts ""
puts "Stop Application $APPNAME"
puts ""
#停止應(yīng)用
$AdminControl invoke $APPMANAGER stopApplication $APPNAME
puts ""
puts "Uninstall Application $APPNAME"
puts ""
#卸載應(yīng)用
$AdminApp uninstall $APPNAME
puts ""
puts "Saving configuration"
puts ""
#保存修改
$AdminConfig save
puts "-----------------------------------------------------------------"
puts "-- Install EAR --"
puts "-----------------------------------------------------------------"
puts ""
puts "Install Application $APPNAME"
puts ""
#安裝應(yīng)用
$AdminApp install $EARDIR {-appname $APPNAME}
puts ""
puts "Saving configuration"
puts ""
#保存修改
$AdminConfig save
puts ""
puts "Start Application $APPNAME"
puts ""
#啟動(dòng)應(yīng)用
$AdminControl invoke $APPMANAGER startApplication $APPNAME
以上的例子我們做的是更新一個(gè)應(yīng)用,麻雀不大,東西不少。包括了停止,卸載,安裝,啟動(dòng)應(yīng)用。
有人會(huì)問(wèn),這個(gè)簡(jiǎn)單,下面我來(lái)說(shuō)不簡(jiǎn)單的。在集群環(huán)境下該如何辦呢?需求如下。
現(xiàn)在我有一個(gè)cluster,名稱叫CLUSTER包括兩個(gè)節(jié)點(diǎn)NODE1,NODE2,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)兩個(gè)SERVER,分別為server1,server2我要把應(yīng)用安裝在這樣的cluster上面改怎么辦呢?
呵呵,其實(shí)很簡(jiǎn)單,安裝的口令是這樣的
$AdminApp install $EARDIR {-cluster CLUSTER}
這樣就可以了,安裝過(guò)后保存下就可以了,這里我們?cè)诤竺婕由弦粋€(gè)參數(shù) {-cluster CLUSTER} 這樣就會(huì)把這個(gè)安裝的應(yīng)用更新到整個(gè)cluster了
$AdminConfig save
但是這里有個(gè)問(wèn)題,什么問(wèn)題呢,我安裝的時(shí)候可以一下子安裝到cluster,那么我停止呢?卸載呢?啟動(dòng)呢?這里很遺憾,這里沒(méi)有這個(gè)功能。那我們?cè)撛趺崔k呢?我們只能到每個(gè)server下面來(lái)停止了。比如我要停止一個(gè)叫TESTAPP的應(yīng)用,代碼如下。
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE1,process=server1,*]
$AdminControl invoke $APPMANAGER stopApplication TESTAPP
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE1,process=server2,*]
$AdminControl invoke $APPMANAGER stopApplication TESTAPP
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE2,process=server1,*]
$AdminControl invoke $APPMANAGER stopApplication TESTAPP
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE2,process=server2,*]
$AdminControl invoke $APPMANAGER stopApplication TESTAPP
這樣要到各自的server下面停止就可以了,這樣這個(gè)應(yīng)用就被停止了,卸載,啟動(dòng)同樣。
下面還有一種情況,比如有好多臺(tái)服務(wù)器,不是集群,但是應(yīng)用都一樣,我們?nèi)绾卧谧约旱碾娔X上面來(lái)解決這個(gè)問(wèn)題呢?
比如有下面3臺(tái)機(jī)器
IP HOSTNAME
10.10.10.1 TEST1
10.10.10.2 TEST2
10.10.10.3 TEST3
應(yīng)用在e:/test.ear
我要把應(yīng)用安裝到這三臺(tái)機(jī)器上。呵呵,其實(shí)很簡(jiǎn)單。
我們做一個(gè)bat文件,內(nèi)容如下
F:
Cd F:"IBM"WebSphere"ID"602"runtimes"bi_v6"bin
wsadmin -conntype SOAP -host TEST1 -port 8879 -f test.jacl
wsadmin -conntype SOAP -host TEST2 -port 8879 -f test.jacl
wsadmin -conntype SOAP -host TEST2 -port 8879 -f test.jacl
test.jacl的代碼為:
$AdminApp install e:/test.ear
$AdminConfig save
這樣這個(gè)bat文件跑一下,三臺(tái)機(jī)器的應(yīng)用就全部都安裝上了,當(dāng)然啟動(dòng),停止如上。同樣的簡(jiǎn)單。呵呵,如果每個(gè)服務(wù)器是集群的,那么加上{-cluster clustername}參數(shù)就可以了。
posted on 2010-11-23 16:54 koradji 閱讀(699) 評(píng)論(0) 編輯 收藏 所屬分類: was