系统因为属性文件冲突的原因,出现了bug。最后经过查找原因,终于定位到问题所在:struts在加载消息资源文件时,会存在一个map中,map的键对应为配置中的key属性。如果没有设置key属性,会放到默认的键上。因为两个struts配置文件中,都定义了默认的消息资源文件,导致系统出现bug。
由于系统中struts配置文件有好几十个,为了搞清楚到底是哪俩个文件导致,需要逐个查找配置文件。很多配置文件中,并没有配置消息资源文件,所以很多时候都做的是无用功。实在不想重复劳动,所以就想到用shell脚本实现。
最原始的想法是把所有配置文件都找出来,然后用命令挨个查证配置文件。这时想到了xargs命令。
脚本如下:
find . -name "*.xml" | xargs grep -i "<message"
结果如下:
./struts_cfg/solb/struts-config.xml: <message-resources parameter="resources.ResourceMenu" key="menu"/>
./struts_cfg/solb/struts-config.xml: <message-resources parameter="resources.ResourceInterface" />
./struts_cfg/solb/struts-config-special.xml: <message-resources parameter="resources.ResourceInterface" />
./struts_cfg/solc/struts-config.xml: <message-resources parameter="resources.ResourceInterface" />
./struts_cfg/solc/struts-config.xml: <message-resources parameter="resources.ResourceMenu" key="menu"/>
./struts-config.xml: <message-resources parameter="resources.ApplicationResources" key="test"/>
./meeting-strutsconfig.xml: <message-resources parameter="resources.MeetingResources" key="meeting"/>
这时就很容易定位到问题所在了。