Ejb in action(一)——开篇介绍
从今天開始。我们共同来学习JavaEE中一个很重要的规范:Ejb。
既然您已经找到了这篇文章。就说明您至少已经对分布式开发有个大体上的概念了,之前没了解过也没关系,正好通过咱们的共同学习,一起来了解它以及深入地学习它。
首先,我们来看一些Ejb的总括图:
这里是我对Ejb这一块儿知识进行的整理分类,以下我们看一下Ejb的概念。
也就是说,我们在深入展开学习之前,我们要弄明确:什么是Ejb?
Ejb也就是Enterprise JavaBeans。它是JavaEE分布式开发中的中间件,它定义了Javaserver端服务框架的规范。比方事务、安全、JNDI等等。
百度百科给出的解释例如以下:
EJB是sun的server端组件模型,设计目标与核心应用是部署分布式应用程序。凭借java跨平台的优势,用EJB技术部署的分布式系统能够不限于特定的平台。
EJB (Enterprise JavaBean)是J2EE的一部分。定义了一个用于开发基于组件的企业多重应用程序的标准。
其特点包含网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码。各自是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
了解了Ejb的概念,我们还须要了解Ejb容器以及Ejb在分布式开发中的作用:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1NzY1MDIzMDUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="390" width="592" alt="">
如上图,Ejb容器提供了分布式应用的执行环境。
client能够通过RMI或者通过JNDI对当中业务进行訪问。
以下我结合几个问题,谈谈对Ejb的看法:
1、我们既然已经有了普通的JavaBean。为什么我们还须要Enterprise JavaBean呢?
我们在开发中,当然能够写普通JavaBean,来完毕后台开发。
可是在分布式开发中使用普通的JavaBean,我们就须要考虑非常多与业务需求无关的业务。比方安全问题。我们无法保障;分布式事务,须要我们自己手动写代码维护等等这些,这些假设我们手动维护,就大大提高了对开发者的要求,他们须要写大量的反复代码。且不利于维护。
Enterprise JavaBean。可以获得Ejb容器以及Ejbserver提供的服务。
它就行帮我们做这些与业务逻辑关系不是非常大可是极其重要的事情。
我们就行将很多其它的精力放在业务逻辑的实现上。
而它的使用非常easy,与编写普通的JavaBean没有什么太大的差别。
2、在分布式开发中,毫无以为。Ejb担当起了后台服务开发,那Ejb的各种Bean、Ejb容器、Ejbserver是怎样结合工作的呢?
我们都知道。Ejb是重量级中间件。我们通过全然透明的方式对它进行訪问,尤其是在Ejb3.0中,我们仅仅须要几行注解。就配置好了事务;或者仅仅须要写几行注解,就注入了你所需的服务或资源。
我们将业务逻辑写到Enterprise Bean中,打成jar包或者war包或者ear包。部署在部署在Ejb容器上。
在Ejb容器中。包括着各种通用性的服务。也就是说,Ejb的server通过Ejb容器。向外提供服务;儿Enterprise Bean也是通过Ejb容器,间接获得所需服务。
也就是例如以下图:
Ejb发展至今,已经到了成功公布到了Ejb3.0版本号。
事实上在Ejb2版本号中,功能已经比較完好,可是较为臃肿。学习使用也较为复杂,比方学习Ejb2,须要了解各种Home接口。而在Ejb3.0版本号中,以简化开发模型为中心进行又一次设计,它将实体Bean替换为POJO,实体中不须要有Ejb专有的代码,在逻辑上。他们仍然支持远程与非远程接口。
所以,今后我们以介绍Ejb3.0版本号为主进行介绍。
Ejb in action(一)——开篇介绍的更多相关文章
- ABP理论学习之开篇介绍
返回总目录 为了和2016年春节赛跑,完成该系列博客,我牺牲了今天中午的时间来完成该系列的第一篇----开篇介绍.开篇介绍嘛,读过大学教材的同学都知道,这玩意总是那么无聊,跟考试没关系,干脆直接跳过, ...
- React与ES6(一)开篇介绍
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...
- “Zhuang.Data”轻型数据库访问框架(一)开篇介绍
目录: “Zhuang.Data”轻型数据库访问框架(一)开篇介绍 “Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象 框架介绍 该框架主要用于数据库访问,封装了包括 ...
- LinQ开篇介绍
语言集成查询(LINQ)是 Visual Studio2008中引入的一组功能. 可为 C# 和 Visual Basic 语言语法提供强大的查询功能. LINQ引入了标准易学的数据查询和更新模式,能 ...
- 一、Go语言开篇介绍
Go语言开篇介绍 Go语言 是Google公司 在2007开发一种静态强类型.编译型语言,并在 2009 年正式对外发布. Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度 ...
- Ejb in action(六)——拦截器
Ejb拦截器可以监听程序中的一个或全部方法.与Struts2中拦截器同名,并且他们都可以实现切面式服务.同一时候也与Spring中的AOP技术类似. 不同的是struts2的拦截器的实现原理是一层一层 ...
- .NET Core IdentityServer4实战-开篇介绍与规划
一.开篇寄语 由于假期的无聊,我决定了一个非常有挑战性的活动,也就是在年假给大家带来一个基于OAuth 2.0的身份授权框架,它就是 IdentityServer4 ,如果没有意外的话,一定可以顺利的 ...
- Machine Learning in Action(0) 开篇
现在貌似In Action很流行,各种技术抽象成工程商的Action,可以避开繁琐的内部原理,这本书从实践出发,通俗易懂的解释那些常用的机器学习算法,类似跟<集体智慧编程>.这本书中文出版 ...
- Ejb in action(四)——购物车实例演示有状态会话Bean
前面.我们介绍了一个入门实例.事实上那就是无状态回话Bean的经常使用情况. 上一篇文章中.我们介绍了无状态会话Bean和有状态会话Bean的相关概念.为了加深大家对它们的理解,我们一起来实现一个有状 ...
随机推荐
- [转]Android Message.obtain() 和Handler.obtainMessage()的区别
目录(?)[+] 参考:http://www.2cto.com/kf/201311/255885.html http://www.cnblogs.com/over140/archive/2 ...
- URAL 1877 Bicycle Codes
1877. Bicycle Codes Time limit: 0.5 secondMemory limit: 64 MB Den has two four-digit combination loc ...
- rpm管理环境包和代码包
Author: JinDate: 20140610System: CentOS release 6.5 (Final) 06-09-2014c零:问题配置文件问题,不打包使用的配置文件参考配置文件后缀 ...
- USB Mass Storage Class – Bulk Only Transport - Error Handling
6.4 Device Error Handling The device may not be able to fully satisfy the host's request. At the poi ...
- SQL 脚本中的全角逗号引起【ORA-01756: 引号内的字符串没有正确结束】
今天运行壹個小程序,功能是读取指定目录下的 SQL 脚本,并加载到内存中批量执行,之前的程序运行良好.但是今天相关开发人员更新了其中壹個 SQL 脚本,于是程序运行的时候就出错了,错误提示信息如下:批 ...
- cocos2d-x 3.0 将cpp-tests编译成Android版本号APK文件
cmd模式 进入到 E:\cocos2d-x-3.0rc1\cocos2d-x-3.0rc1\build 输入命令 android list targets 在输入: android-build.py ...
- PL/SQL的下载与安装
注意,为了更好的通用性,最好安装32位的. 下载地址为:https://www.allroundautomations.com/bodyplsqldevreg.html 当前最新正式版本为PL/SQL ...
- java跨域解决
import java.util.ArrayList; import java.util.List; import org.springframework.context.annotation.Bea ...
- JSP 上传文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...
- ConcurrentBag扩展 批量加入
public static void AddRange<T>(this ConcurrentBag<T> @this, IEnumerable<T> toAdd) ...