在我们的组织中,我们有20个grails应用程序(从1.3.6到2.2.4),每个应用程序都部署在一个独立的jboss服务器中,但有时感觉有点过分,因为我们的用户数量不是很大(10-100个用户每个应用程序)所以我想在一台服务器上部署3到5个(可能更多?)的应用程序,鉴于此,分享常见的罐子会不会很好?
我知道这是可能的,如How to deploy multiple applications in Tomcat, share jars and have different datasources?所示,但我想知道这是否是一种在不影响性能的情况下减少所需服务器数量的良好做法。
如果是这样,我还应该考虑什么呢?
答案 0 :(得分:0)
这里有多个问题。您无需在独立的应用服务器实例中部署每个应用程序。可以在具有不同上下文名称的一个app服务器实例下部署多个应用程序您的应用程序jar应该在应用程序的WEB-INF / lib下。然后每个应用程序都使用这些jar获取自己的类路径。每个应用程序都可以拥有自己的jar版本,这些版本不会与任何其他应用程序的jar冲突。这是推荐的部署实践。
只有像数据库驱动程序这样真正共享的jar应该放在应用程序服务器的lib目录下 - 主要是因为它不在应用程序的控制之下。您的应用服务器管理员和DBA应该能够在需要独立于任何特定应用的情况下升级驱动程序。
分享应用程序jar并不是一个好主意 - 除非您非常确定所有应用程序生命周期都匹配。我的意思是 - 你应该永远不会遇到一个应用程序需要与其他应用程序相比不同版本的jar的情况。所有应用程序应该一起更改。只有这样你才能共享应用程序罐。
话虽如此 - 我的建议是避免分享罐子,因为迟早你会遇到这个问题,因为其中一个应用程序会先于其他应用程序。