采用共享jar包部署struts2+spring集成项目会遇到的问题
此时tomcat启动时,会先加载a项目,再加载b项目(一定要是这个顺序才会出现问题,比如tomcat是通过list file顺序部署的)。(关于tomcat的classloader请参考:http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)
?
tomcat/lib下的jar包:
请参考附件?
?
a项目(WEB-INF/lib下没有jar包):
?
spring-config.xml只有一句,用来扫描注解bean:
?
?
?4、_nullHandlers何时注册的呢?这个是问题的关键,通过查看源代码,会发现:
?6.3.2、b项目启动时注册的handler,该handler有b项目的spring容器引用(里边有project bean的):
?
6.3.4、所以呢最后一个项目的null handler有效。就造成了之前的问题。
?
所以解决办法就是不能共享这些jar包。或者保证spring容器中没有同名的bean。。
?
示例项目源码请在附件中下载。建议下载源码跟踪一下。
?
另一个类似的bug:
struts2+spring集成bug——使用AOP时可能遇到的问题分析
哥们 有意向来我们这里不.