喵喵说was脚本

来源:互联网 发布:mysql cast 0.1 编辑:程序博客网 时间:2024/05/18 03:55

was就是WebSphere Application Server,was安装目录中有一个wasadmin,可以运行was脚本,他支持Jacl和Jython两种脚本语言。在was上布署application可以在was console手工布署,可以使用wasadmin命令行输入,当然也可以写成脚本用wasadmin运行。

写成脚本布署的好处不言而喻,就不多说了,喵喵在这里不介绍was脚本怎么写,也不多解释了,只是贴一段脚本代码给大家参看,相信很容易看懂。

恩,IBM为他的每个product提供了一些帮助性质的文档,以info center的形式给出,需要详细信息的话,喵喵给出一个网址,大家自己看啦~~里面有一章deploying applications using scripting,讲的很详细。

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp

下面是喵喵说的脚本代码段(Jacl):

set appName appnameEAR
set deployfile D:/apppath/appname.ear
set cellname servernameNode01Cell
set nodename servernameNode01

#deploy application

set apps [$AdminControl queryNames type=Application,cell=$cellname,node=$nodename,process=server1,*]
foreach app $apps {
    set aname [$AdminControl getAttribute $app name]
    if {$aname == $appName} {
     $AdminApp uninstall "$appName"
    }
}
$AdminConfig save

$AdminApp install $deployfile {-server server1}
$AdminConfig save

#start application

set appManager [$AdminControl queryNames cell=$cellname,node=$nodename,type=ApplicationManager,process=server1,*]
$AdminControl invoke $appManager startApplication $appName

这段脚本可是折磨了喵喵一周多啊~~每次运行都会抛出duplicated application异常,说已经有了config信息。布署经常不成功,就算可以通过网址访问到application,在was console却依然看不到。反复看了文档,没有发现脚本有什么错误;运行过程中,install之前确实也显示uninstall successful,甚至install也是successful的。唯一能得出的结论就是uninstall不干净,在start application的时候down掉了,但是application是已经可以访问了的?

每天困惑,每天都觉得既然可以访问,就算了,然后做别的事情,直到前天把内容转移到目标机器上,然后到了下班时间很诡异发现appManager为null,怎么都不行。很郁闷的回家,然后昨天一早去看前一天的异常居然神奇的好了,依然是duplicated application……

然后,喵喵居然鬼使神差的把脚本拆了,想看看光uninstall能不能uninstall干净,然后,抛出一个异常,说config没有被保存,因为没有save!看到上面脚本中红色的$AdminConfig save木有?原来没有的,555~~就是因为这个,所以uninstall的时候没有保存,所以config信息还在,所以会duplicate!!!

好吧~~原来以为和数据库一样,最后commit一下就行了,写程序不能想当然呢...喵喵要继续好好学习^O^

最后呢,说明一下,喵喵写下这些,主要是为了记录一些自己的学习,也督促自己每天去学习。所提到的内容,只不过是was的冰山一角,很不全面,不对的地方,请大家批评指正,and谅解~~