我正在阅读Tomcat:The Definitive Guide,了解如何从同一个安装部署多个tomcat实例。它们描述了如何分离出特定于实例的文件夹,从而使核心CATALINA_HOME内容保持干净;这种分离也为tomcat版本之间的干净升级提供了基础。
他们建议在实例特定目录中提取的许多内容都有意义,例如conf和webapps - 这些文件夹包含明显的应用程序特定数据。但是,还建议删除包含运行时类的jar的所有文件夹。直接引用他们的书:
此外,可能需要从共享,服务器和公共目录树加载一些jar文件和类文件。这意味着要使多个实例起作用,每个Tomcat实例必须拥有自己的这些目录集;它们不能由两个配置不同的Tomcat JVM实例共享。
为什么单独的实例需要自己的jar文件?是不是可以在同一组jar文件中指出两个同时执行的jvm?
注意:这是关于tomcat 5.5和6.0的
答案 0 :(得分:0)
注意,我正在回答我自己的问题。首先,需要注意的是,您需要拥有lib目录的实例特定副本的原因与对单个jar文件集的并发jvm访问无关。
您必须将这些库文件复制到特定于实例的目录结构(也称为CATALINA_BASE)中的原因是,在tomcat 5.5和早期6.0版本中,tomcat只能使用单个文件夹作为在共享,服务器和通用。这意味着如果给定的tomcat实例需要在这些文件夹中添加或修改库,则必须创建共享,公共和服务器的全新实例特定版本,或者对库进行修改(如果在CATALINA_HOME中完成),则影响运行该CATALINA_HOME的所有实例。
从TOMCAT 6.0.24(或者......)开始,在CATALINA_BASE和CATALINA_HOME中从共享,公共和服务器库文件夹加载类的能力提供了更精细的控制粒度,以便您可以将修改放入BASE,他们将根据需要覆盖HOME。这意味着您只需要在BASE中进行特定的修改;没有必要复制整个事情。事实上,在这些较新版本的tomcat中,相对于这些库及其对每个tomcat实例的类路径的分层影响,提供了相当多的配置。