Tomcat下项目很多,每个项目都重复使用了很多相同的jar包,那么设置jar包共享可以节省Tomcat装载程序的内存开支。
在Tomcat下设置多项目jar共享常见的有两种方法。这两种方法的共同点是修改tomcat下conf目录中的catalina.properties文件。
第一种方法:修改catalina.properties中的common.loader属性。在common.loader属性原值基础上追加“,${catalina.home}/lib/shared/*.jar”,然后启动tomcat。很显然,需要将共享的jar包放到一个shared目录里,然后将shared目录放到tomcat下lib目录里。
第二种方法:修改catalina.properties中的shared.loader属性。设置shared.loader属性值为${catalina.base}/shared/*.jar,然后启动tomcat。同样需要将共享的jar包放到shared目录下,不过这次是将shared目录放到了tomcat安装目录下。
说到这会有人疑惑,共享的jar包必须放到自建的shared目录下吗?shared目录的位置必须按照上述的内容存放吗?当然不是的,上述两种方法,对共享jar包的目录及位置没有任何限制,只不过这里为了方便管理和说明,统一归置到了tomcat安装目录下,你完全可以放到别的地方,使用绝对路径引用亦可。
有人会问,common.loader和shared.loader有什么区别?可以拜读下面的链接内容。
http://blog.sina.com.cn/s/blog_4db5ab6701013kuw.html
我觉着使用shared.loader更合适,更符合应用场景。
共享jar包遇到问题1:
直接把两个项目的jar都复制在同一个目录,
启动tomcat。
但出现错误:
…….WEB-INF/lib/struts2-core-2.3.2..jar!/struts-default.xml:71:140
说
Caused by: Unable to load bean: XXXX 对象
结论:
jar包有重复!删掉重复jar包即可。
而且不能有不同版本的jar包,如
aaaa_1.1.jar
aaaa_1.2.jar
需要删掉1.2或者删掉1.1
但要与其他jar包版本适配。
共享jar包遇到问题2:
1,个是spring mvc+hibernate (spring 3.2.3)
2. ssh
而且spring 的版本还不一样, (spring 4.0.2)
不过spring最强大的竟然是向下兼容,
去掉重复的jar包之后,
发现 springmvc 项目,多了以下两个jar包
1. common_dhcp
2.common_pool
补充完就可以了。
完美启动,
非堆内存减少了几十M,效果可以。