JavaBean和RMI---EJB

合集下载

EJB——概述、无状态会话Bean

EJB——概述、无状态会话Bean
提供者、签名者和身份)。 EJB不能试图使用子类和Java串行化协议的对象替换特性。 EJB不能试图把this作为参数或者方法的结果进行传递。
h
23
无状态会话Bean
特点
强调功能,相对于实体Bean,后者强调数据处理。 所有客户端共享无状态会话Bean的对象,对象的
成员变量和方法也是所有客户端共享的,所以客 户端的多次调用之间不能共享信息,所以是无状 态的。 服务器端直需要创建少量的Bean对象就可以满足 多个客户端的需要。
Hello
h
27
无状态会话Bean的Bean类
使用Stateless注释,在类的前面添加 @Stateless
实现业务接口,也可以实现其他接口 使用注释PostConstruct、PreDestory声明生
命周期回调方法,当生命周期事件发生的时 候会调用该方法 使用WebMethod注释标记Web Service方法 可以通过依赖注入的方式注入需要的资源, 例如数据源、事务处理对象等
h
30
SLSB的业务接口(例)
public interface Calculator { public float add (int a, int b); public float subtract (int a, int b);
}
h
31
客户端程序
JNDI查找
连接到JNDI服务器; 查找EJB对象; 通过EJB对象调用业务方法
h
16
ቤተ መጻሕፍቲ ባይዱ EJB的类型
EJB3中
会话Bean
有状态会话Bean 无状态会话Bean
实体(通过JPA访问) 消息驱动Bean
h
17
EJB的类型

中间件_4ejb

中间件_4ejb
EJB基本概念 EJB三类构件 EJB组成
1 EJB—J2EE的基石
EJB是Java平台上的服务器端构件模型。用于创建可伸缩 、跨平台、分布式应用,并且可创建具有动态扩展性的服 务器应用。 EJB的核心思想是将商业逻辑与底层的系统逻辑分开 1 开发者只需关心商业逻辑, 2 EJB容器实现目录服务、事务处理、持久性、安全性等 底层系统逻辑。
EJB
2 EJB构件
EJB中的beans可以分为: 会话bean(维护会话):表示客户同应用之间进行 的会话,是一种商业处理过程对象。 实体bean(处理事务):代表商业过程中处理的永 久性的数据。 消息驱动Beans(Message-driven Beans):结合了 会话bean 和 JMS的消息监听器的特性, 可异步接收 JMS 消息。
<entity EJB> 域逻辑
<database> 持久层
<servlet> 用户接口
<seesion EJB> 应用逻辑
业务逻辑
2.4 消息BEAN
是EJB2.0 对1.1的一个基础性更改,专门 设计处理JMS(java message system) Jms中消息收发是异步的 EJB有两种方式使用JMS
3.1.2 EJB 原理图
EJBs in Practice
EJB Obje ct
RMI机制
3
调用EJB
EJB容器是EJB构件运行的环境,是一层代替
EJB容器
3.2 EJB容器
bean执行相应服务的接口。 EJB容器负责提供 协调管理 资源管理 版本控制 动态性 一致性 安全 事务处理 RMI等功能
1.1 一种BEAN可用的资源,使用JMS API的

最新精品JAVA高级备课完美版——ejb3 (1)

最新精品JAVA高级备课完美版——ejb3 (1)
可以运行在跟企业Bean不同的机器或不同的JVM进程上 可以是Web组件、应用客户端、或其它的企业Bean
对远程客户端来说,企业Bean的位置是透明的
为了创建一个能够被远程客户端访问的企业Bean,你必须用 @Remote注解来定义这些企业Bean。 参数需要进行序列化
本地客户端(Local Client)
EJB的基本分类
Enterprise Bean----企业Bean。
Session Bean -----会话Bean
Stateless Session Bean 无状态会话Bean Stateful Session Bean 有状态会话Bean
Message Driven Bean(MDB)---消息驱动Bean,基于JMS。
客户端与访问方式之间的关系
远程客户端
Romote方式
本地客户端
Local方式
WebService 客户式(Remote、Local、Web Service)会影响到Bean方法 的参数及其返回值。
Persistence---持久化
Entity Bean---实体Bean
会话Bean
Session Bean(会话Bean)可以执行业务逻辑操作,比如
注册用户、订单登记、数据库操作等等。
什么叫会话(Session):
即从客户端获得EJB对象开始,然后调用EJB的方法(可以多次) ,直到客户端生命周期结束,或客户端释放了EJB对象为止,称为 一次会话。
,所以它的性能要比Stateful Session Bean的好。
客户端访问接口
客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑(跟具体实 现无关)。 开发企业Bean之前,首先要做的第一个决定是:EJB是支持什么样的 客户端?因为不同的客户端,其访问方式也不同

EJB教程第一章

EJB教程第一章

RMI概述
2、RMI的目的 RMI的根本目的就是给应用程序开发者提供一个调用 远程对象方法的抽象功能,而不必采用低级通信。这样用 java开发的分布式应用程序可以完全是面向对象的,可以 使用面向对象的开发方法进行设计。 RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP是专 为Java的远程对象制定的协议。因此,Java RMI具有 Java的“Write Once,Run Anywhere”的优点,是分布 式应用系统的百分之百纯Java解决方案。用Java RMI开 发的应用系统可以部署在任何支持JRE(Java Run Environment Java,运行环境)的平台上。
Java RMI的接口和类
3) RemoteObject类 该类实现了Remote接口,为远程对象实现提供了基本 模板,它重载了Object类的几个方法,使他们具有远程的 意识。 4)RemoteServer类 该类继承了RemoteObject类并提供了其它功能,它也 是大多数RMI服务器所继承的UnicastRemoteObject类的 父类。需要特别指出的是,创建和导出远程对象所需的功 能理论上由 RemoteServer 提供,具体由其子类提供。 5)RMISocketFactory抽象类 该类同时实现RMIClientSocketFactory和 RMIServerSocketFactory接口,其实例由 RMI 运行时使 用,以便获得 RMI 调用所需的客户机和服务器套接字。
Java RMI的接口和类
2)LocateRegistry类 LocateRegistry 用于获得对特定主机(包括本地主机) 上引导远程对象注册表的引用,或用于创建一个接受对特定 端口调用的远程对象注册表。 该类定义了几个方法,均返回Registry实例 public static Registry createRegistry(int port) – 创建并导出接受指定 端口请求的本地主机上的 Registry 实例。 public static Registry getRegistry() - 返回本地主机在默认注册表端口 1099 上对远程对象 Registry 的引用。 public static Registry getRegistry(int port) - 返回本地主机在指定 端口上对远程对象 Registry 的引用。

EJB

EJB

EJB (Enterprise Java Bean)第一章:EJB知识以及运行环境1.1什么是EJB1.1.1是一个用于分布式业务应用的标准服务组件模型。

采用EJB架构编写的应用是可伸缩的,事务性的,多用户安全的.1.1.2EJB定义了三种企业Bean1.1.2.1会话Bean(Session Bean)1.1.2.1.1用于实现业务逻辑,分为有状态bean和无状态bean,每当客户发出EJB调用请求时,容器就会选择一个SessionBean来为客户服务,会话bean可以直接访问数据库,但一般由实体bean来实现数据的访问1.1.2.2实体Bean(Entity Bean)1.1.2.2.1代表真实物体的数据,在EJB3中,实体bean仅作为普通java对象来使用,负责跟数据库进行对象与关系映射(O/R Mapping)1.1.2.3消息驱动Bean(MessageDrive Bean) --MDB1.1.2.3.1MDB是设计用来专门处理基于消息请求的组件,它能够异步收发JMS消息,并能轻易与其它EJB交互,它特别适合当一个业务执行的时间很长,而执行结果无需实时向用户反馈的场合1.2运行环境·····JBoss服务器环境变量:jdk的环境变量添加:JBOSS_HOME=安装根目录;Path=%JBOSS_HOME%\bin;1.2.2JBoss中的部署JBoss不断扫描一个特殊的目录变化,[JBoss安装目录]/server/config-name(all/default)/deploy,此目录被称为”部署目录”,可以将文件直接copy到此目录下:任何jar包(其中的类被自动添加到JBoss的classpath中)EJB/JARWAR(Web Application aRchive)EAR(Enterprise Application aRchive)包含JBoss MBean定义的XML文件一个包含EJB,JAR,WAR或者EAR的解压缩内容,并以.jar,.war或者.ear结尾的目录要重新部署上述任何文件,直接用新版本覆盖以前的就可以,要重新部署一个目录,更新修改时间就即可1.2.3如何进行EJB打包1.2.3.1利用Eclipse打包1.2.3.1.1右击项目名称,选择”导出”,在导出对话框中选择”jar文件”,在“选择要导出的资源”时,选择源目录和用到的资源,然后选择一个存放目录和文件名,点击完成,搞定!1.2.3.2Ant打包上面建立了一个名为jartest的Ant项目,默认的任务为default="jar",项目的路径为build.xml文件所在目录basedir="." 。

ejb1

ejb1
3 2-3
RMI的实现—定义远程接口
4 2-4
RMI的实现—实现远程接口
5 2-5
RMI的实现—创建服务器端的注册程序
6 2-6
RMI的实现—创建客户端访问程序
7 2-7
RMI的实现—应用rmi
1)启动rmiregistry
8 2-8
RMI的实现—应用rmi
1)启动服务端程序,向rmiregistry注册
24 2-24
18 2-18
获得和使用HOME -----(3)
JNDI发回远程Home对象的一个桩
19 2-19
获得和使用HOME -----(4)
客户通过调用create()向home请求引用组件接口的引用
20 2-20
获得和使用HOME -----(5)
现在“服务”介入,bean得到创建
21 2-21
获得和使用HOME -----(6)
建立EJBObject,它的桩返回给客户
22 2-22
获得和使用HOME -----(7)
现在,客户终于可以做他想做的事情了,这就是bean上的一个 业务方法,当然,这必须通过组件接口
23 2-23
获得和使用HOME -----(8)
客户不想访问该类的更多的bean时,可以删除他的home桩,不 过即使删除了Home桩,仍然可以继续调用组件接口上的方法
16 2-16
获得和使用HOME -----(1)
AdvisorBean得到部署,服务器实例化一个AdvisorBean Home对 象,并向JNDI注册该Home对象
17 2-17
获得和使用HOME -----(2)
客户对Home完成一个jndi查找,这里使用前面注册的名 字”advisor”

J2EE复习题

J2EE复习资料一、解释下面关于J2EE的名词(1)JNDI:Java Naming & Directory Interface,JA V A命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.(2)JMS:Java Message Service,JA V A消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.(3)JTA:Java Transaction API,JA VA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.(4)JAF: Java Action FrameW ork,JA VA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.(5)RMI:Remote Method Interface,远程方法调用二、选择题(1)在标签处理类中,如何访问session范围内的共享数据? (多选)选项:(A)在TagSupport类中定义了session成员变量,直接调用它的getAttribute()方法即可。

(B)在标签处理类TagSupport类中定义了pageContext成员变量,先通过它的getSession()方法获得当前的HttpSession对象,再调用HttpSession对象的getAttribute()方法。

(C)pageContext.getAttribute(“attributename”,PageContext.SESSION_SCO PE)(2)在下面的选项中,哪些是TagSupport类的doStartTag()方法的有效返回值? (多选)选项:(A) Tag.SKIP_BODY(B) Tag.SKIY_PAGE(C) Tag.EVAL_BODY_INCLUDE(D) Tag.EVAL_PAGE(3)以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?(单选)request.setAttribute(\"count\",new Integer(0));Integer count = request.getAttribute(\"count\");选项:A)不能编译通过B)能编译通过,并正常运行C) 编译通过,但运行时抛出ClassCastException(4)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)A)表对应类B)记录对应对象C)表的字段对应类的属性D)表之间的参考关系对应类之间的依赖关系(2)以下关于SessionFactory的说法哪些正确?(多选)A)对于每个数据库事务,应该创建一个SessionFactory对象B)一个SessionFactory对象对应一个数据库存储源。

Java技术介绍


2. 跨平台
① Java语言的第二个特性就是跨平台性,也就是说使用Java语言编写的程序可以在编译 后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编 译,到处运行”。
3. 自动垃圾回收(Garbage Collection)
① C++语言一个比较致命的缺点之一是大多数C++编译器不支持垃圾收集机制。Java语言 则不同,上述的情况被自动垃圾收集功能自动处理。对象的创建和放置都是在存储器堆 栈上面进行的。当一个对象没有任何引用的时候,Java的自动垃圾收集机制就发挥作 用,自动删除这个对象所占用的空间,释放存储器以避免存储器泄漏。
– 2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP( Java Community Process) 。 – 2011年7月28日,甲骨文发布java7.0的正式版。
Java的发明人-James Gosling詹姆斯· 高斯林
为什么要开发Java?
1.应当使用面向对象程序设计方法学-OOP 2.应当允许同一程序在不同的计算机平台执 行-跨平台 3.应当包括内建的对计算机网络的支持-支
① 数据库技术概述 ② SQL语言 ③ JDBC编程接口
2. Java Web服务器
① Servlet服务器小程序 ② JSP动态网页技术 ③ Internet数据库应用实例
3. JavaBean组件设计
① ② ③ ④ JavaBean组件 JavaBean测试工具BDK JavaBeanAPI JavaBean属性
3. Java ME(J2ME)(Java 2 Platform Micro Edition)
– 面向嵌入设备开发平台 – 这个版本以前称为J2ME,也叫K-JAVA。Java ME 为在移动设备和嵌入式设备( 比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活 的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议 以及对可以动态下载的连网和离线应用程序的丰富支持。基于Java ME 规范的应 用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能 。

EJB概述

EJBEJB(Enterprise Java Bean,企业Bean),是基于Java的服务器端组件架构技术。

借助于EJB,开发者能够轻松的构件企业级的、分布式组件应用。

与此同时,在不用自身开发复杂分布式组件框架的前提下,开发者能够开发架构灵活、运行可靠及安全的应用系统。

对于服务器端开发而言,EJB引入了快速应用开发(Rapid Application Development,RAD)模型。

因此,在Java应用服务器提供商提供的肯定不是基础框架(比如,J2EE应用服务器)的基础之上,开发者能够快速、轻松地构建服务器端组件。

EJB的重要设计初衷是保证应用能够在任意提供商开发的企业中间件服务上畅行无阻,而且其便携性、可重用性都是一流的【1】。

背景简单地讲,EJB就是组件,何谓组件?1966年,面向组件编程(ECOOP)的欧洲工作组提出了以下定义:“软件组件是一个具有契约式特定接口和显示语境从属的组成单元。

软件组件能被独立地部署并从属于第三方的组成。

”从定义中能看出三个很重要的特性:●特定接口●显示从属●部署能力软件组件:宿主于普林斯顿大学的在线服务(/perl/webwn)将组件(component)定义的非常简单:事物的抽象部分(an abstract part of something)。

软件组件是组件的具体化过程,它是事物的具体部分。

软件组件是由程序代码构成的,它将抽象概念的行为进行具体化。

通常,我们能够在现实生活中找到这些抽象概念对应的真实基础。

比如,MortgageDebt组件能够将现实生活中实际发生的抵押贷款过程展示清楚,而且它还会讲涉及到的人、公司等信息也描述出来。

当然,组件与对象是两种不同的事物,它们存活于独立空间。

下面给出他们间的差异性。

组件是非常独立的实体。

只要真正掌握了组件的具体语义,开发者才能够在类似应用或完全不同的应用中重用它们。

通常,组件本身都含有运行自身所需的各类文件,因此它们能够独立于具体应用,而且能够在不同场合重用它们。

EJB简介

EJBEJBBean来为客户端服务。

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实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB 产品.EJB是BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB 必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉撒睡,比如BEAN的持续化,安全性,事务管理...一.什么是EJB?一个技术规范:EJB 从技术上而言不是一种"产品"EJBEJB 是一种标准描述了构建应用组件要解决的:可扩展(Scalable)分布式(Distributed)事务处理(Transactional)数据存储(Persistent)安全性(Secure)二.Sun 对EJB 的期望提供一个标准的分布的、基于OO 的组件架构屏蔽复杂的系统级功能需求Write once, run anywhere与非Java 应用之间的互操作能力兼容CORBA 标准三.为什么选择EJB?EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现而不是底层的实现机制(类似于4GL语言设计的目标)支持事务处理多个业务操作同时成功,或全部失败可以通过在代码外的描述来定义事务处理级别EJB可扩展性EJB 可以根据您应用的增长而扩展EJB 服务器往往还提供了负载均衡和安全性:由EJB 服务器提供资源的访问权限控制四.EJB 架构为了满足架构的目标,规范中描述了服务器(Server)容器(Container)类(Class) 和实例(Instance)Home 和Remote 接口客户端(Client)五. 简化的编程模型关注于业务逻辑实现:EJB 负责生命周期(lifecycle), 数据存储(persistence), 事务处理语义(transactional semantic), 安全(security), ...通用的编程模型:各种服务的高层APIJava 是其编程语言EJB( 业务逻辑代码) 表示了与特定商业领域(例如银行、零售等行业)相适应的逻辑。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档