记录一下websphere下修改web.xml踩过的坑

直接说吧,背景是这样的,因为业务需求,需要在web.xml里增加一个listener配置,即:

<listener>
	<listener-class>com.publicity.util.TimerListener</listener-class>
</listener>

但是修改完配置文件重启应用后发现根本没有加载配置的这个类,一顿猛如虎的操作之后依旧不行,一怒之下。。。。。。我百度了,找到了一位神仙分享的经验,附上链接:大神之贴
了解到websphere并不是直接使用web.xml的,而是运行在部署的时候根据web.xml生成的web_merged.xml(神奇不)
也就是说光修改web.xml是不够的,还要修改web_merged.xml,至此就通透了许多了。
根据大神的指示使用了第二种方法来修改配置,原文:

使用WAS的web控制台进行更新web.xml文件(登陆控制台,选择程序后点击“更新”,选择“替换或添加单个文件 ”)。
WAS会自动把更改同步到web_merged.xml以及缓存目录下。(相当于WAS帮你进行了方法一的操作)
使用这个方法,你甚至都不需要重启WAS,也不需要重启应用。

然后。。。应用服务自己停了。。。还是得重启,不过无伤大雅,重启以后果然是一条好汉,配置的listener类果然被加载了。
但是(万恶的但是…),被调用的方法里,获取WebApplicationContext对象为空,以致后续代码报null exception,如图:
No Spring WebApplicationInitializer types detected on classpath(还是把报错信息粘出来吧,以免百度的时候找不到)
报错
看的我也是一脸蒙圈,以为是spring的相关配置没有配置全,但是。。。都配置了,包括网上说的东西也都配置了,可他就是不好使,在网上搜了一天也是没啥结果,快下班了,我又想起大神说的web_merged.xml了,一看,果然看出端倪了,生成的配置内容中,listener的顺序跟原来的不一样了,把新加的listener配置放到了这个配置前了

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

果断将新加的配置挪到了这个后面,再打到服务器上,重启was和应用,搞定!

现在还有多少单位在使用websphere我不知道,只希望我记录的这个坑能够对还在使用的童鞋们有所帮助

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值