近日,在生产环境下遇到一次was部署包的错误。
正常的部署包时,报出如下错误:

而且很容易注意到,许多配置项出现了冗余的情况,如下:

通过错误提示,并没有提示具体的解决方法。
考虑了两个方面问题:
(1)、程序包的问题;
(2)、WAS故障;
于是,接下来为了排除WAS本身的故障,部署了WAS本身的测试包。部署时,遭遇了相同的报错情况。暂时怀疑是WAS问题。于是开始检查节点的服务、节点的同步状态、web服务的状态。检查发现,这些配置都是正确的。
之后重启了WAS服务,然后再次尝试部署ear包,仍然遭遇相同报错。
在万般无奈之下,选择了对WAS集群下这台DM管理服务器进行重启。
重启之后,令人高兴的事情发生了。部署ear包,部署成功。只是出现了一个节点未同步的问题,如下:

虽然遇到这个问题,但比之前的要好很多。
于是查看日志,发现节点4没有同步成功。
对节点4进行检查,检查发现node agent正常、节点4同步正常、节点4web服务正常。于是手工关闭了该节点的node agent,然后手工启动,待服务与同步都完成以后。
再次查看部署包的启动情况,发现已经对节点4进行了同步并完成。
这次部署包的任务完成了。但是为何出现这样的错误,有些疑惑,不知道这是什么引起的呢?
待这个包,部署完成后,对应用进行查看,又发现了问题:应用不能启动,报出http500错误。
查看was日志,获取到部分的日志信息,如下:

怀疑是本身包就是有问题的。联系开发人员。经过一番协调、交涉以后,发现原来是配置文件有些问题。对于was集群下程序设有专门的配置文件,而刚刚入职不久的开发人员还未知晓这件事,汗
。对目前部署的包用的配置文件中,我看到程序里有这样的信息:“采用抽象类org.mybatis.spring.support.SqlSessionDaoSupport提供SqlSession 访问数据库”。然后看了一下应该适用于was集群下的配置文件,发现里面有按照不同用户的jndi的连接配置信息(终于看到了熟悉的信息,
。
于是重新打包,再部署到was集群上,未在遇到问题。
?
小结:
本次部署不成功的本质问题是ear包本身即存在问题。因此后续was出现的这种诡异报错,就不能单单从was本身去确定了。这次还是吸取了一些经验,那就是万物之始,对于was的程序部署一定要先确认程序包是否有问题,然后再去展开,否则没有方向性的胡乱尝试是件很危险的事。