第二节—EJB3.0总体架构

2023-12-11 18:08
文章标签 架构 第二节 总体 ejb3.0

本文主要是介绍第二节—EJB3.0总体架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.1      层次结构

1.1.1    基础点

EJB3.0层次结构

 

大多数传统企业应用程序都至少有四层:

1)  表现层是实际的用户界面,可以是浏览器或桌面应用程序;

2)  业务逻辑层定义业务规则;

3)  持久化层和数据库进行交互;

4)  数据库层由存储持久化对象的关系数据库(比如Oracle)构成。

3.1-1图所示。

 

         

        3.1-1

 

很显然EJB不是表现层技术,完全是实现业务逻辑和持久化层的健壮支持,图3.1-2显示了EJB如何通过其服务支持这些技术。

 

 

                                           3.1-2

EJB3提供的各个组件服务支持应用层。注意各个服务之间是相互独立的,所以你可以在最大程度上自由地选择对应用程序来说非常重要的特性。

 

1.2      容器结构

1.2.1    基础点

1.2.1.1  EJB容器介绍

EJB组件运行在EJB容器之中,EJB容器是一个EJB引擎,它提供了EJB组件运行的环境,并对EJB组件进行管理。EJB容器一般包含在EJB服务器(或应用服务器)中,EJB服务器可以拥有一到多个EJB容器。

要理解容器的架构,需要明白三点:代理存根(proxy stub)、容器以及bean实例本身。当调用bean的远程或本地接口时,你所使用的对象实例是一种被称为代理存根的东西。该代理存根实现session bean的远程或本地接口,并且负责将你的session bean调用经过网络发送到远程EJB容器,或将请求路由到位于本地的JVM内的EJB容器。EJB容器的职责是管理bean class实例及其安全和事务,容器会根据元数据或部署描述文件来启动事务并执行验证和授权任务,容器还负责管理bean的生命周期,并将来自代理的请求路由到真正的bean class实例。

存根、容器及bean实例关系图

EJB服务器支持6种基本服务:并发、事务管理、持久化、对象分布、命名和安全。这些基本服务为成功开发多层系统提供了必须的基础架构。EJB还提供了两个额外的服务:异步消息服务和定时服务。下图描述了EJB服务器结构

 

 

EJB服务器结构

1.2.1.2  EJB容器规约

 

我们常把EJB服务器中围绕bean的周边环境称之为容器。它是一个概念,而非物理构件。它充当beanEJB服务器之间的中介,管理EJB对角并帮助服务器构件管理bean资源,提供诸如事务,安全,并发和运行期命名之类的服务。容器与服务器并没有明确的界定。

 

接口javax.ejb.EJBContext是一个由容器实现的接口,是bean容器规范的组成部分。Session bean使用一个叫做javax.ejb.SessionContext的子类。Message-driven bean则使用javax.ejb.MessageDrivenContext子类。这些EJBContext类型为bean提供了其所在环境的相关信息,内容涉及:容器,使用enterprise bean的客户端,以及bean本身(相当于this指针,但EJB规范不允许在enterprise bean中使用this指针)。Bean可以在处理来自客户端的请求和来自容器的回调方法时使用这些信息。

 

Enterprise bean的接口中还包含了JNDI名字空间,我们称其为环境命名上下文(ENC),bean可以用它来查找所需的资源。

 

1.3      组件模型

 

1.3.1    基础点

 

EJB3组件模型中包含三种Enterprise Java Bean,分别是:Session BeanMessage Driven BeanEntity Bean

 

EJB3的架构非常灵活,提供了如下能力:

²       一个对象表述一个无状态的服务

²       一个对象表述一个无状态服务,且实现一个web service端点

²       一个对象表述一个无状态的服务,且它的调用由异步的消息来驱动

²       一个对象与一个特定的客户端表述一个会话。这样的会话对象会自动的保持会话状态,且不受多重客户端调用方法的影响

²       一个实体对象表述一个细粒度的持久化对象

 

EJB3规范通过大量使用annotation,大大简化了配置的难度;仅仅通过为普通的Session Bean方法加上简单的annotation@WebService)即可使该方法作为一个Web Service了。

 

1.3.1.1  接口类型

【远程接口】

   定义了session bean的业务方法,这些方法可以被来自EJB容器以外的应用访问到:也就是Bean提供给外界完成其工作的业务方法。

◆【本地接口】

   定义了session bean的业务方法,这些方法可以被处于同一EJB容器内的其他bean所使用:也就是bean提供给运行于同一JVM中的其他bean的业务方法。

◆【端点接口】

   定义了可以被EJB容器以外的应用系统经由SOAP协议进行访问的业务方法。

◆【消息接口】

      Message-driven Bean实现了该接口,该接口定义了一系列方法,像JMS这样的消息系统可以藉此来向bean发送消息。

 

1.3.1.2  Session Bean

Session Bean关注实现业务逻辑;在容器的支持下,Session Bean具有以下几个重要特征:

1、支持并发和线程安全

2、可支持远程处理和web service

3、支持事务与安全管理

4、支持计时器服务器和拦截器

 

Session Bean可以分为两类:无状态Session Bean和有状态Session Bean

 

1.3.1.3  Message Driven Bean

叙述MDB之前,先简单介绍J2EE中包含两种消息模型,点对点模型与发布-订阅模型。

请参看异步企业消息服务的详细说明。我们遇到的大部分MDB都是实现的JMS接口。

 

MDBMessage Driven Bean)同样实现业务逻辑;与Session Bean 不同的是,客户端不直接调用MDB的方法。客户端通过发送到消息服务器的消息来触发MDB的执行,实现了系统组件间的异步操作。MDB通常用于健壮系统的集成或异步处理。

 

²       MDB可以自行处理多线程,实现并发而不需要附加任何无业无关代码

²       MDB减少了使用消息机制的配置及编码量;也可以通过部署描述文件或注解来提供配置信息

 

 

MDB

容器收到消息

客户端

目的地

MDB

消息到达目的地

Order对象

 

使用@MessageDriven注解可以很容易的创建MDB,具体使用及示例这里暂不叙述。

JBoss服务器中使用的是JBoss MQ

1.3.1.4  Entity & JPA

EJB3的持久化由JPA管理,它使用成为对象-关系映射(ORM)的技术自动持久化Java对象。

 

JPA定义了持久化的规范,定义了如下标准:

²       用于把实体映射到数据库表的ORM配置元数据的创建

²       EntityManager API,用于对实体执行CRUD(创建、读取、更新和删除)

²       Java持久化查询语言(JPQL

 

目前比较常见的实现有JBoss HibernateOracle TopLinkApache OpenJPA。需要提到的是,JPA中并没有对缓存的处理加以规范,在选择JPA实现时,需要加以注意。

这篇关于第二节—EJB3.0总体架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481607

相关文章

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激