【轉帖】IBM WAS WPS的腳本語言jacl探索

          作者:keyboardsun 轉載請標明出處,請尊重作者原創權利
          Site:http://www.chinacsharp.net http://blog.csdn.net/keyboardsun

          我們知道WAS,WPS的控制臺功能很強大,也同樣的很復雜,其實呢,這些控制太的操作我們都可以通過編寫jacl腳本實現,為什么要用腳本呢?呵呵,簡單的說方便管理吧,我舉個例子,大家就知道為什么要使用jacl腳本了。
          我 們在做一個電信的投訴項目,里面涉及的流程,包括子流程一共有400多個,按照IBM的建議,一個EAR流程應用最多打20個流程,如果多的話,會影響性 能的,當然我們再按照我們的業務還要分類打包,那結果如何,我們打了40多個ear,這么多ear啊,呵呵,我們光是登陸某一臺機器的web控制臺,我們 一個一個發布,這要多久?呵呵,這需要半天,整整半天,當然我們的后臺的服務器是集群的,有7臺機器需要安裝呢。撇開這個不說,當我們某個應用需要更新的 時候,我們怎么辦?一個一個的控制臺登陸,然后一個一個的更新。這多麻煩啊,對于維護人員,壓力太大。
          如果我們用jacl來解決這問題,那就簡單 多了,因為wsadmin支持遠程命令,可以通過SOAP登陸執行,也就是說,我們的ear在自己的windows里面,我們就可以通過遠程命令把程序安 裝我各個AIX系統的WPS,WAS里面,節省時間,而且容易控制,避免出錯。
           
          本文我不打算詳細介紹jacl,本文側重于應用,根據一個需求,給出解決的辦法。
           
          簡單的說,我們在WAS上安裝一個應用,jacl代碼如下:
          puts "-------------------------------------------------------------------"
          puts "—開始執行jacl代碼啦 --"
          puts "-------------------------------------------------------------------"
           
          #這是我們要發布的應用的存放路徑
          set EARDIR /home/XXX.ear
          #這是我們要發布的應用的名稱
          set APPNAME APPNAME
           
          set NODE [$AdminControl getNode]
          #簡單的理解,取得當前的上下文
          set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=$NODE,process=server1,*]
           
          puts ""
          puts "Stop Application $APPNAME"
          puts ""
          #停止應用
          $AdminControl invoke $APPMANAGER stopApplication $APPNAME
           
          puts ""
          puts "Uninstall Application $APPNAME"
          puts ""
          #卸載應用
          $AdminApp uninstall $APPNAME
           
          puts ""
          puts "Saving configuration"
          puts ""
          #保存修改
          $AdminConfig save
           
           
          puts "-----------------------------------------------------------------"
          puts "--              Install EAR                                    --"
          puts "-----------------------------------------------------------------"
           
          puts ""
          puts "Install Application $APPNAME"
          puts ""
          #安裝應用
          $AdminApp install $EARDIR {-appname $APPNAME}
           
          puts ""
          puts "Saving configuration"
          puts ""
          #保存修改
          $AdminConfig save
           
          puts ""
          puts "Start Application $APPNAME"
          puts ""
          #啟動應用
          $AdminControl invoke $APPMANAGER startApplication $APPNAME
           
          以上的例子我們做的是更新一個應用,麻雀不大,東西不少。包括了停止,卸載,安裝,啟動應用。
           
          有人會問,這個簡單,下面我來說不簡單的。在集群環境下該如何辦呢?需求如下。
          現在我有一個cluster,名稱叫CLUSTER包括兩個節點NODE1,NODE2,每個節點對應兩個SERVER,分別為server1,server2我要把應用安裝在這樣的cluster上面改怎么辦呢?
           
          呵呵,其實很簡單,安裝的口令是這樣的
          $AdminApp install $EARDIR {-cluster CLUSTER}
          這樣就可以了,安裝過后保存下就可以了,這里我們在后面加上一個參數 {-cluster CLUSTER} 這樣就會把這個安裝的應用更新到整個cluster了
          $AdminConfig save
           
          但是這里有個問題,什么問題呢,我安裝的時候可以一下子安裝到cluster,那么我停止呢?卸載呢?啟動呢?這里很遺憾,這里沒有這個功能。那我們該怎么辦呢?我們只能到每個server下面來停止了。比如我要停止一個叫TESTAPP的應用,代碼如下。
           
          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下面停止就可以了,這樣這個應用就被停止了,卸載,啟動同樣。
           
          下面還有一種情況,比如有好多臺服務器,不是集群,但是應用都一樣,我們如何在自己的電腦上面來解決這個問題呢?
           
          比如有下面3臺機器
          IP             HOSTNAME
          10.10.10.1      TEST1
          10.10.10.2      TEST2
          10.10.10.3      TEST3
           
          應用在e:/test.ear
          我要把應用安裝到這三臺機器上。呵呵,其實很簡單。
          我們做一個bat文件,內容如下
          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
           
          這樣這個bat文件跑一下,三臺機器的應用就全部都安裝上了,當然啟動,停止如上。同樣的簡單。呵呵,如果每個服務器是集群的,那么加上{-cluster clustername}參數就可以了。

          posted on 2010-11-23 16:54 koradji 閱讀(699) 評論(0)  編輯  收藏 所屬分類: was


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          db2

          dos

          Groovy

          Hibernate

          java

          WAS

          web application

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 瑞金市| 广南县| 辽源市| 合作市| 克什克腾旗| 富平县| 清新县| 平昌县| 福贡县| 合山市| 荆州市| 余干县| 东至县| 图们市| 普洱| 麟游县| 会同县| 黄山市| 彩票| 新田县| 天祝| 绥化市| 永善县| 安平县| 高唐县| 呼图壁县| 龙门县| 奇台县| 新巴尔虎左旗| 广安市| 四会市| 红河县| 醴陵市| 上蔡县| 武功县| 枣庄市| 东乡县| 枣强县| 城固县| 海丰县| 东宁县|