第一节—EJB3.0简介

2023-12-11 18:08
文章标签 简介 第一节 ejb3.0

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

1.1      EJB3.0概述

 

EJBEnterprise JavaBeans)是一个用来构筑企业级应用的服务器端可被管理组件,是使用Java语言构造可移植的,可重用的和可伸缩的业务应用程序的平台。由于EJB的复杂性使之在J2EE架构中的表现一直不是很好。EJB3.0是以前版本的升级版本,EJB3.0规范减轻其开发的复杂性,减轻了开发人员进行底层开发的工作量,它取消或最小化了很多(以前这些是必须实现)回调方法的实现,并且降低了实体BeanO/R映射模型的复杂性。

EJB规范的目的在于为企业及应用开发人员实现后台业务提供一个标准方式,从而解决一些此前总是在作业过程中总是重复发生的问题。EJB以一个标准方式自动处理了诸如数据持久化,事务集成,安全对策等不同应用的共有问题,使得软件开发人员可以专注于程序的特定需求而不再饱受那些非业务元素的困扰。

1.2      EJB3.0历史

Java企业版APIJava Enterprise Edition)中提供了对EJB的规范。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。EJB最早于1997年由IBM提出,后被SUN采用并形成标准(EJB 1.0 EJB 1.1)。其后在Java社区进程(Java Community Process)支持下陆续有一些JSR被制订来定义新的EJB标准,分别是JSR 19 (EJB 2.0), JSR 153 (EJB 2.1) 以及最新的JSR 220 (EJB 3.0)

由于IBMSunEJB提倡者力推其前景,起初一些大公司纷纷采用EJB部署他们的系统。然而随后各种问题便接踵而至,对EJB的恶评短时间内激增。对于初学者,EJBAPI显得太过困难;对于许多程序员来说,书写那些必须抛出特定异常的接口并将bean类作为抽象类实现的做法既不直观也不正常。当然,EJB所被赋予的使命,如对象关系映射和事务管理确实有其天然复杂性,但其API之复杂还是令开发人员们觉得望而却步,一些人开始怀疑EJB除了引入了复杂的实现手段以外似乎并未带来什么实际好处。

另外,实际运用中被发现,如果使用EJB来封装业务逻辑会带来性能上的下降。这是因为,最早的EJB规范只允许客户端通过特定协议(如CORBA)进行远程方法调用,即使大部分实际应用根本就不需要分布式计算。直到EJB 2.0才引入了本地接口,以支持可以开发不通过网络就能直接本地调用的EJB系统。尽管如此,EJB的广泛普及仍然为其复杂度所制约。

EJB规范起初的一个主要价值-对分布式应用进行事务管理-在随后的实践中被一致认为几乎没能派上用场。对于企业级应用来说,SpringHibernate等简化框架更加实用。因此,EJB 3.0规范(JSR 220)为了迎合这个趋势相比于之前进行了一次激进的大跳跃。受到Spring 影响,EJB 3.0也使用所谓的“传统简单Java对象(POJO)”;同时,支持依赖注入来简化全异系统的集成与配置。Hibernate的创始人Gavin King参与了这一新版规范的制订,并对EJB大加提倡。Hibernate的许多特性也被引入到Java持久化API当中,从而取代原来的实体beanEJB 3.0规范大幅采用Java注释(annotation)来对代码进行元数据修饰,从而消减了此前EJB编程的冗杂性。相应地,EJB 3.0几乎成为了一个全新的API,与此前的数版可谓毫无相似度可言。

以下列出了版本的具体变化:

(1)    EJB1.0

1998324日发布。

n  定义了EJBEJB容器的作用,实现与互动。

n  提供了最早的开发者与用户视图。

(2)    EJB1.1

19991217日发布。

n  开始采用XML部署描述符,默认的JNDI上下文以及可支持IIOPRMI

n  安全机制由角色(Role)驱动,而非方法。

n   支持实体类,且必须在应用中实现。

(3)    EJB2.0

2001822日发布,JSR 19 定义。

n  制定了构建面向对象商务应用的标准组建结构。

n  支持构筑使用不同开发工具所开发之组件的联合应用部署。

n  在多线程,连接池,事务管理等方面对用户透明化。

n  使符合“一次写成,多次运行”的Java思想。

n  关注企业级应用生命期间的开发,部署,运行等动作。

n  定义了不同开发工具所需遵守的契约,以便其产品能够在运行期交互。

n  支持与现行系统兼容,开发者可以扩展现有产品以使之支持EJB

n  与其他Java API兼容。

n  支持EJBJava2平台企业版或者其他非Java应用程序之间的互操作性。

n  支持与CORBA兼容的RMI-IIOP

(4)    EJB2.1

20031124日发布,JSR 153定义。

n   Web服务:可将无状态会话bean暴露为Web服务;EJB可通过引用访问Web服务。

n        EJB定时器服务:提供一种新的基于定时器的事件驱动方式。可供消息驱动bean作为消息源使用。

n        增加了消息目的地。

n        进一步丰富了EJB查询语言,支持ORDER BY, AVG, MIN, MAX, SUM, COUNTMOD

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

(5)    EJB3.0

200652日发布,JSR 220定义。

n  全面采用Java注释代替部署描述符。(后者仍可使用,并且具有更高优先级)

 1.3      EJB3.0特点

1.3.1    易用性

 

  1.3.1.1  简化的程序设计模型

     EJB3使你可以使用POJOPOJI开发EJB组件。然后使用注解对这些POJOPOJI应用配置元数据,以便添加平台服务,比如Web Service支持、生命周期回调等。

1.3.1.2  简化的持久化API

     JPA定义了一种方法,可以将常规的POJO映射到数据库。使用JPAentity对象并不要求实现任何规范特有的接口或类。Java Persistence规范定义了一个完备的对象关系映射(ORM),如此,带来很多好处。第一entity便能够在厂商之间轻松移植,还能用于应用服务器之外的常规Java应用程序,甚至可以用于客户端和服务器之间的数据传输。这使得设计更加简洁、紧凑。

1.3.2    集成解决方案套装

      EJB3提供服务器解决方案的完整套装,包括持久化、消息、Web服务、依赖注入和拦截器等。这就是说你不必花费很多时间寻找第三方工具并将其集成到应用程序中。

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



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

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

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

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

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工