对EJB的认识

接触EJB以来有一段时间了,走马观花一样把它所涉及到的东西看了一遍,随着深入了解越来越感觉到ejb的很强大,用了java后觉的java好用、学历SSH觉的比java好用、学了ejb觉的比ssh好用,至于它们什么关系,可以概括为后面的概念理解要依赖于前面,用EJB时间还不长不过已经对它有了一个新的定位,下面来让我们站在ejb的角度俯视ssh、java。

EJB相关概念

ejb既是J2EE的一种规范,又是一个特殊的java类(API、IDL一样,既是一个规范,又是一个实现)给一个类贴上规范化的标签就成了EJB类或者叫ejb组件,这种特殊的类需要一个更特殊的类来管理,以用来控制很多个我们自己建立的ejb类,这个更特殊的ejb类,我们可以称之为ejb容器,也可以叫做ejb组件、中间件都可以拿来叫,只不过概念侧重点不同。容器负责一些与业务逻辑无关而必须的功能,如事务、日志、安全、管理EJB和servlet的生命周期、数据库连接池、数据持久化等公共的服务,使得我们把主要精力放在业务逻辑上。

ejb容器相当于二次革命,大家都知道蒸汽机时代的到来,为生成提高了效率,工人们生产不再是一点一点的手工生产,而不是相当一部分工作让机器帮我们完成,我们可以把这个蒸汽机看做是ejb容器,它帮助我们完成了一些辅助性功能,不需要我们再手工开发,这样提高了我们的开发效率.

下面是我简单画的这些概念之间的基本关系,有的会有交叉、有的是包含关系,这只是一个一般关系也有一些特殊的没有包括在内。

从SSH到EJB

它们都是一种框架,作为框架都是为了解决某一方面的问题而出现,对于开发一般的项目不涉及到分布式用SSH可以完美解决,目前国内好多中小型公司都在使用这个框架开发项目,SSH属于轻量级框架即它的独立性高拿来就可以用,不会依赖于其它的一些软件,用框架开发本来的目前是为了解决开发的耦合性,使得开发越分散越有利于分工、简化开发,SSH的解决了ejb中的很多问题,如事务、日志、安全、注释等,不过还有些分布式没有解决,同ssh相比ejb是重量级框架要依赖容器运行,但是它也有它的优势,ejb为解决了项目的分布式逻辑调用,举个例子来说:如果一家公司总部设在北京,美国、上海、新加坡等有很多的子公司共用一套管理系统,如果新加坡的子系统想要调用北京总公司的系统接口,这种实现SSH是完不成的,而ejb可以完成这种跨网络的分布式互操作。

ejb也有它的缺陷,分布式调用的效率没有本地调用高,还要过多的依赖于网络通信、网络资源等,如果不是特别的大的系统,诸如电信、联通等用到ejb的时候还是比较少的,当然还有其他技术实现这种跨网络,甚至跨品太、跨语言调用,比如CORBA标准,很多厂商退出了自己的CORBA产品,为以后的分布式业务逻辑实现提供了广泛前景。

从下面可以看出ejb将业务逻辑分出来了运行在单独的EJB容器里面,这也说明他可以跨不同的电脑部署,业务逻辑、数据库可以部署在异地电脑上,这也是同ssh的主要区别。

也许你会觉的ejb功能这么强大,那么以后开发项目都用ejb吧,这也是没有必要可以说ejb是对ssh的补充和扩展,两者没有说谁一定会替代谁,就好比出现了java、C#、C++语言,就一定会淘汰掉VB吗?它们更有更得用处、有各自的市场,只是互补的关系,从ejb的发展来看它也在朝着既轻量又支持分布式的方向发展,没准ejb4.0会支持这一特点。

转自:https://www.cnblogs.com/lilongsheng1125/p/4978538.html

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

  10. EJB 教程推荐

    EJB教程 EJB概述 EJB创建应用 EJB无状态Bean EJB有状态会话Bean EJB持久性 EJB消息驱动Bean EJB注解 EJB回调 EJB定时器服务 EJB依赖注入 EJB拦截器 E ...

随机推荐

  1. 【ExtJS】 FormPanel与ComboBox的集成以及值的获取

    var formPanel = Ext.create("Ext.form.Panel",{ title : 'formPanel', width : 400, url : 'asd ...

  2. C#中加粗label的字体

    1. 在C#的代码中想直接加粗label控件的字体, label1.Font.Bold = true;//发现系统会提示Font.Bold是只读属性 如果必须要加粗字体呢,方法如下: 2. 使用Fon ...

  3. [PY3]——求TopN/BtmN 和 排序问题的解决

    需求 K长的序列,求TopN K长的序列,求BtmN 排序问题 解决 heap.nlargest().heap.nsmallest( ) sorted( )+切片 max( ).min( ) 总结和比 ...

  4. js&&jQuery实现省市区三级联动

    代码参考了:https://codepen.io/anon/pen/WzyNQB;根据自己的需要修改了一下,挂个出处 1.前端页面代码 <html> <head> <me ...

  5. 跨文件代码跳转插件:Ctags

    1.通过package control搜索Ctags 2.Enter安装,等待其安装完成 3.下载ctags可执行程序,链接:https://pan.baidu.com/s/1jIINAxo 密码:4 ...

  6. 快速清除SQL2008日志文件

    USE [master] --把数据库调整为简单模式 GO ALTER DATABASE krisvision SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DA ...

  7. Java 并发(一) --- CAS

    CAS 原理 先来看看下面的代码是否可以输出预期的值.开启了两个线程,是否会输出200 呢 结果由于并发的原因,结果会小于或等于200 , 原因出现在 count++; 由于这一行代码存在三个操作: ...

  8. 前端标注软件-pxcook像素大厨使用心得

    我们在日常开发过程中,设计师给提供的UI图,经常需要标注尺寸,有时候设计师难免会遗漏标注,这样就会大大的增加我们的沟通成本,因此,使用一款好用的标注软件就尤为重要,我推荐这款标注软件---pxcook ...

  9. Vue-Router的使用(一)

    1.首先,安装vue-router npm install vue-router --save-dev 2.创建一个route.js文件 // 1. 定义路由组件 // 可以自己写的,或者导入的,大部 ...

  10. [Java反射基础一]Class类的使用

    任何一个类都是Class类的实例对象,这个实例对象有三种表示方式 第一种表示方式(任何一个类都有一个隐含的静态成员变量class): Class c1 = Foo.class; 第二种表示方式(已知该 ...