WebSphere服务器下Java Web项目更新部署的优化方案

7 篇文章 0 订阅
5 篇文章 0 订阅
现状
项目已部署在生产环境的WebSphere服务器集群下,但公司并没有在生产环境下集成项目自动构建工具Jenkins。

但是,由于项目稳定性的需要,又不能进行全量部署或增量部署。
注:如果随意进行全量部署,可能会将线上已经稳定的代码替换掉,变成测试环境中未经严格检验的代码。

傻瓜式部署

所以,当有业务逻辑发生变更时,为了谨慎起见,只能替换发生变动的字节码文件或jsp文件。
其中,假设我们需要替换的文件是HelloWorld.class,部署的项目位于/opt/IBM路径下,那么需要执行的Linux命令如下:
找出HelloWorld.class所在路径并进入:

find /opt/IBM/ -name 'HelloWorld.class'
cd /opt/IBM/foundpath/

检查HelloWorld.class的最后修改日期:

ll HelloWorld.class

上传最新的HelloWorld.class文件:

rz -y

再次检查:

ll HelloWorld.class

一共需要执行四条命令才能完成对HelloWorld.class文件的更新操作,而且极易出错。

优化脚本

现在Shell脚本(deploy.sh)中写入以上四条命令,以达到高效低失误执行的目的:

#将sh后的第一个参数定义为变量var
var=$1
echo var: $var
backdir=/opt/backup/
updir=/opt/upload/

#找到vars对应文件名所在的路径,并分离出文件名和路径名
wholename=`find /opt/IBM/ -name $var`
echo wholename: $wholename

#分离出路径名和文件名
dirname=${wholename%/*}
filename=${wholename##*/}
echo dirname: $dirname
echo filename: $filename

#进入文件所在的路径,检查并剪切原文件到备份文件夹下
cd $dirname
echo firstcheck:
ls -l $filename
mv $filename $backdir

#进入上传文件夹,将最新文件剪切到原文件路径下
cd $updir
mv $var $dirname

#进入文件所在的路径,进行检查
cd $dirname
echo secondcheck:
ls -l $filename

注意:以上脚本只适合对只有唯一命名的class文件进行替换。比如find命令的搜索范围/opt/IBM文件夹下只有HelloWorld.class,就可以使用以上脚本。

针对文件路径不唯一的优化
在明确知道在哪个路径部署文件的前提下,将find后面的路径写得更详细一点,把 find /opt/IBM/ -name $var 改为 find /opt/IBM/correct/path/

针对文件不存在的优化
当文件不存在上述路径中,显然deploy.sh是不适合执行的,所以需要多一步检查工作checkfile.sh

    var=$1
    echo var: $var
    
    wholename=`find /opt/IBM/ -name $var`
    echo wholename: $wholename

如果执行checkfile.sh能打印出文件的完整路径,那么就可以执行deploy.sh部署文件。

./checkfile.sh HelloWorld.class
./deploy.sh HelloWorld.class
Shell脚本中涉及到提取路径名和文件名的操作:

提取文件名

${var##*/}

该方式是从左开始最大化匹配到字符"/",然后截掉左边内容(包括字符"/"),返回余下右侧部分。

提取路径名

${var%/*}

该方式是从右开始第一次匹配到字符"/",然后截掉右边内容(包括字符"/"),返回余下左侧部分。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值