我即将在单个 Tomcat 服务器上部署几个 grails 应用程序,我有以下疑问:
- 在内存使用方面:将通用 grails 库放在 shared/lib 下而不是将它们放在每个应用程序的 war 文件中是否有区别?有这些罐子的清单吗?
- 如果是这样,是否有一种机制不将这些 jar 打包到“生产”环境的 war 文件中?我正在使用 NetBeans 6.7。
- 我即将使用Tomcat 5.5;有什么经验建议改用 6.0 吗?
谢谢
1) 将 jars 放在 shared/lib 或 common/lib 中可能会减少 PermGen 所需的内存量。恕我直言,最大的优势是上传战争文件要快得多。但请记住,正如 TripWird 所说,共享 jar 将所有已部署的应用程序与同一个 grails 版本联系起来。升级变成了“一无所有”的游戏。
2)如果你使用
grails prod war --nojars
然后所有 jar 文件都被排除在战争之外。
我认为最好的做法是让库保持在战争中,因为如果你更新一个共享的库,那么你必须确保它与你所有使用它的应用程序兼容。我们通常使用 grails 和 spring 来执行此操作,这样我们每次升级时都不必返回并进行兼容性测试。
此外,我相信 tomcat 会为每个应用程序加载一个类的实例,因此您不会通过将其用作公共类来节省内存。
也可以看看: