在同一JavaEE服务器中部署多个WAR应用程序

时间:2014-12-04 06:38:49

标签: java tomcat java-ee architecture jboss

我们的团队讨论是否应该将多个WAR应用程序放入同一个JavaEE服务器(例如Tomcat,JBoss,Websphere)。

对于相同的JavaEE服务器,coz

  • 共享同一服务器的相同资源(CPU,内存,TCP端口)
  • 能够轻松分享会话,例如启用单点登录
  • 相同的JVM,能够访问JVM内部资源
  • 仅管理一台服务器的可维护性

对于多个JavaEE服务器,coz

  • 降低风险。当一台服务器停机时,如果与OS或硬件无关 级别失败,两个WAR应用程序也会关闭。
  • 清除部署。一个应用程序 部署到一台服务器。整件事可以打包在一起 作为一个(如单个TAR)。备份更容易,更独立 并在不影响他人的情况下再次恢复。
  • 能够投入一定的资源。如果一个WAR应用程序更重要 相比之下,它的JavaEE服务器应该分配更多 堆大小而另一个分配较少。
  • JavaEE服务器的开销不是太大,因为硬件成本很低。没有 需要共享相同的资源。
  • 如果两个WAR应用程序位于相同的主域中,仍然可以共享 会话,例如启用Cookie单点登录。
  • 不同的WAR应用程序应在分离的JVM上运行,以防止非法访问
  • 仅管理一台服务器的可维护性

我知道在Deploying multiple web apps in same server有一个类似的帖子但是不够详细。

是否有更多支持或反对这种做法的论据?哪种做法是工业标准?请分享您的意见。

1 个答案:

答案 0 :(得分:1)

不值得暴力讨论:)

答案与往常一样,取决于您的应用程序对资源,可用性等的要求。没有一种尺寸适合所有答案或最佳实践。如果您可以在问题中阐明您的要求,那么我们可以为每个人提供具体的利弊。

但是,关于共享TCP端口的观点,许多服务器都具有域的概念,这些域为端口,JDBC连接池等资源创建单独的上下文。您可以将WAR部署到不同的域,并且它们将获得唯一的端口,上下文根和其他资源,但仍然共享相同的应用程序服务器实例。