近期的项目中使用了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是什么?(节选)的更多相关文章

  1. NetBean 8 创建EJB

    一. 介绍 百度了一下关于在NetBean开发环境里创建EJB的教程,没有找到好的例子,2天的调试过程,写下来帮助后人. EJB (Enterprise Java Bean) 是一套高扩展性的开发企业 ...

  2. J2EE基础之EJB

    J2EE基础之EJB 1.什么是EJB?       EJB(Enterprise Java Beans),是JavaEE中的商业应用组件技术,是JavaEE三大组件(Servlet,JSP,EJB) ...

  3. 2.一个EJB的小Demo

    新建一个java普通项目即可 这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下. 3个接口分别如下所示: publ ...

  4. 1.认识EJB

    什么是EJB?1. Enterprice JavaBeans(EJB)是一个用于分布式业务应用的标准服务端组件模型. . 采用EJB架构编写的应用是可伸的.事务性的.多用户安全的. . 采用EJB编写 ...

  5. 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 ...

  6. EJB之Timer

    EJB Timer 要么: Annotation @Schedule 或者方法前声明@Timeout 要么: 在部署描述中定义timeout-method 如果是使用@Schedule, Timer在 ...

  7. EJB的调用

    EJB调用.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border ...

  8. EJB 简介

    EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准:   可扩展 (Scalable) ...

  9. EJB初识(通熟易懂)

    转载自http://blog.csdn.net/jojo52013145/article/details/5783677,讲的很透彻,佩服,膜拜学习 1. 我们不禁要问,什么是"服务集群&q ...

随机推荐

  1. 网页结构——head标签内

    之前写网页都很标准的格式,最近一个项目出现了页面闪动等一系列问题[项目不是前后端分离], 所以这边有后台的功劳,有部分后台是不管你页面结构的,在他们操作的时候可能会在,你的head内meta前加内联c ...

  2. POJ 3041 Asteroids (二分图匹配)

    [题目链接] http://poj.org/problem?id=3041 [题目大意] 一个棋盘上放着一些棋子 每次操作可以拿走一行上所有的棋子或者一列上所有的棋子 问几次操作可以拿完所有的棋子 [ ...

  3. [POI2012]A Horrible Poem

    题目大意: 给定一个长度为$n(n\leq5\times10^5)$的字符串$S$,$q(q\leq2\times10^6)$组询问,每次询问子串$S_{[l_i,r_i]}$最小循环节. 思路: 若 ...

  4. 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)

    一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ...

  5. 【微信】微信小程序 微信开发工具 创建js文件报错 pages/module/module.js 出现脚本错误或者未正确调用 Page()

    创建报错pages/module/module.js 出现脚本错误或者未正确调用 Page() 解决方法: 在js文件中添加 Page({ })

  6. scala函数返回值

    1.使用returndef functionName ([参数列表]) : [return type] = { function body return [expr] } 2.直接把返回值写在最后: ...

  7. IP分类:A,B,C,D,E五类

    IP地址分为五类: IP地址分为五类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验. 常用的三类IP地址 IP = 网路地址(网络号)+主机地址(主 ...

  8. python下性能提示

    性能提示 3.1 嵌套if/else结构比一系列单选if结构块,因为只要有一个条件满足,其余测试就会终止. 3.2 在嵌套if/else结构中,把最可能成立的条件放在该嵌套结构的开始处.和把不常见的条 ...

  9. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  10. javaweb项目自定义错误页面

    当我们把一个web项目成功发布出去,但是有些页面还有待完善的时候,会出现404错误页面.这个会给用户很差的体验.如何将这些错误页面修改为自定义的错误页界面,给用户一些友好的提示呢? 首先我们在web. ...