第二节—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

相关文章

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.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

【系统架构设计师】黑板架构详解

黑板架构(Blackboard Architecture)是一种软件架构模式,它模仿了多个专家系统协作解决问题的场景。在这种架构中,“黑板”作为一个中央知识库,存储了问题的当前状态以及所有的解决方案和部分解决方案。黑板架构特别适合于解决那些没有确定算法、需要多个知识源(或称为“专家”)共同作用才能解决的复杂问题。 一、黑板架构的组成 黑板架构主要由以下几个部分组成: 黑板(Blackboa

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

Arch - 演进中的架构

文章目录 Pre原始分布式时代1. 背景与起源2. 分布式系统的初步探索3. 分布式计算环境(DCE)4. 技术挑战与困境5. 原始分布式时代的失败与教训6. 未来展望 单体时代优势缺陷单体架构与微服务架构的关系总结 SOA时代1. SOA架构及其背景1. 烟囱式架构(Information Silo Architecture)2. [微内核架构](https://www.oreilly.c

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成