J2EE--EJB

一、EJB基础:

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB
(Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven
Bean)。    -------------来自百度百科

先看一下EJB的官方解释。

商务软件的核心部分是它的业务逻。业务逻抽象了整个商务过程的流程,并使用计算机语言将它们实现。

J2EE对于这个问题的处理方法是将业务逻从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE中,这个运行在一个独立的服务器上并封装了业务逻的组件就是EJB(Enterprise Java Bean)组件。

用通俗话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。

EJB的三种类型:

1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session
Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity
Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

3.MessageDriven
Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session
Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

二、EJB实现原理:

EJB是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB技术基础正是RMI。通过RMI技术,J2EE将EJB组件创建为远程对象,客户端就可以通过网络调用EJB对象了。

EJB在系统中的位置:

三、使用EJB

EJB运行机制:

服务器端:在EJB组件部署到容器上后,容器会自动生成三个对象,这三个对象是:Home对象、Remote对象或Local对象、Enterprise
Bean对象。

  客户端调用流程:使用JNDI机制绑定与定位EJB,Context.lookup找回是Home对象,然后在使用Home接口的create方法创建Remote对象;调用Remote接口中的业务方法;使用完EJB应该调用remove方法删除。如下:

(1)发现EJB

客户端需要调用ejb的本地接口,所以需要取得本地接口的远程引用,在J2EE环境中,可以通过JNDI访问这类命名服务,也就是可以使用JNDI来获取EJB本地接口的引用,这是因为EJB容器使用部署中指定的JNDI名字注册了本地接口。(部属EJB时可以设置JNDI名字,客户端就通过JNDI名字来查找到这个EJB)

Try

{

InitialContext ic = new
InitialContext();

Object lookup = ic.lookup(“java:comp/env/ejb/Agency”);

AgencyHome home=(AgencyHome)PortableRemoteObject.narrow(lookup,AgencyHome.class);

}

(2)使用

Try

{

Agency agency = home.create();

//向新创建的EJB返回一个
远程引用。

System.out.println(agency.getAgencyName());

}

(3) 删除

Agency =null

当本地RMI允许检测到远程对象不再有任何本地引用时,将为这个对象触发远程垃圾箱,意味着远程引用超时了,这会导致在服务器端再次引用对象,然后变销毁bean

总结:EJB实现原理,就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

时间: 2024-12-19 13:49:24

J2EE--EJB的相关文章

《转》浅谈EJB

ejb一直是一个让我很纠结的技术,虽然ejb作为sun推荐的最佳实践,在sun的J2EE教程中,推荐jsp和servlet作为view层,ejb作为业务逻辑层. 上述就是J2EE教程讲J2EE体系中J2EE的EJB示意图了,讲了EJB的位置,详情可以看:http://docs.oracle.com/javaee/1.4/tutorial/doc/ 然而我所接触使用ejb开发的程序员(都是国内),用了ejb,都没什么特别好感,甚至我以前的项目经理说,很多人被sun给欺骗了. 目前ejb已经出到了3

01软件构架实践阅读笔记之一

软件构架实践是我们下学期要学习的一本书,所以我想将这本书作为我阅读笔记的一本书. 在这本念书的第一章是总序,在其中提到: 1.所谓"正确的"就是在指功能.性能和成本几个方面都能满足用户要求且无缺陷: 2.所谓"无缺陷"就是在指编码后对软件系统进行彻底的穷举测试修复了所有的缺陷,保证所编写的代码本身不存在缺陷: 但是我们知道编写一个软件,并不可能很好的达到这种的效果,所以应该做到作者提到的"创造.应用.和推广"战略.但是我存在这样的问题: 1.创造

UML 学习

推荐书籍:<面向对象分析与设计(第3版)>.<UML精粹:标准对象建模语言简明指南(第3版)> 推荐一: http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=AmaterasUML 推荐二:: PlantUML :  http://www.plantuml.com/faq.html#vista   http://plantuml.sourceforge.net/classes.html http://plan

中间件测试内容及指标

一.核心功能测试指标                      交易中间件测试内容1 名字服务:测试中间件对透明的名字服务的支持和正确性2 负载均衡:测试中间件对自动在系统中完成负载平衡的支持和正确性3 请求优先权:测试中间件对服务请求优先级的支持和正确性4 可用性支持:测试中间件对进程可用性检查.超时检查等可用性支持和正确性,保证应用运行环境稳定5 安全性:测试中间件对保证应用服务安全运行和数据传输加密的支持和正确性6 动态配置:测试中间件对动态重配置节点和参数的支持和正确性7 分布式事务处理

delphi 各新版本特性收集

delphi 各新版本特性收集 Delphi XE6新增了一些特性并增强了原有的功能,主要有以下几个方面: IDE(整合开发环境) Internet XML(扩展标记语言) Compiler(编译器) COM/Active X Database support(数据库支持) CORBA Actions(动作) Custom Variants(可定义的可变类型) VCL 单元和特性 RTL单元和特性 Cross-platform development(跨平台开发) Translation too

《软件构架实践》16-19章读后感

今天,我阅读了<软件构架实践>16-19章,也就是全书的最后4章. 第16章主要介绍了Sun Microsystems的Java 2Enterprise Edition(J2EE)的架构规范,同时介绍了该规范的重要组成部分-Enterprise JavaBeans(EJB).对以Java语言编写的分布式面向对象程序,以及各种Java组件可以如何进行通信和交互,J2EE提供了一个标准的描述.EJB描述了服务器端基于组件的编程模型.作为一个整体,J2EE还描述了各种企业范围的服务.最后,它描述了厂

几种编程语言的优缺点

圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来. 巴别塔不建自毁,与其说上帝的分化将人类的语言复杂化,不如说是人类自身心灵和谐不再的分崩离析.之所以后来有了翻译,不仅是为了加强人类之间的交流,更寄达了一种愿望,希望能以此消除人际的隔阂,获求来自心灵的和谐及慰藉.真正的译者,把握血脉,抚平创痕,通传天籁,开启心门. 这是我写的旋风式的编程语言简介 -- 我本来为亚马逊开发者杂志本月的期刊写的

Java性能提示(全)

http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLists and ArrayLists (and Vectors) (Page last updated May 2001, Added 2001-06-18, Author Jack Shirazi, Publisher OnJava). Tips: ArrayList is faster than

Eclipse编辑JS响应慢,复制粘贴卡顿的解决方案

我使用的是官网标准版的eclipse4.3 for javaEE, 写JS时卡的简直无法忍受,尝试去掉所有的validate,包括菜单和项目属性中的都没作用. 整个人都急疯了~ 后来在项目根目录.project文件中, 把红色对应的配置段全部删去后. 欧拉拉~ 问题解决 <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>ucomweb</nam

[转载]通天塔导游:各种编程语言的优缺点

[译注]:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来. 巴别塔不建自毁,与其说上帝的分化将人类的语言复杂化,不如说是人类自身心灵和谐不再的分崩离析.之所以后来有了翻译,不仅是为了加强人类之间的交流,更寄达了一种愿望,希望能以此消除人际的隔阂,获求来自心灵的和谐及慰藉.真正的译者,把握血脉,抚平创痕,通传天籁,开启心门. 这是我写的旋风式的编程语言简介 —— 我本来为亚马逊开发者杂志本月