第一次写博文,可能有点兴奋和啰嗦,先说说使用的环境:resin+spring+struts,服务器是测试用的,由运维同事维护,里面有几个项目,仅供开发的同事修改。
事情从昨天下午开始, 查看测试服务器log时,发现spring不断的加载类文件,但却没有任何错误信息提示,初步判断应该是某开发的同事修改了配置文件导致的问题,但看了一遍没发现什么问题,难道服务器作了什么动作?于是问了一名运维同事,说没作什么修改,一听心血来潮,因为这个问题可以加入我的问题库里面。
因为配置正常,怀疑是某些类加载不正常导致,先用排除法排除代码问题吧:
1.删掉刚加入的文件,结果:spring仍然不断加载
2.删掉所有class文件,结果:spring仍然不断加载
3.删掉struts.xml和spring-context-config.xml中没必要的配置,结果:spring仍然不断加载
4.把log改成debug输入,结果:日志出现java.lang.ClassNotFoundException: org.junit.Test和java.lang.NoSuchFieldException: DEFAULT_PARAM
刚开始看到4的情况时有些高兴,一查资料,第一个是spring-test.jar需要对应的junit4.4的jar包,不支持高版本导致,第二个是struts2.3的一个bug,都不影响正常使用。我的天 --!
好,越矬越勇。
5.在我电脑上,模拟一份测试服务器的配置,结果:本地启动项目,spring仅加载一次,不会再重新加载。
问题的关注点又回到测试服务器上,找了另一名运维同事,让他查查这个项目,一开始他还拿我上面4里面的日志信息说事,好说歹说才肯查,一查到端口号,我的天,竟然有另一个新建不久的项目使用了跟我这个项目相同的端口。
端口修改后,spring启动正常。
总结,spring不断加载,除了类加载不成功,配置文件配错了,还有可能是项目的端口号被占用。
本文出自 “小草” 博客,转载请与作者联系!