IBM WAS WPS的脚本语言jacl探索
作者:keyboardsun 转载请标明出处,请尊重作者原创权利
Site:http://www.chinacsharp.nethttp://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}参数就可以了。
分享到:
相关推荐
本文档主要探讨了Jacl作为一种通用脚本语言为Java环境带来的价值,并深入讨论了其对Java和Tcl编程社区的影响。 #### 动机 随着Java和万维网(World Wide Web)的流行,Tcl社区一直在探索如何利用这些技术来增强Tcl...
TCL是一种动态类型的脚本语言,广泛用于自动化任务和嵌入式系统。Jacl(Java Command Language)是TCL的一个实现,它允许TCL脚本在Java平台上运行,提供了与Java的紧密集成。SpringSource是一家知名的Java技术提供商...
`wsadmin`工具自WAS V5开始引入,支持两种脚本语言:Jython和Jacl。Jython是一种Python语言的Java实现,更推荐用于`wsadmin`,因为它提供了更强的表达能力和灵活性。Jacl(Java Command Language)则是基于TCL的脚本...
- 使用`wsadmin.bat`命令执行`configureWebserverDefinition.jacl`脚本,参数如下: - `webserver IHS "C:\ProgramFiles\IBM\...
火龙果软件工程技术中心本文内容包括:1RSA的模型转换框架2WebSphere与Jacl语言3服务集成总线建模(SIBUS)4SIBUS模型到Jacl脚本的转换开发结束语参考资料RationalSoftwareArchitect(RSA)是IBMRational软件家族中的...
脚本语言通常比传统编程语言更为简洁易懂,这使得非专业程序员也能够利用脚本语言来扩展应用程序的功能。目前,网络上有多种流行的脚本语言,包括TCL、Perl、JavaScript、Python等,这些语言中很多都有对应的Java...
【Web服务器与WAS通信详解】 WebSphere Application Server (WAS) 与Web服务器的通信是企业级应用部署的关键组成部分,这涉及到将Web应用程序、服务和资源暴露给互联网或内部网络用户。通常,Web服务器负责处理HTTP...
首先,我们要理解Tcl是一种动态类型的脚本语言,广泛用于快速开发、自动化任务和嵌入式系统。其语法简洁,易于学习,特别适合于系统管理、GUI构建和网络编程。而Java则是一种广泛应用的面向对象的编程语言,以其跨...
tcl.lang.Interp 依赖包jacl-1.2.6.jar
expect4j依赖的com.springsource.tcl.lang.jacl-1.4.1.jar包下载
- **Portal脚本**:基于Websphere扩展,支持TCL和JACL脚本,适用于复杂的管理任务,例如用户迁移和数据库迁移。它还整合了ANT的构建和批处理功能。 - **XML配置接口**:通过XML文件直接修改Portal配置,支持导入...
4. **Java API for Lotus Domino (JACL)**:对于更复杂的应用需求,开发者可以使用JACL进行服务器端编程,JACL提供了与LotusScript类似的接口,但使用Java语言,可以充分利用Java的强大功能。 5. **XPages**:随着...
在 Java 平台演进中,作者首先介绍了其他语言对 Java 平台的影响,包括 Hecl、Jacl、Clojure、Ync/Javascript、Joy、Jv-language、CAL、Aardappel、Funnel、MiniPLAN、SixxBDC Scheme、ABCL、Lisp、PS3i、HotScheme...
1. **测试题目**:这部分可能包括了多选题、填空题、问答题等形式,涵盖编程语言、系统运维、网络技术等多个IT领域的基础知识和实践应用。 2. **错误类型和原因**:针对每一道题目或者报错实例,文档会解释出错的...
Java对Domino的访问是IBM Lotus Domino开发中的一个重要主题,它允许开发者利用Java语言与Domino服务器进行交互,实现各种功能,如数据存取、邮件处理、应用逻辑控制等。在IBM官网上,这一主题被详细解读并分为上下...
唯一的,完整的Java XUL /嵌入式脚本解决方案。 JFCML不仅仅支持AWT和Swing;还支持AWT和Swing。 但是Java的ClassLoader... 此外,大多数主要的脚本语言,包括JavaScript,BeanShell,Jython,Jacl(Tcl),JRuby等。
2. **LotusScript**:Lotus Domino的脚本语言,用于编写服务器端逻辑。教程可能会涵盖LotusScript的基本语法、数据类型、控制结构、错误处理以及如何与其他Domino对象交互。 3. **Formula Language**:用于编写计算...