﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无涯-文章分类-was</title><link>http://www.blogjava.net/koradji/category/47147.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 24 Nov 2010 03:40:02 GMT</lastBuildDate><pubDate>Wed, 24 Nov 2010 03:40:02 GMT</pubDate><ttl>60</ttl><item><title>【转帖】IBM WAS WPS的脚本语言jacl探索</title><link>http://www.blogjava.net/koradji/articles/338823.html</link><dc:creator>koradji</dc:creator><author>koradji</author><pubDate>Tue, 23 Nov 2010 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/koradji/articles/338823.html</guid><wfw:comment>http://www.blogjava.net/koradji/comments/338823.html</wfw:comment><comments>http://www.blogjava.net/koradji/articles/338823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/koradji/comments/commentRss/338823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/koradji/services/trackbacks/338823.html</trackback:ping><description><![CDATA[作者:keyboardsun 转载请标明出处，请尊重作者原创权利<br />
Site:http://www.chinacsharp.net&nbsp;http://blog.csdn.net/keyboardsun<br />
<br />
我们知道WAS,WPS的控制台功能很强大，也同样的很复杂，其实呢，这些控制太的操作我们都可以通过编写jacl脚本实现，为什么要用脚本呢？呵呵，简单的说方便管理吧，我举个例子，大家就知道为什么要使用jacl脚本了。<br />
我
们在做一个电信的投诉项目，里面涉及的流程，包括子流程一共有400多个，按照IBM的建议，一个EAR流程应用最多打20个流程，如果多的话，会影响性
能的，当然我们再按照我们的业务还要分类打包，那结果如何，我们打了40多个ear，这么多ear啊，呵呵，我们光是登陆某一台机器的web控制台，我们
一个一个发布，这要多久？呵呵，这需要半天，整整半天，当然我们的后台的服务器是集群的，有7台机器需要安装呢。撇开这个不说，当我们某个应用需要更新的
时候，我们怎么办？一个一个的控制台登陆，然后一个一个的更新。这多麻烦啊，对于维护人员，压力太大。<br />
如果我们用jacl来解决这问题，那就简单
多了，因为wsadmin支持远程命令，可以通过SOAP登陆执行，也就是说，我们的ear在自己的windows里面，我们就可以通过远程命令把程序安
装我各个AIX系统的WPS,WAS里面，节省时间，而且容易控制，避免出错。<br />
&nbsp;<br />
本文我不打算详细介绍jacl，本文侧重于应用，根据一个需求，给出解决的办法。<br />
&nbsp;<br />
简单的说，我们在WAS上安装一个应用，jacl代码如下：<br />
puts "-------------------------------------------------------------------"<br />
puts "—开始执行jacl代码啦 --"<br />
puts "-------------------------------------------------------------------"<br />
&nbsp;<br />
#这是我们要发布的应用的存放路径<br />
set EARDIR /home/XXX.ear<br />
#这是我们要发布的应用的名称<br />
set APPNAME APPNAME<br />
&nbsp;<br />
set NODE [$AdminControl getNode]<br />
#简单的理解，取得当前的上下文<br />
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=$NODE,process=server1,*]<br />
&nbsp;<br />
puts ""<br />
puts "Stop Application $APPNAME"<br />
puts ""<br />
#停止应用<br />
$AdminControl invoke $APPMANAGER stopApplication $APPNAME<br />
&nbsp;<br />
puts ""<br />
puts "Uninstall Application $APPNAME"<br />
puts ""<br />
#卸载应用<br />
$AdminApp uninstall $APPNAME<br />
&nbsp;<br />
puts ""<br />
puts "Saving configuration"<br />
puts ""<br />
#保存修改<br />
$AdminConfig save<br />
&nbsp;<br />
&nbsp;<br />
puts "-----------------------------------------------------------------"<br />
puts "--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Install EAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --"<br />
puts "-----------------------------------------------------------------"<br />
&nbsp;<br />
puts ""<br />
puts "Install Application $APPNAME"<br />
puts ""<br />
#安装应用<br />
$AdminApp install $EARDIR {-appname $APPNAME}<br />
&nbsp;<br />
puts ""<br />
puts "Saving configuration"<br />
puts ""<br />
#保存修改<br />
$AdminConfig save<br />
&nbsp;<br />
puts ""<br />
puts "Start Application $APPNAME"<br />
puts ""<br />
#启动应用<br />
$AdminControl invoke $APPMANAGER startApplication $APPNAME<br />
&nbsp;<br />
以上的例子我们做的是更新一个应用，麻雀不大，东西不少。包括了停止，卸载，安装，启动应用。<br />
&nbsp;<br />
有人会问，这个简单，下面我来说不简单的。在集群环境下该如何办呢？需求如下。<br />
现在我有一个cluster，名称叫CLUSTER包括两个节点NODE1,NODE2,每个节点对应两个SERVER，分别为server1，server2我要把应用安装在这样的cluster上面改怎么办呢？<br />
&nbsp;<br />
呵呵，其实很简单，安装的口令是这样的<br />
$AdminApp install $EARDIR {-cluster CLUSTER}<br />
这样就可以了，安装过后保存下就可以了，这里我们在后面加上一个参数&nbsp;{-cluster CLUSTER} 这样就会把这个安装的应用更新到整个cluster了<br />
$AdminConfig save<br />
&nbsp;<br />
但是这里有个问题，什么问题呢，我安装的时候可以一下子安装到cluster，那么我停止呢？卸载呢？启动呢？这里很遗憾，这里没有这个功能。那我们该怎么办呢？我们只能到每个server下面来停止了。比如我要停止一个叫TESTAPP的应用，代码如下。<br />
&nbsp;<br />
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE1,process=server1,*]<br />
$AdminControl invoke $APPMANAGER stopApplication TESTAPP<br />
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE1,process=server2,*]<br />
$AdminControl invoke $APPMANAGER stopApplication TESTAPP<br />
&nbsp;<br />
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE2,process=server1,*]<br />
$AdminControl invoke $APPMANAGER stopApplication TESTAPP<br />
&nbsp;<br />
set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=NODE2,process=server2,*]<br />
$AdminControl invoke $APPMANAGER stopApplication TESTAPP<br />
&nbsp;<br />
这样要到各自的server下面停止就可以了，这样这个应用就被停止了，卸载，启动同样。<br />
&nbsp;<br />
下面还有一种情况，比如有好多台服务器，不是集群，但是应用都一样，我们如何在自己的电脑上面来解决这个问题呢？<br />
&nbsp;<br />
比如有下面3台机器<br />
IP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HOSTNAME<br />
10.10.10.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEST1<br />
10.10.10.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEST2<br />
10.10.10.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEST3<br />
&nbsp;<br />
应用在e:/test.ear<br />
我要把应用安装到这三台机器上。呵呵，其实很简单。<br />
我们做一个bat文件，内容如下<br />
F:<br />
Cd F:"IBM"WebSphere"ID"602"runtimes"bi_v6"bin<br />
wsadmin -conntype SOAP -host TEST1 -port 8879 -f test.jacl<br />
wsadmin -conntype SOAP -host TEST2 -port 8879 -f test.jacl<br />
wsadmin -conntype SOAP -host TEST2 -port 8879 -f test.jacl<br />
&nbsp;<br />
test.jacl的代码为：<br />
$AdminApp install e:/test.ear<br />
$AdminConfig save<br />
&nbsp;<br />
这样这个bat文件跑一下，三台机器的应用就全部都安装上了，当然启动，停止如上。同样的简单。呵呵，如果每个服务器是集群的，那么加上{-cluster clustername}参数就可以了。<br />
<img src ="http://www.blogjava.net/koradji/aggbug/338823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/koradji/" target="_blank">koradji</a> 2010-11-23 16:54 <a href="http://www.blogjava.net/koradji/articles/338823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>