没有EJB的Web应用程序,使用WAR还是EAR?

6
我有一个Java EE Web应用程序,不使用EJB。 我要部署到Jetty / Tomcat,因此需要WAR打包。 但是,我有时也会针对JBoss和Websphere进行部署。
据我了解,完整的Java EE应用服务器可以采用EAR或WAR格式。 什么情况下我会使用其中之一以及为什么? 我知道它们都是标准压缩文件格式,并且我已经阅读了10个不同的片段来尝试解释它们(包括这个),但我对每个的优缺点仍然不太理解。
3个回答

5

如果您只有Web模块,请使用WAR文件。 如果您有不同的Java EE模块,请使用EAR。虽然您可以在EAR中仅提供Web模块,但这样做没有意义(而且您需要进行更复杂的部署配置)。


1
其他“J2EE模块”的例子有哪些? - Dave
例如,EJB,WebServices - Andriy Sholokh
1
我的应用程序有Web服务(SOAP),但我不确定为什么它会从EAR中受益...您能详细说明一下吗? - Dave
首先,您确定您的Web服务已配置为在Tomcat上运行吗? 如果您有多个模块,则需要将它们作为单独的WAR文件部署到Tomcat中(因为Tomcat不支持EAR)。 这里是使用应用服务器(如WebSphere)和EAR的好处... 您可以将所有Web模块和Web服务放入单个部署文件(EAR)中。然后它们将一起安装。 - Andriy Sholokh
我在同一个WAR中使用了2个servlet。把它们变成EAR中的2个WAR会更好吗? - Dave

0
在J2EE应用程序中,模块根据其功能被打包为EAR、JARWAR

如果您仅使用Servlet、JSP、GIF和HTML文件,则使用.WAR

 WAR:(Web ARchive) Web modules which contain Servlet class files, JSP
 Files, supporting files, GIF and HTML files are packaged as JAR file
 with .war (web archive) extension.

如果您正在使用不同的JAVA EE模块,例如(EJB + Servlet、JSP、GIF和HTML文件+其他技术),那么请使用.EAR。
EAR: (Enterprise ARchive) All above files (.jar and .war) are packaged
as JAR file with .ear (enterprise archive) extension and deployed into
Application Server.

0

关键点在于您是否需要 EAR 文件中提供的任何内容(可能包含所述 WAR 文件)。如果是这样,那么将其部署为 EAR 是有意义的。

它还可以连接一些在 Tomcat 等中需要手动配置的配置。一个典型的例子是绑定到 Web 应用程序的 URL,在其中您需要使用容器特定的配置文件覆盖默认启发式,但您可以直接将其放入 EAR 配置文件中。

此外,在开发过程中,WAR 可以经常以爆炸形式直接进行热部署,而 EAR 必须被解压并部署。对于从 Eclipse 到 Glassfish 的情况,差异非常明显。


我在Tomcat文档中找不到如何部署EAR的相关信息。这是否需要使用嵌入式JBoss? - Dave
你不能在Tomcat中部署EAR文件。但是,你可以有一个裸的WAR文件和完全相同的WAR文件包装在EAR文件中,以便在不同的服务器上使用。 - Thorbjørn Ravn Andersen
是的,你不能将EAR部署到Tomcat,因为Tomcat是一个Servlet容器而不是应用服务器。 因此,如果您需要将Web应用程序部署到Tomcat、JBoss和WebSphere,请使用WAR文件。这样可以适用于所有这些服务器。 - Andriy Sholokh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接