一尘不染

部署Java应用程序(Tomcat / Glassfish)

tomcat

我们目前正在为大学设计一个项目,我们希望将其实现为逻辑模块和UI模块。我们几乎没有部署Web应用程序的经验,但是我们提出了以下替代方案:

  1. 将其部署为单个WAR项目(这将解决我们在与应用程序后端通信UI时遇到的问题)。
  2. 使用Web服务在同一服务器上部署两个WAR项目,以在项目之间进行通信。(我们有一个使用此方法的原型部署在Tomcat服务器上)
  3. 部署WAR项目和EJB项目。
  4. 部署一个EAR项目,其中将包含对WAR和EJB项目的引用。(我们有一个使用此方法的原型部署在Glassfish服务器上)

我们想知道这些选择中的任何一个是否不正确,或者是否有任何一个比其他的更好。具体来说,为什么将项目部署为EAR模块有用(或没有)?

目前该项目正在启动,因此我们现在仅会处理数百个用户。但是,如果项目成功,我们将需要与数百万个用户打交道。


阅读 311

收藏
2020-06-16

共1个答案

一尘不染

尽管Tomcat是一个servlet容器,但是所有其他选择都不是错误的,如果要使用EJB,则需要TomTo之类的东西,它是Tomcat扩展到完全EE支持的东西。或使用那个Glassfish。

最好的方法取决于您的特定要求:您是否需要/更重视模块的解耦,还是希望将事物捆绑在一起具有一致性和可靠性。EJB还具有一些可能令人感兴趣的其他好处,但是它们与每个项目都不相关。请注意,除了提到的替代方案之外,还有其他方案,例如基于JMS的通信,HTTP
REST通信以及使用OSGi来解耦程序包。

关于将项目作为EAR模块进行部署的原因,引用维基百科:“ EAR(Enterprise ARchive)是Java
EE使用的一种文件格式,用于将一个或多个模块打包到一个归档文件中,从而可以部署各种模块到应用程序服务器上的操作是同时发生的,并且是连贯的。它还包含称为部署描述符的XML文件,用于描述如何部署模块。”
因此,基本上,您可以获得归结为可靠性的耦合的好处,您将始终知道模块之间的部署方式。EAR模块很好地支持EE机制,例如EJB模块,您将获得一个可控制的容器。

已经存在一个线程什么时候适合使用EAR?什么时候应该在WAR中使用您的应用?,这可能很有趣。

2020-06-16