Java EE容器与Web容器

时间:2013-06-19 00:52:18

标签: java-ee web ejb containers war

我对Java EE / EJB比较陌生,而且我一直在阅读有关Java EE容器的很多内容。我有使用Web容器的经验(jboss中的WAR文件)。我也知道Jboss也可以用作Java EE容器。

我的问题是,Java EE容器与Web容器之间有什么区别?

我知道Java EE也能够包含.war文件。它们是不同的,它们的区别是什么?有没有特定的偏好供应商哪个更好?

6 个答案:

答案 0 :(得分:84)

首先,“J2EE”是一个过时的缩写,现在简称为“Java Enterprise Edition”或Java EE。

与servlet容器(例如Tomcat)相反,“完整”Java EE应用程序服务器也包含EJB容器。 EJB是Enterprise Java Beans,你可以阅读很多关于它们的例子here(第四章)。 EJB现在是3.2版(Java EE 7和Java EE 8),以前的版本是3.1(Java EE 6)和3.0(Java EE 5);但最大的区别在于v2和v3之间。

EJB旨在保持应用程序的业务逻辑。例如,无状态会话bean可以计算某些内容,或表示Web服务或您的应用程序需要执行的任何操作。消息驱动的bean可以侦听消息队列,因此如果您想要异步通信,它们很有用。 Singleton bean保证每个bean等一个实例。

关于文件类型,EJB被打包成一个.jar文件,Web应用程序到一个.war文件,如果你想给他们在一个应用程序中混合,这将是.ear文件(“企业档案”)

旁边的EJB,“全”的应用服务器还负责有关事务,安全性,JDBC资源...我会强烈建议使用它在一个servlet容器,但带来的好处附带的复杂性,所以你将不得不花费合理学习如何处理的时间量,例如WebspherePayaraWildFly更简单,也是我的最爱。 JBossWeblogic也非常受欢迎,如果您熟悉Tomcat,请查看TomEE

答案 1 :(得分:27)

Java EE容器:管理在Java EE服务器上运行的EJB,JMS,JTA的执行,例如JBoss,Glassfish。

Web容器:管理Java EE应用程序的网页,servlet和一些EJB组件的执行。 Web组件及其容器在Web服务器上运行,例如Jetty,tomcat。

答案 2 :(得分:4)

Web容器和EJB容器是Java EE容器的子集。 Java EE容器还包含应用程序客户端容器 applet容器

以下是doc所说的内容:

  

部署过程在中安装Java EE应用程序组件   Java EE容器。

     
      
  • Java EE服务器:Java EE产品的运行时部分。 Java EE服务器提供EJB [容器和Web容器] *。

  •   
  • Enterprise JavaBeans(EJB)容器:管理Java EE应用程序的企业bean的执行。企业bean及其   容器在Java EE服务器上运行。

  •   
  • Web容器:管理Java EE应用程序的JSP页面和servlet组件的执行。 Web组件及其中   容器在Java EE服务器上运行。

  •   
  • 应用程序客户端容器:管理应用程序客户端组件的执行。应用客户及其   容器在客户端上运行。

  •   
  • Applet容器:管理applet的执行。由客户端上运行的Web浏览器和Java Plug-in组成。

  •   

*在doc中,他们使用plurial表单,但实际上每个Java EE服务器只有一个Web容器和一个EJB容器。

答案 3 :(得分:0)

我认为他们之间的区别可能就是他们所支持的协议。

例如,我们不会尝试在Web容器中管理事务,例如tomcat,我们通常会尝试在tomcat中部署的web-proj中进行控制。而像ejb这样的web / app服务器则采用相反的方式。 / p>

答案 4 :(得分:0)

Java EE Con​​tainer是一个支持Web容器,EJB 3和其他Java EE API和服务的应用程序服务器解决方案,Oracle WebLogic服务器,GlassFish服务器,IBM WebSphere应用程序服务器,JBoss应用程序服务器和Caucho Resin是Java的示例EE容器...希望它能回答您的问题

答案 5 :(得分:0)

应用程序可以分类如下: 桌面应用程序(例如GUI) Web应用程序,例如动态网页, 负责核心业务处理的企业应用程序。

企业应用程序:通常用户交互不多。在这种情况下,如果希望您的应用程序使用Web服务,JMS或JTA(与Mainframe事务服务器连接)与分布在Intranet / Internet上的不同应用程序进行交互,则需要具有EJB容器和其他安全功能的Java EE。

Web容器:相反,如果您想使用JNI与分布式应用程序进行交互,或者只是与RDBMS对话,或者仅呈现静态或动态Web页面,那么Web容器就足够了。来自浏览器的HTTP请求可以通过servlet调用和执行Java程序。 Java程序可以调用JDBC API与RDBMS进行通信。同样,您可以使用JNI或RMI从另一台服务器调用C或Java程序。