EJB容器是否驻留在所有应用程序服务器中 EJB容器的深度

Anu*_*lan 9 java ejb application-server ejb-3.0

我是EJB的新手.从我到目前为止所做的所有阅读和搜索,我理解了以下内容:

  • EJB是编写和维护应用程序业务逻辑的bean.
  • 所有EJB都被放入称为EJB容器的东西中.
  • EJB容器只不过是为了管理EJB而编写的服务器端程序,并提供由EJB提供的基本功能(即事务管理,安全性,无冲突环境等).

1)我怀疑的是,所谓的EJB组件是否驻留在所有应用程序服务器中?

2)当我们说EJB 2.1/3.0/3.1时,是否意味着已经发布了新版本的EJB容器?

3) EJB容器是否也驻留在Web服务器中?

谢谢.

Pio*_*cki 14

您正确理解了EJB的想法.

  1. 是的,不是.取决于您所理解的"应用程序服务器"(模糊性在下面的答案3中描述)

  2. 当你说EJB 2.x/3.0/3.1左右时,你指的是一个特定的EJB规范,这意味着你指的是这个版本支持的一组服务.换句话说 - 是的,这意味着EJB容器必须在给定的版本中.
    首先发布规范(您可以看到草稿版本,投票选择新功能并基本参与此过程).然后,编写参考实现(RI)只是为了表明它是"可行的",你可以立即使用它.然后,不同的供应商可能会提供自己的EJB容器,这些容器必须符合特定的EJB规范.

  3. 您需要注意几个不同的术语.可以肯定的是,我们谈论的是同样的事情:

    • Web服务器是一个HTTP/HTTPS服务器,如Apache HTTP Server,它为客户端请求提供服务.该术语不仅与Java EE有关.
    • Web容器是一个Java EE术语,它可能意味着很少的东西,但通常它指的是Servlet容器,比方说JSP容器.这些容器正在为Web客户端提供服务,因此这就是它的Web容器.通常,Web容器中有一个Web服务器(就像Tomcat一样.)但是,您可以对其进行配置,以便静态资源只能由纯Web服务器和动态内容(您的Java App,Servlet,JSP,等)将由您的Web容器服务器.
    • 应用程序服务器是一个模糊的名称.在Java EE纯粹主义者的世界中,它只意味着提供所有 Java EE服务的服务器.非Java EE纯粹主义者将应用程序服务器视为由您的应用程序组成的任意服务器.根据此定义,您可以将Tomcat(Web容器和Web服务器)称为应用程序服务器.

如你所见,词汇量并不尖锐,因为有一点可能意味着几乎没有什么不同的东西.此外,由于Java EE 6我们有配置文件.这意味着您可以使Java EE Application Server符合Web配置文件或完整配置文件.在这种情况下,只应将Web配置文件服务器视为应用程序服务器.

就像摘要一样 - 您可以在Web容器中使用EJB容器.看一下OpenEJB或基本上是在项目TomEE上.


San*_*osh 10

回答你的问题

  1. 一般是的.应用程序服务器通常称为具有像EJBfish,Jboss等EJB容器的服务器.但是您需要确保应用程序服务器具有EJB支持.

  2. 没有.Web服务器或Web容器(Tomcat,Jetty等)与EJB容器的用途不同.但是所有应用程序服务器都有Web服务器(以及EJB容器).

EJB容器和Web容器(服务器)服务器是Java EE应用程序方案中的不同层.请查看链接以获取更多信息.