我试图更深入地了解JavaEE容器。我需要了解项目的架构(可以),特别是对Java EE容器的反应。为简化起见,所有内容都在同一个完整的Java EE GlassFish服务器上运行。
我有一些类定义: (抱歉,由于声誉,我无法发布UML图表)
@Entity public class MyEntity{...}
@Stateless public class MyEntityDAO{...}
@Stateless public class MyEntityFacade{...}
public class MyEntityTO{...} //Data Transfer Object, it's a POJO
@Named @ViewScoped public class MyEntityPageController{...}
和JSF页面: myEntityPageJSF.xhtml
现在我想对以下容器中的不同元素进行分类,如下所示:
EJB容器:
网络容器:
我找到的唯一正式答案是[1]:
Enterprise JavaBeans(EJB)容器:管理Java EE应用程序的企业bean的执行。 Enterprise Bean及其容器在Java EE服务器上运行。
Web容器:管理Java EE应用程序的网页,servlet,和一些EJB组件的执行。 Web组件及其容器在Java EE服务器上运行。
问题在于"以及一些EJB组件" 部分......不知道他们正在谈论什么。那么,任何人都可以在正确的容器中对以下元素[2]进行分类吗?
提前致谢。
参考文献:
答案 0 :(得分:2)
Java EE应用程序服务器仅包含两种容器类型(Web容器和EJB容器)。这些容器有一些使用某些API的组件,由容器本身提供。
您的应用程序服务器可以解释为应用程序容器。仅举几例:Tomcat,JBoss / Wildfly,Oracle Weblogic,Jetty或GlassFish是Java EE Application Container。
此时,您已经注意到服务器通常是容器的同义词。它的基础是,对于小型应用程序,每个服务器通常有一个容器。但是,服务器可以包含多个容器。
严格地说,Java应用程序服务器基于Java平台企业版,这是一个多层分布式模型。该模型由以下内容组成:
在Java EE世界中,多层体系结构意味着某些容器位于客户端,而某些容器位于服务器端。
从服务器的角度来看,JCP(Java Community Process)在JSR 342中仅定义了四种类型的Java EE容器:
Java EE容器是组件与Java EE平台提供的用于支持该组件的低级功能之间的接口。
Containers为Java EE应用程序提供运行时支持 组件。容器提供底层Java的联合视图 应用程序组件的EE API。 Java EE应用程序组件 永远不会直接与其他Java EE应用程序组件交互。 [...] 典型的Java EE产品将为每个产品提供容器 应用程序组件类型:应用程序客户端容器,applet 容器,Web组件容器和企业bean容器。
作为EJB容器的Web容器为其组件提供命名上下文和生命管理。 请注意,即使Web容器可以使用EJB容器,也不需要将它们部署在同一台机器上。
完全符合JEE的应用服务器,例如Websphere,Glassfish或JBoss,都有两个容器。
JEE应用程序由组件组成。组件是一个独立的功能软件单元,它与相关的类和文件组装成JEE应用程序,并与其他组件通信。
从技术上讲,容器为组件提供了主机执行环境。
规范说:
来自不同容器的组件之间的通信示例: Web容器包含JavaBeans组件,用于管理用户输入并将该输入发送到EJB容器中运行的企业bean进行处理。
Sun已将容器定义如下:
容器是提供诸如的服务的运行时环境 Java EE组件的安全性和事务管理。
即容器还负责提供API和分布式通信协议。
集装箱服务:
答案 1 :(得分:1)