EJB的相关知识

一、EJB发展历史

IBM、SUN公司力推EJB前景,大公司开始采用EJB部署系统。主要价值:对分布式应用进行事务管理

出现问题:

①EJB的API难度大

②规范要求必须抛出特定异常的接口并将Bean类作为抽象类实现(不正常不直观)

③对象关系映射和食物管理有天然复杂性

④用EJB封装业务逻辑会带来性能下降

【早期EJB规范至允许客户端通过特定协议例如CORBA进行远程方法调用来调用,直到EJB2.0引入本地接口。】

轻量级技术代替EJB:Hibermate【数据持久化和对象关系映射】、Spring框架【封装业务逻辑】

改变: EJB3.0出现

1. EJB 1.0

EJB1.0发布于1998年3月24日,规范中包含有状态的的服务器对象、无状态的服务器对象和可选的持久化领域对象 。

EJB1.0提供了良好的分布式支持功能,允许通过远程接口来远程调用EJB中的业务方法。

EJB1.0强制客户机组件以远程访问的方式调用EJB方法。

2. EJB 1.1

EJB1.1发布于1999年12月17日。

EJB1.1开始支持实体Bean,必须在应用中实现。实体Bean是可以存储在持久存储介质上的持久对象,用来表示永久性数据并提供操作这些数据的方法。一般情况下一个实体Bean对应数据库中的一张表,而一个实体类的实例对应着这张表的一个记录。

EJB1.1引入了XML格式的部署描述文件,用来以声明的方式管理EJB的部署信息。

EJB1.1的安全机制由角色驱动,而非方法。

3. EJB 2.0

EJB2.0发布于2001年8月22日。

EJB2.0取消了强制客户机组件以远程访问的方式调用EJB方法。【减少不必要的系统开销 避免性能下降】

EJB2.0引入本地接口,允许开发者选择是否让EJB组件支持远程访问。

EJB2.0增强了实体Bean功能,为容器管理持久化的EJB提供容器管理关系的支持,开发者可以通过配置文件来管理EJB之间的关系

EJB2.0引入了EJB-QL作为查询语言,为实体Bean提供查询支持。

EJB2.0引入了消息驱动Bean,消息驱动Bean是用来专门处理消息请求的组件,属于无状态的会话Bean,异步处理用户请求。消息驱动Bean没有远程接口,不能被客户机调用。可以通过向消息目的地发消息触发消息驱动Bean的onMessage方法。

4. EJB 2.1

EJB2.1发布于2003年11月24日。

EJB2.1可以提供Web Service支持,利于异构系统的整合。可将无状态会话bean暴露为Web服务;EJB可通过引用访问Web服务。

EJB2.1增加定时器服务,提供一种新的基于定时器的事件驱动方式。可供消息驱动bean作为消息源使用。

EJB2.1增加了EJB-QL的功能,改进EJB-QL的查询功能。支持ORDER BY, AVG, MIN, MAX, SUM, COUNT和MOD。

EJB2.1使用XML schema代替DTD以定义部署描述符。

5. EJB 3.0

EJB3.0发布于2006年5月2日。

EJB3.0抛弃了EJB2实体的设计,仅保留了会话Bean和消息驱动Bean。

EJB3.0引入了全新的JPA规范作为持久化解决方案。JPA是一种Java应用程序接口规范,描述Java应用中关系数据的管理,充当面向对象领域模型和关系数据库系统的桥梁。

EJB3.0简化了EJB2中会话Bean的开发,不再需要Home接口。

EJB3.0只要求提供远程或本地的业务接口即可。

EJB3.0不推荐实用XML文件作为部署描述文件,改为使用Annotation设置部署描述信息。

EJB3.0使用传统简单Java对象(POJO),实际是普通JavaBeans,有一些属性及属性的getter、setter方法,没有业务逻辑,有时可以作为值对象和数据传输对象使用。可以有简单的运算属性,不允许有业务方法,不能带有connection之类的方法。主要用协助业务逻辑。

EJB3.0支持依赖注入来简化全异系统的集成与配置。

EJB3.0规范大幅采用Java注释来代替部署描述符对代码进行元数据修饰,从而消减此前EJB编程的冗杂性。

EJB3.0把2.X版的实体Bean改为由JPA支持。【JPA是Java持久层接口,是JDK5.0注释和XML描述对象关系表的映射关系,运行期的实体对象持久化到数据库中。】

6. EJB 3.1

EJB3.1允许企业Bean只提供一个Bean类,无须提供业务接口。

EJB3.1允许通过异步的方式调用会话Bean的业务方法。

EJB3.1取消了类文件必须打包到JAR文件的限制,允许直接将EJB类放到WAR文件中。

 

二、EJB核心模型

EJB定义了三种企业Bean,分别是会话Bean、实体Bean和消息驱动Bean。

会话Bean描述了与客户端的一个短暂的会话。当客户端的执行完成后,会话Bean和它的数据都将消失;

实体Bean描述了存储在数据库表中的一行持久稳固的数据,如果客户端终止或者服务结束,底层的服务会负责实体Bean 数据的存储。

数据驱动Bean结合了会话Bean 和 Java信息服务(JMS)信息监听者的功能,它允许一个商业组件异步地接受 JMS消息。

1. 会话Bean

会话Bean用于实现业务逻辑,分为有状态的会话Bean和无状态的会话Bean。

每当客户端发出EJB调用请求时,容器就会选择一个会话Bean为客户端服务。

会话Bean可以直接访问数据库,更多时候由实体Bean实现数据访问。

2. 实体Bean

实体Bean代表真实物体的数据。

EJB3.0中实体Bean仅作为普通Java对象使用。

实体Bean负责与数据库表进行对象关系映射。

3. 消息驱动Bean

消息驱动Bean用来专门处理基于消息请求的组件。

消息驱动Bean可以收发异步JMS消息,能够与其他EJB交互。

【JMS是Java消息服务应用程序接口 支持两个程序之间或分布式系统中发送消息,进行异步通信】

适用于一个业务执行时间很长,执行结果无须实时向用户反馈的场合。

三、开发支撑

1. EJB容器

EJB需要运行在EJB容器,EJB容器截取客户和组建之间的通信,并根据配置信息添加基础设施代码,EJB容器用于提供EJB组件的开发、部署和运行环境。

目前支持EJB3.0的应用服务器有JBoss(4.2.X以上版本)、Classfish、WebLogic(10以上版本)、Sun Application Server(9.0以上版本)、Oracle Application Server(10g以上版本)和Apusic应用服务器。【JBoss是使用者最多的开源应用服务器,WebLogic是时长占有率最高的商业应用服务器】

2. JNDI

JNDI为各种现有的命名和目录服务提供通用接口:DNS、LDAP、活动目录、RMI注册器、COS注册器、NIS及文件系统。

JNDI有客户API和服务提供商接口SPI组成,应用程序通过客户API访问命名和目录服务。服务提供商接口用于供厂商创建命名和目录服务的JNDI实现。

EJB开发者只需要知道客户API如何访问命名和目录服务,不需要知道JNDI SPI的使用。

命名服务用于将名称和对象联系起来,从而可以用名称访问对象。【例如:输入URL ------DNS-------》IP地址】

目录服务是命名服务的扩展,目录服务的对象不仅有名称,还有属性。目录服务中对象可以有属性,命名服务中对象没有属性。

四、开发平台

可以在Eclipse上完成基于EJB的二次开发。

五、二次开发基本步骤

1. 开发环境配置

①配置JDK和JBoss环境,在Eclipse里新建EJB项目

②打包JAR文件到JBoss安装目录是server/default/deploy/目录下,JBoss会对JAR文件进行热部署。打包WAR文件到JBoss安装目录是server/default/deploy/目录下。浏览器访问应用程序。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度前馈网络与Xavier初始化原理

前言 基本的神经网络的知识(一般化模型、前向计算、反向传播及其本质、激活函数等)小夕已经介绍完毕,本文先讲一下深度前馈网络的BP过程,再基于此来重点讲解在前馈网络中用来初始化model参数的Xavier方法的原理。 前向 前向过程很…

线性代数应该这样讲(三)-向量2范数与模型泛化

在线性代数(一)中,小夕主要讲解了映射与矩阵的关系;在线性代数(二)中,小夕讲解了映射视角下的特征值与特征向量的物理意义。本文与下一篇会较为透彻的解析一下向量的二范数与一范数,…

SOA基础

一、架构的演化: 结构化 客户端-服务端 三层 N层 分布式对象 组件 服务:是应用程序或者企业的不同功能单元,每个功能单元作为实例存在,并与应用程序和其他组件交互。通过基于消息的松散耦合的通信模型提供服务。 二、体系结…

从点到线:逻辑回归到条件随机场

开篇高能预警!本文前置知识:1、理解特征函数/能量函数、配分函数的概念及其无向图表示,见《逻辑回归到受限玻尔兹曼机》和《解开玻尔兹曼机的封印》;2、理解特征函数形式的逻辑回归模型,见《逻辑回归到最大熵模型》。从…

WSDL基础知识

一、WSDL的定义 将网络服务描述为对包含面向文档或过程的信息进行操作的一组端点的XML格式 服务接口 访问规范 服务地点 定义Web服务的公共接口(包括功能、如何调用) 定义与目录中列出的Web服务交互所需的协议绑定和消息格式 抽象地描述了支持的操…

【NLP】Google BERT详解

版权声明&#xff1a;博文千万条&#xff0c;版权第一条。转载不规范&#xff0c;博主两行泪 https://blog.csdn.net/qq_39521554/article/details/83062188 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/cs…

有时候,也想过回到过去

人的一生中&#xff0c;总要走走停停。一面向着诗和远方&#xff0c;一面转过身&#xff0c;缅怀过去。她喜欢女生&#xff0c;帅气的女生。我觉得她也很帅&#xff0c;帅气又可爱。初入大学&#xff0c;竞选班委。上台的人中&#xff0c;有阳光幽默的男生&#xff0c;有温柔甜…

SOAP基础知识

一、SOAP是什么&#xff1f; SOAP是一种轻量级协议&#xff0c;旨在在分散的分布式环境中交换结构化信息。 SOAP使用XML技术来定义可扩展的消息传递框架&#xff0c;该框架提供了可以在各种基础协议之间交换的消息构造。 通信协议 用于应用程序之间的通信 发送消息的格式 设…

UDDI基础知识

一、什么是UDDI UDDI基于一组常见的行业标准&#xff0c;包括HTTP&#xff0c;XML&#xff0c;XML Schema和SOAP&#xff0c;为基于Web服务的软件环境提供了一个可互操作的基础基础结构&#xff0c;用于可公开使用的服务和仅在组织内部公开的服务。 仅当潜在用户发现足以允许其…

机器学习算法GBDT的面试总结

def findLossAndSplit(x,y): # 我们用 x 来表示训练数据 # 我们用 y 来表示训练数据的label # x[i]表示训练数据的第i个特征 # x_i 表示第i个训练样本 # minLoss 表示最小的损失 minLoss Integet.max_value # feature 表示是训练的数据第几纬度的特征 feature 0 # split 表示…

线性代数应该这样讲(四)-奇异值分解与主成分分析

在《线性代数这样讲&#xff08;二&#xff09;》&#xff08;以下简称「二」&#xff09;中&#xff0c;小夕详细讲解了特征值与特征向量的意义&#xff0c;并且简单描述了一下矩阵的特征值分解的意义和原理。本文便基于对这几个重要概念的理解来进一步讲解SVD分解。回顾一下&…

BPEL4WS基础知识

一、为什么选择BPEL4WS 可以使用行业范围内的规范来广告、发现和调用Web服务 开发人员和用户可以通过组合和订购可用的基本服务来解决复杂问题 服务组合允许服务重用并加速复杂的服务开发 提供一种表示法&#xff0c;用于将Web服务的交互描述为业务流程 编写使用Web服务的程…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!

文章转载自订阅号「夕小瑶的卖萌屋」中的文章《不要再纠结卷积的公式啦&#xff01;0公式深度解析全连接前馈网络与卷积神经网络》。 Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)…

不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络

Hello~你们的小夕终于吐泡泡了&#xff5e;前几天小夕又加班赶project啦&#xff0c;拖了好几天&#xff0c;都快患上拖稿焦虑症了_(:з」∠)_关于卷积神经网&#xff0c;小夕就不从卷积讲啦。以前不止一个粉丝问我卷积神经网络中卷积的意义&#xff0c;甚至在知乎上被邀请回答…

研究生常用的几种风险评估方法-专家调查法、蒙特卡洛模拟法、计划评审技术、敏感性分析法、决策树法、影响图法、模糊综合评价方法

其实风险评估就是在充分掌握资料的基础之上&#xff0c;采用合适的方法对已识别风险进行系统分析和研究&#xff0c;评估风险发生的可能性&#xff08;概率&#xff09;、造成损失的范围和严重程度&#xff08;强度&#xff09;&#xff0c;为接下来选择适当的风险处理方法提供…

从前馈到反馈:解析循环神经网络(RNN)及其tricks

好像已经有两周没有更新啦。最后这几天都不敢打开订阅号后台了&#xff0c;怕一打开发现掉了几百个粉丝的话就难过死了T_T。然而小夕发现你们并没有离开&#xff0c;感动的差点哭出来&#xff0c;都感觉再不认真写一篇文章就太对不起大家的等待啦。而这两周&#xff0c;经历的事…

多因子风险建模-协方差矩阵、投资组合风险

一、为什么要了解投资风险 在探讨投资风险前&#xff0c;我们不妨思考一个问题&#xff1a;好的投资&#xff0c;取决于哪些因素&#xff1f; 其实&#xff0c;卓越的投资回报&#xff0c;主要来源于四个因素&#xff1a; 收益预测&#xff1a;能形成合力的收益预期&#xff…

啊啊忍不住了,更!新!!!

你萌都还在&#xff0c;好开心 o(≧v≦)o在2017年9月21日这个特殊的日子&#xff0c;小夕在长达30天的沉默后&#xff0c;终于冒泡了&#xff01;有木有很激动&#xff0c;很期待&#xff1f;&#xff01;&#xff08;小夕&#xff0c;你不说我都忘了还有这订阅号了&#xff09…

【数据挖掘】数据挖掘和数据分析基础

参考文献&#xff1a;《Python数据分析与挖掘实战》张良均等 数据挖掘建模过程 定义挖掘目标&#xff1a;理解任务&#xff0c;确定指标数据采样&#xff1a;注意数据的完整性和有效性数据探索&#xff1a;异常值分析、缺失值分析、相关性分析、周期性分析数据预处理&#xff…

Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析

米筐科技&#xff08;RiceQuant&#xff09;策略研究报告&#xff1a;Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析 江嘉键1 年前1 概述Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具。最近一段时间&#xff0c;我们米筐科技量化策略研究团…