隔叶黄莺 The Blog of Unmi

〖隔叶黄莺三四声,挂壁飞瀑千万尘。若是人间无净土,此处为何妙语真! 隔叶黄莺四字,本非取自此句,而有寄寓他意,因见妙语,亦与予心合!〗

BlogJava 首页 新随笔 联系 聚合 管理
  380 Posts :: 106 Stories :: 1178 Comments :: 0 Trackbacks

题前说明:本文所做的测试是基于 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:\test.ear]...
  [
wsadmin] WASX7209I: 使用 SOAP 连接器连接到节点 sr3Manager 上的进程“dmgr”;进程的类型为:DeploymentManager
  [
wsadmin] ADMA5016I: 启动安装 test。
  [
wsadmin] ADMA5005I: 在 WebSphere 资源库中配置应用程序 test
  [
wsadmin] ADMA5001I: 应用程序二进制文件保存于 /opt/WebSphere51/DeploymentManager/wstemp/Script116f1164d5a/workspace/cells/sr3Network/applications/test.ear/test.ear
  [wsadmin] ADMA5011I: 清除应用程序 test 的临时目录完成。

  [wsadmin] ADMA5013I: 应用程序 test 安装成功。
[
wsInstallApp] 已安装的应用程序 [c:\test.ear]
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无人执守部署概要




[版权声明]
本站内文章,如未特别注明,均系原创或翻译之作,本人 Unmi 保留一切权利。本站原创及译作未经本人许可,不得用于商业用途及传统媒体。网络媒体可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。及此说明,重之之重。
posted on 2007-12-19 14:49 隔叶黄莺 阅读(2249) 评论(17)  编辑  收藏 所属分类: Mid-Ware

Feedback

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2007-12-19 16:50 ab
good....  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2007-12-20 00:08 隔叶黄莺
其实一个部署脚本写成这样远远比编制一个 Jacl 脚本复杂不知多少倍,所以在实际应用中我还是打算把部署的任务写到一个 Jacl 脚本中(大概想来写不上十行代码就能搞定),再交由 Ant 去 exec 执行 wsadmin -f scriptfile,这样做还有一个好处就是无需去设置使用谁的 jdk,或者打定了用 ws_ant.bat,更不用与服务器来回建立多个 SOAP 会话。如此设想想,以上内容可能也就是纯做研究,知道 WAS 有这么回事,也行适当时候会用上,只现在未曾预见而已。  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-03-26 18:28 心境如湖水
好,收藏!  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-04-14 15:11 ccutbhj
真的很好,非常专业,呵呵  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-06-13 00:04 was.root
假如exec失败的话,会不会返回消息给ant?  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-06-30 14:01 xxuu503
代码:
<target name="test">
<wsInstallApp user="xxuu503" password="xxuu503" profileName="AppSrv01" wasHome="C:\Program Files\IBM\WebSphere\AppServer" host="192.168.30.164" conntype="soap" port="8879" ear="C:\test\test.war" options="-cluster cluster -nodeployejb -reloadEnabled -appname test_war -usedefaultbindings -MapResRefToEJB [[ 'sysmanager project' '' test.war,WEB-INF/web.xml zhengjian/DataSource javax.sql.DataSource jdbc/zhengjian2 DefaultPrincipalMapping textmodeCellManager01/zjdb2 ]]" />
<sleep seconds="5"/>
<wsStartApp user="xxuu503" password="xxuu503" host="192.168.30.164" conntype="soap" port="8879" application="sysmanager" washome="C:\Program Files\IBM\WebSphere\AppServer" />
</target>

ant显示:

Buildfile: D:\workspace\CodeCopyer\build.xml
test:
[wsInstallApp] 正在安装应用程序 [C:\test\test.war]...
[wsInstallApp] profileName=AppSrv01 registry=C:\Program Files\IBM\WebSphere\AppServer\properties\profileRegistry.xml
[wsInstallApp] profileHome=C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01
[wsInstallApp] 已安装的应用程序 [C:\test\test.war]
[wsStartApp] 正在启动应用程序 [sysmanager]...
[wsStartApp] 已启动应用程序 [sysmanager]
BUILD SUCCESSFUL
Total time: 8 seconds


但是根本没有效果  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-06-30 14:02 xxuu503
我的websphere里找不到部署上去的程序  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-06-30 16:17 隔叶黄莺
-appname test_war

启动的时候应用程序名也应该是
test_war 吧,而不是 sysmanager

你之前部署过 sysmanager 吗?  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:00 xxuu503
option里边的东西,我是依据手动打包时

websphere给的脚本写的(就是手动打包,在完成前,可以在集成解决方案控制台的最右边,点击panel里的命令辅助链接得到的脚本)


AdminApp.install('C:/test/test.war', '[ -nopreCompileJSPs -distributeApp -nouseMetaDataFromBinary -nodeployejb -appname test_war -createMBeansForResources -reloadEnabled -nodeployws -validateinstall warn -noprocessEmbeddedConfig -filepermission .*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755 -noallowDispatchRemoteInclude -noallowServiceRemoteInclude -MapResRefToEJB [[ "sysmanager project" "" test.war,WEB-INF/web.xml zhengjian/DataSource javax.sql.DataSource jdbc/zhengjian2 "" "" ]] -MapWebModToVH [[ "sysmanager project" test.war,WEB-INF/web.xml default_host ]]]' )
  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:02 xxuu503
实际上我也不想写的这么乱,可是我不知道如何通过ant

给war包指定 jdbc数据源

ibm的文档上也没有这些东西



多谢lz回复我的问题  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:06 xxuu503
最近找了好多地方

csdn没有ant板块,近似的板块都可以长草了

在javaeye入门讨论发问,没有人回答

在javaeye的配置管理板块发文,结果被删贴扣分

ibm的文档只会告诉你,page B会回答你的问题
然后page B会告诉你,page C会回答你的问题
..............
而且page A,B,C之间根本没有超链接
必须手动进行搜索




郁闷的要死  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:10 隔叶黄莺
事实上,把命令写在一个 Jacl 脚本文件中比用 ant 的 build.xml 脚本要方便的多  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:28 xxuu503
我不会写jacl,有没有教程?

另:ant如何调远程的linux服务器上的jacl脚本?  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 15:32 xxuu503
我研究一下  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 16:01 xxuu503
是不是打成ear包,就没这么多麻烦了?

如果不用ejb,能打成ear包么?  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 16:41 隔叶黄莺
是的,打成 ear 包要方便很多,ear 中可以描述 context 和 bind 等信息。  回复  更多评论
  

# re: 利用 ANT 实现自动化部署管理 WebSphere 下的应用 2008-07-01 16:42 隔叶黄莺
在 WebSphere Application Server 的红皮书里可以找到相关的例子。  回复  更多评论
  



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-08-25 11:47 编辑过