我将有多个网络应用程序。所有 webapps 都是基于 java 并使用 Spring/hibernate 等。如果我将所有第三方 jar 放在每个 war 文件中(对应于每个 webapp);会有巨大的内存占用!
当第三方 jars(如 spring/hibernate )在所有 webapps 中很常见时;使内存使用量最小的最佳方法是什么?我能想到的一种选择是将这些第三方 jars 放在 Tomcat/lib 中,以便它们可以在多个 webapps 之间共享。
还有其他更好的方法吗?
我将有多个网络应用程序。所有 webapps 都是基于 java 并使用 Spring/hibernate 等。如果我将所有第三方 jar 放在每个 war 文件中(对应于每个 webapp);会有巨大的内存占用!
当第三方 jars(如 spring/hibernate )在所有 webapps 中很常见时;使内存使用量最小的最佳方法是什么?我能想到的一种选择是将这些第三方 jars 放在 Tomcat/lib 中,以便它们可以在多个 webapps 之间共享。
还有其他更好的方法吗?
在我看来,您将内存 (RAM) 与磁盘存储混淆了。
如果您希望最大限度地减少磁盘空间的使用,那么可以,您可以将 jar 文件放在共享位置 - 请参阅http://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment上的文档.html#Shared_Library_Files
这不会对内存使用做任何事情——每个应用程序都将在自己的类加载器下加载它需要的类。
是的,Tomcat 的 Common 类加载器只会将这些 jars 加载到 Tomcat 的 common lib 中一次,因为所有 webapps 共享相同的 common 类加载器。但是由于各种问题,有些罐子无法工作。所以你必须尝试。