EJB是什么?(节选)
近期的项目中使用了EJB。当时就仅仅知道怎么用,没有深入的去理解。当完毕这个项目之后。再回想项目中使用的技术、框架以及工具的时候,突然感觉对EJB这个概念非常是模糊,于是上网搜一些资料。可是,非常多的资料都是“官方语言”。没有我想要的答案,可是机缘巧合下,发现了一篇可以给我解惑的文章。这里就节选一部分(查看全文)。
1. 我们不禁要问。什么是"服务集群"?什么是"企业级开发"?
既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!
这个问题事实上挺关键的。由于J2EE 中并没有说明确,也没有详细的指标或者事例告诉广大程序猿什么时候用EJB 什么时候不用。于是大家都产生一些联想,觉得EJB"分布式运算"指得是"负载均衡"提高系统的执行效率。然而,预计非常多人都搞错了,这个"服务群集"和"分布式运算"并没有根本解决执行负载的问题,尤其是针对数据库的应用系统。
为什么?
我们先把EJB 打回原形给大家来慢慢分析。
2. 把EJB 掰开了揉碎了
我们把EJB 的概念好好的分析一下。看看能发现些什么蛛丝马迹。
3.1 EJB 概念的剖析
我们先看一下,EJB 的官方解释:
商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。……
J2EE 对于这个问题的处理方法是将业务逻辑从client软件中抽取出来,封装在一个组件中。这个组件执行在一个独立的server上,client软件通过网络调用组件提供的服务以实现业务逻辑,而client软件的功能单纯到仅仅负责发送调用请求和显示处理结果。
在J2EE 中。这个执行在一个独立的server上,并封装了业务逻辑的组件就是EJB(Enterprise Java Bean)组件。
这当中我们主要关注这么几点,我们来逐条剖析:
剖析1:所谓:"业务逻辑"
我们注意到在EJB 的概念中主要提到的就是"业务逻辑"的封装。而这个业务逻辑究竟是什么?说的那么悬乎。事实上这个所谓的"业务逻辑"我们全然能够理解成运行特定任务的"类"。
剖析2:所谓:"将业务逻辑从client软件中抽取出来,封装在组件中……执行在一个服
务器上"
既然我们知道了"业务逻辑"的概念就是执行特定任务的"类",那么,什么叫"从client软件中抽取出来"?事实上,这个就是把原来放到client的"类",拿出来不放到client了,放到一个组件中。并将这个组件放到一个server上去执行。
3.2 把EJB 这个概念变成大白话
变成大白话就是,"把你编写的软件中那些须要运行制定的任务的类,不放到client软件上了,而是给他打成包放到一个server上了"。
3.3 发现问题了
无论是用"八股文"说。还是用大白话说这个EJB 概念都提到了一个词--"client软件"。
"client软件"?难道EJB 的概念中说的是C/S 软件?
是的,没错!
EJB 就是将那些"类"放到一个server上。用C/S 形式的软件client对server上的"类"进行调用。
结束语:我认为文章中的“把你编写的软件中那些须要运行制定的任务的类,不放到client软
件上了,而是给他打成包放到一个server上了”这句话就是我想要的。
用通俗易懂的语言把那些晦涩难懂的“官方语言”解说清楚,这也是一种能力。
EJB是什么?(节选)的更多相关文章
- NetBean 8 创建EJB
一. 介绍 百度了一下关于在NetBean开发环境里创建EJB的教程,没有找到好的例子,2天的调试过程,写下来帮助后人. EJB (Enterprise Java Bean) 是一套高扩展性的开发企业 ...
- J2EE基础之EJB
J2EE基础之EJB 1.什么是EJB? EJB(Enterprise Java Beans),是JavaEE中的商业应用组件技术,是JavaEE三大组件(Servlet,JSP,EJB) ...
- 2.一个EJB的小Demo
新建一个java普通项目即可 这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下. 3个接口分别如下所示: publ ...
- 1.认识EJB
什么是EJB?1. Enterprice JavaBeans(EJB)是一个用于分布式业务应用的标准服务端组件模型. . 采用EJB架构编写的应用是可伸的.事务性的.多用户安全的. . 采用EJB编写 ...
- java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead
java.lang.IllegalStateException: Not allowed to create transaction on sharedEntityManager - use Spri ...
- EJB之Timer
EJB Timer 要么: Annotation @Schedule 或者方法前声明@Timeout 要么: 在部署描述中定义timeout-method 如果是使用@Schedule, Timer在 ...
- EJB的调用
EJB调用.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border ...
- EJB 简介
EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准: 可扩展 (Scalable) ...
- EJB初识(通熟易懂)
转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...
随机推荐
- 【bzoj2839】【集合计数】容斥原理+线性求阶乘逆元小技巧
(上不了p站我要死了,侵权度娘背锅) Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取 ...
- SQL 增删改查 复习
首先创建两张表 CREATE TABLE Teacher ( Id ,) NOT NULL PRIMARY KEY, Name ) NOT NULL, ); CREATE TABLE Student ...
- Oracle PL/SQL入门之慨述
Oracle PL/SQL入门之慨述 一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言( ...
- ANDROID模拟器访问本地WEB应用10.0.2.2
在一般的Java Web程序开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务,但是如果我们在Android模拟器中也采用同样的地址来访问,Android模拟器将无法正 ...
- numpy中结构数组
在c语言中,我们可以使用关键字struct定义结构类型.和c语言一样,numpy也可以创建结构定义,这样可以很方便的读取二进制的C语言结构数组,将其转换为numpy数组对象,假设我们定义的结构数组如下 ...
- 为什么输入shutdown -h -t会报错:command not fount
如果是直接用普通用户($)的身份进行输入[user@localhost ~]$ shutdown -h -t 是不能执行,因为普通用户没有关闭机器的权限. 然而直接使用[user@localhost ...
- 转 : SQL Server数据库优化经验总结
优化数据库的注意事项: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert, ...
- NinePatch
将图片保存为扩展名为.9.png的格式直接放入Android Studio中的drawable文件夹,拖拉选择拉伸区域,如下图,即可制作出可拉伸背景
- Notepad++搭配MinGW 配置编译运行C/C++
1. Notepad++与Dev-Cpp都能编译运行, 环境变量的设置: 在PATH中加入"Dev-Cpp的MinGW64下的bin", 这是寻找gcc编译器的路径. 新建LIBR ...
- 教你如何把php项目打包成EXE文件发布
家经常会接到一些编程的活,例如设计企业网站,做做财务,统计系统什么的.或许是因为朋友的需求,或许图个零花.不管什么原因吧.等程序做好了,给对方展示.安装,就成了问题.企业网站好说,至少需要个虚拟主机什 ...