基于Spring的应用程序部署的最佳实践是什么? 我有至少两个基于Spring的应用程序。我正在Tomcat上部署它们 - 具有不同CATALINA_BASE的同一服务器的两个实例。
结果是我的一个应用程序的大小为30MB,另一个是19MB。每个都有相同的库,如Spring,Apache CXF,Hibernate,C3P0等。
保持每个应用程序中的lib重复并且每次部署上传30MB是否正确且安全(稳定)?或许我应该复制常见的图书馆?
答案 0 :(得分:4)
我建议保留原样。
你可以将一些共享库放入Tomcat的lib目录中,但是这将使得将来很难升级,例如:当您想要升级库时,您需要同时升级这两个应用程序。
Tomcat为每个WAR提供了自己的类加载器,并使它们彼此隔离。在两个不同的WAR中使用相同的JAR不会导致问题。
答案 1 :(得分:0)
如果你在每场战争中加载很多课程,你最终可能会耗尽PermGen空间。如果您通过tomcat的lib目录共享jar,则可能必须加载较少的类,因为通用类加载器只会为所有应用程序加载一次类。如果每个应用程序中都有相同的jar,则与每个应用程序关联的类加载器可能会加载相同的类,这些类可以乘以您加载的类的总数。
然而,对于你指出的罐子,你最好的选择可能是将它们包括在战争中。您可能希望最终在不同的战争中使用每种技术的不同版本。如果它成为问题,可以使用java参数增加PermGen空间。