2012-02-29 54 views
9

我是EJB的新手。从我所做的所有阅读和搜索到现在,我明白以下内容:EJB容器是否驻留在所有应用程序服务器中。深入EJB容器

  • EJB是应用程序业务逻辑被写入和维护的bean。
  • 所有的EJB都被放入一个名为EJB容器的东西里。 EJB容器不过是一个服务器端程序,用于管理EJB,并提供EJB提供的基本功能(即事务管理,安全性,无碰撞envt等)。

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

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

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

谢谢。

+1

你的第二个问题是不完整的! – Santosh 2012-02-29 07:21:05

回答

10

回答您的问题

  1. 一般来说是的。应用程序服务器通常指具有Glassfish,Jboss等EJB容器的服务器,但您需要确保应用程序服务器具有EJB支持。

  2. YES

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

在Java EE应用场景中,EJB容器和Web容器(服务器)服务器是不同的层。查询this链接获取更多信息。

+0

感谢您的澄清。应用程序服务器和Web服务器提供的服务有什么区别? – 2012-02-29 08:41:38

+0

“通常”Web服务器处理应用程序的UI部分(您在浏览器中看到的),其中应用程序服务器较大并且包含Web服务器EJB容器(您的业务逻辑)以及其他企业服务,如JNDI,数据源,事务等 – Santosh 2012-02-29 09:07:32

14

您正确理解了EJB的想法。

  1. 是的,没有。取决于你理解为“应​​用程序服务器”(下面在答案3中描述的模糊性)。

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

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

    • Web服务器就像是Apache HTTP Server它的客户服务请求的HTTP/HTTPS服务器。这个术语不仅与Java EE相关。
    • Web容器是一个Java EE术语,它可能意味着很少的东西,但通常它指的是Servlet容器,并且让我们说JSP容器。那些容器正在服务于网络客户端,所以这就是为什么它是容器的web。一般情况下,Web容器中都有一个Web服务器(就像Tomcat一样)。但是,您可以对其进行配置,以便静态资源仅由纯Web服务器服务,而动态内容(Java App,Servlets,JSP,等等)将由您的网络容器服务器。
    • 应用程序服务器是一个模糊的名称。在Java EE纯粹主义者的世界中,它可能意味着只有这样的服务器才能提供所有的Java EE服务。非Java EE纯粹主义者将应用程序服务器视为由您的应用程序组成的任意服务器。根据此定义,您可以调用Tomcat(Web容器和Web服务器)应用程序服务器

正如你看到的,词汇量不清晰,因为有一件事可能意味着一些稍微不同的东西。而且,自Java EE 6以来,我们拥有配置文件。这意味着您可以让Java EE Application Server符合Web Profile或Full Profile。在这种情况下,只有Web Profile服务器应该被视为应用服务器

就像一个总结 - 你可以在Web容器中使用EJB容器。看看OpenEJB或基本上在项目TomEE

+0

在命名应用程序服务器时存在不明确性,Web服务器是应用程序服务器的子集。得到它了 !!!谢谢。 – 2012-02-29 09:09:22

+0

对。如果有人想要,他可以用JavaScript或CGI脚本编写应用程序代码,将其嵌入到Web服务器中并将其称为*应用程序服务器*。使用共享词汇来确保你在说什么总是很重要的:-) – 2012-02-29 09:16:18

+0

在企业设置中,你通常会在应用程序服务器前有一个网络服务器,因为网络服务器将被优化以处理大量的http请求,然后将请求传递给应用服务器(生成实际内容) – 2012-02-29 09:28:02

相关问题