Java EE容器与Web容器

mel*_*ngs 43 containers ejb war java-ee web

我是Java EE/EJB的新手,我一直在阅读有关Java EE容器的很多东西.我有使用Web容器的经验(jboss中的WAR文件).我也知道Jboss也可以用作Java EE容器.

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

我知道Java EE也能够包含.war文件.它们是不同的,它们的区别是什么?是否有任何偏好供应商具体明智哪个更好?

Mil*_*kic 85

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

与servlet容器(例如Tomcat)相反,"完整"Java EE应用程序服务器也包含EJB容器.EJB是Enterprise Java Beans,你可以在这里阅读很多关于它们的内容(第四章).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容器上使用它,但是复杂性会带来好处,因此您必须花费合理的时间学习如何处理Websphere(PayaraWildFly更简单,也是我最喜欢的).JBossWeblogic也很受欢迎,如果你熟悉Tomcat,请看看TomEE.


Mas*_*dul 27

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

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