利用 ANT 实现自动化部署管理 WebSphere Application Server 5.x 下的应用

题前说明:本文所做的测试是基于 WAS5.1 的,若是其他 WAS 版,请具体调整,或参考相应版本的红皮书。

WebSphere Application Server (WAS) 确实给我们提供了一个很方便的管理控制台,可以手工很轻松的部署应用程序,管理服务器;有得亦有失,因为它不能像其他很多应用服务器那般拷贝文件的方式进行部署,所以给像 DailyBuild 那样全自动化的过程制造了一些障碍。

其实 WAS 也提供了接口(SOAP 和 RMI)可通过脚本来完成对服务器及应用程序的管理,只是使用起来稍显麻烦,还得钻研一番。你可以采用三种途径来使用 WAS 的接口:

1. WASADMIN 命令行。最灵活,可以编制自己的 Jacl 脚本文件
2. WAS 提供的 ANT  TASK,对常用功能进行了封装,WAS_HOME/bin/ 下有这个 ws_ant.bat
3. 自行编程调用,曾有浅尝

下面介绍的是通用 WAS 提供的 ANT  TASK 来完成 WAS 应用的部署、卸载、起停。我们要用到的已封装好 ANT  TASK 的包是 WAS_HOME/lib/wsanttasks.jar,打开这个文件,在包 com.ibm.websphere.ant.tasks 可以看到许多的 Task 类:

DefaultBindings, InstallApplication, Java2WSDL,JspC,ListApplications, Messages, ModuleValidator, NLSEcho, ServerControl, ServerStatus, StartApplication,StartServer, StopApplication, StopServer, UninstallApplication, WsAdmin, WSDL2Java, WsEjbDeploy

看看那些可以发掘来用的,其中 WsAdmin 是个领头的,相当于 WsAdmin 命令行,如果你熟悉 WsAdmin 命令的话,只要它你就能完成所有的操作,我在脚本中对不便于用其他 Task 完成的任务就使用 WsAdmin。看下面的 ANT build.xml 脚本及完成部署及启动应用的执行效果。

执行效果:

Buildfile:E:\Workspace\Eclipse\TestSwt\build.xml
installAndStart
:
wsInstallApp:
[wsInstallApp] 正在安装应用程序 [c language=": est.ear"][/c]

...
  [</span><span style="color: #000080;">wsadmin</span><span style="color: #0000ff;">] WASX7209I: 使用 SOAP 连接器连接到节点 sr3Manager 上的进程“dmgr”;进程的类型为:DeploymentManager
  [</span><span style="color: #000080;">wsadmin</span><span style="color: #0000ff;">] ADMA5016I: 启动安装 test。
  [</span><span style="color: #000080;">wsadmin</span><span style="color: #0000ff;">] ADMA5005I: 在 WebSphere 资源库中配置应用程序 test
  [</span><span style="color: #000080;">wsadmin</span><span style="color: #0000ff;">] ADMA5001I: 应用程序二进制文件保存于 /opt/WebSphere51/DeploymentManager/wstemp/Script116f1164d5a/workspace/cells/sr3Network/applications/test.ear/test.ear
  [wsadmin] ADMA5011I: 清除应用程序 test 的临时目录完成。</span>
  <span style="color: #0000ff;">[</span><span style="color: #000080;">wsadmin</span><span style="color: #0000ff;">] ADMA5013I: 应用程序 test 安装成功。
[</span><span style="color: #000080;"><u>wsInstallApp</u></span><span style="color: #0000ff;">] 已安装的应用程序 [c language=": est.ear"][/c]

wsStartApp:
     [echo] Start Application test on sr3Serv1/sr3Serv2
  [wsadmin] WASX7209I: 使用 SOAP 连接器连接到节点 sr3Manager 上的进程“dmgr”;进程的类型为:DeploymentManager
BUILD SUCCESSFUL
Total time: 33 seconds

说明:

1. 在 build.xml 间杂着许多的注释来更清楚的阐述,也用来同 WsAdmin 命令进行对照理解,实际中可去除那些累赘。

2. 以上测试是基于 Cluster 的,在 sr3Cluster 下有两个应用服务器 sr3Serv1 和 sr3Serv2,应用程序是部署在 sr3Cluster 上的。对于未配置集群的 WAS 会更简单些,脚本中也有提及,请看官自已斟酌裁剪,如有什么疑问可与本人共同探讨
大致就是 wsInstallApp 的 options 中 -cluster sr3Cluster 改为 -server server1,应用启停时的命令中 process=server1

3. 并且配置了 WAS 的安全性,所以登录时必须提供用户名和密码

4. 例子中是部署了一个 ear 包,如要是部署 war 包的话,在 options 中要指定访问 Web 的上下文,如 -contextroot test

5. 安装应用之后立即就启动,可能会因服务器还没有真正完成对新应用的配置而启动失败,所以可以在安装完应用之后适当的 <sleep seconds="5"/> 像这样等待几秒钟。

相关资料:

1. WAS中关于命令行部署EAR
2. 使用脚本编制(wsadmin)
3. wsadmin管理WebSphere
4. IBM WebSphere 应用服务器 5.0 系统管理与配置 红皮书
5. WebSphere Application Server6.0无人执守部署概要

本文链接 https://yanbin.blog/ant-auto-deploy-application-was-5-x/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

18 Comments
Inline Feedbacks
View all comments