单个大型Web应用程序或多个小型Web应用程序?

时间:2014-08-26 06:54:35

标签: java tomcat servlets war

我有一个网站,由大约20个不同大小的Java Web应用程序(基于Servlet / JSP的webapps)组成,每个都处理不同的网站区域。

所有20场战争的总面积为350mb,但通过将它们结合起来,我预计能够最终减少这种战争并实现综合的缓存效益。

最好是将它们分开,还是将它们合并到一个Uber webapp war文件中? (以及为什么)

我特别感兴趣的是了解合并它们的任何技术缺陷。

2 个答案:

答案 0 :(得分:1)

我“投票”将它们结合起来。

赞成

  • 代码共享:如果将它们组合在一起,您可以在它们之间共享代码(因为只有一个代码)。
    这不仅适用于您的代码,它也适用于您使用的所有外部库,这将是我认为的更大收益。

  • 更少的内存:Combined还需要更少的内存(可能非常重要),因为多个应用程序使用的外部库只需要加载一次

  • 可维护性:此外,如果您更改代码库或数据库中的某些内容,则只需在一个位置更改并仅重新部署一个应用程序

  • 更容易同步:例如,如果单独的应用程序在数据库中执行一些关键操作,那么与所有内容都在一个应用程序中的情况相比,它们更难同步。

    < / LI>
  • 代码的不同部分/模块之间的协作更容易。如果将它们组合在一起,您只需调用其他模块的方法即可。如果它们位于不同的Web应用程序中,则必须以脏的方式执行,如HTTP调用,RMI等。

缺点

  • 它会更大(显然)。如果你担心它太大,只需将libs从部署战中排除,把它放在tomcat libs下。

  • 单独的应用可能会使用同一个库的不同版本。但是,如果能够更轻松地完成工作,那么最好早点解决它们。

  • 另一个缺点可能是部署时间较长。再次,“外包”库可以帮助提高速度。

答案 1 :(得分:1)

在单个文件中使用时,在大小,内存问题或性能方面没有任何缺点,因为系统每天都在变得更快。正如您所说,在不同的应用程序或同一个应用程序中运行,消耗的总资源在处理或计算能力方面将是相同的。现在它的维护和管理问题决定保持一个或多个。如果您有多个模块可能经常更改并且彼此独立,则最好有多个Web应用程序,通过RMI或WS调用进行相互通信(如果需要)。如果所有这些都被定位为一个单元,那么一切都会立即改变,您可以使用单个应用程序。拥有多个应用程序将有助于根据模块级别的功能变化轻松安装和更新每个应用程序

deploying multiple applications to Tomcat

http://www.coderanch.com/t/471496/Tomcat/Deploying-multiple-applications-WAR

希望有所帮助