背景
最近在做一个系统的集成的时候碰到Webapp下只放集成项目启动就没问题,然而把集成项目放到公司产品的Tomcat的webapp下就报Class无法加载等问题.

后面跟踪发现是由于【公司系统】大量使用System.setProperty将本应该是【公司系统】webapp的数据写到了全局中了,巧合的是【第三方应用】启动的时候又在【公司系统】webapp之后,所以问题就出现了。
解决办法
由于两个webapp启动并没有要求谁先加载,谁后加载,那么通过修改webapp加载顺序来确保【第三方应用】在【公司系统】之前启动
在tomcat/config/localhost/目录下添加文件,文件名=webapp名称,文件内容如下
<Context path="/sreport" docBase="sreport" reloadable="false"></Context>
总结
由于webapp名称不可修改,如果名称可以修改的话,可以考虑将名称改下使其排到前面去,此方法也是无奈之举。
在集成项目中,遇到因System.setProperty导致的数据污染问题。通过调整Tomcat中webapp的加载顺序,确保第三方应用在公司系统前启动,解决了Class无法加载的问题。
658

被折叠的 条评论
为什么被折叠?



