第1讲 EJB概述及其技术基础PPT课件
ejb技术的工作原理

ejb技术的工作原理EJB(Enterprise Java Beans)是一种用于构建分布式企业级应用程序的Java技术。
它是一种服务器端组件模型,用于在Java应用程序中实现业务逻辑和持久化数据。
EJB的工作原理可以分为以下几个步骤:1. 定义EJB接口:首先,开发人员需要定义EJB接口,该接口定义了EJB的方法和行为。
这些接口通常使用Java接口来定义,其中包含了业务逻辑的方法。
2. 实现EJB:接下来,开发人员需要实现EJB接口。
实现类通常称为EJB Bean,它包含了实际的业务逻辑和数据访问代码。
EJB Bean可以是无状态(Stateless)或有状态(Stateful)的。
3. 配置EJB容器:在将EJB部署到应用服务器之前,需要对EJB进行配置。
配置包括指定EJB的访问权限、事务管理、安全性等方面的设置。
这些配置信息通常包含在EJB的部署描述符文件中,如ejb-jar.xml。
4. 部署EJB:一旦EJB被配置好,就可以将其部署到应用服务器上。
应用服务器会负责管理EJB的生命周期,包括创建、激活、销毁等操作。
5. 客户端访问EJB:一旦EJB被部署到应用服务器上,客户端可以通过远程调用或本地调用的方式访问EJB。
远程调用使用RMI (Remote Method Invocation)或Web服务技术,而本地调用则直接在同一个JVM中进行。
6. EJB容器处理请求:当客户端调用EJB的方法时,请求会被EJB容器接收并处理。
EJB容器负责管理EJB的生命周期、事务管理、安全性等方面的功能。
它会根据配置信息执行相应的操作,并确保EJB的正确运行。
7. 返回结果给客户端:一旦EJB方法执行完毕,容器会将结果返回给客户端。
结果可以是一个返回值、一个对象或者一个异常。
总结起来,EJB的工作原理是通过定义EJB接口、实现EJB、配置EJB容器、部署EJB、客户端访问EJB、EJB容器处理请求和返回结果给客户端等步骤来实现分布式企业级应用程序的开发和运行。
22.0.EJB概述

步骤
设计有状态Session Bean包括四个步骤:
开发Home接口 开发组件接口 开发Bean实现类 编写部署文件
部署文件
编写部署文件:ejb-jar.xml文件
保存到...\classes\META-INF\ejb-jar.xml(注意METAINF必须大写)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN“ "/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>This is StatefulAccount EJB example</description> <display-name>StatefulAccountBean</display-name> <enterprise-beans> <session> <display-name>StatefulAccount</display-name> <ejb-name>Account</ejb-name> <home>StatefulAccountHome</home> <remote>StatefulAccount</remote> <ejb-class>StatefulAccountEJB</ejb-class> <session-type>Stateful</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>
EJB基础

J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。 这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑, 而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。 在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是 EJB(Enterprise JavaBean)组件。
户端的软件都被修改了。虽然, 看起来将各个功能模块分布在不同的服务器上从而分担了各个主计算机的CPU 资源, 然而, 真正的瓶颈并不在这里, 而是, 数据库服务器那里。 数据库服务器都会非常忙的应付各个服务器的查询及操作请求。
优点
这种机制给分布计算的系统设计、 编程都带来了极大的方便。 只要按照RMI 规则设计程序,可以不必再过问在 RMI 之下的网络细节了,如:TCP 和 Socket 等等。任意两台计算机之间的通讯完全由 RMI 负责。调用远程计算机上的对象就像本地对象一样方便。RMI 可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,可以将类似 Java 哈西表这样的复杂类型作为一个参数进行传递。
(3)对象的序列化
对象的序列化就是将你程序中实例化的某个类的对象将它转换成字节数组, 也就是说可以放到一个byte 数组中这时候,你既然已经把一个对象放到了byte数组中, 那么你当然就可以随便处置了它了,用得最多的就是把他发送到网络上远程的计算分布式计算和RPC(Remote Procedure Call) 远程过程调用 函数或子程序,让其在网络上另一台机器上执行。说白了,就是本地计算机调用远程计算机上的一个函数。
(5)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 的引用。
第1章 JavaEE基础

授权(Authorization)
资源:网页、Servlets、JSPs、EJBs等。
3、 Security
安全性控制
声明的方式
由容器控制 声明一些安全性角色,并把角色映射到实际的安全域中
Security-Role:逻辑的用户组,如经理角色、职员角色 Security-Domain:安全控制实际应用的领域,如操作系统域、实际的应用域(xx公 司) 规则1:“经理”角色可以执行“员工管理”Bean的“辞退员工”方法 规则2: “所有人(未经过身份认证)”可以访问商品信息页面
Java程序 一般具有图形用户界面。 可以直接访问JavaEE中间层的所有服务。
可以直接调用EJB提供的服务。 基于浏览器的客户端只能直接访问Web构件的服务。
2、 EJB
Enterprise Java Beans
Entity Beans
Session Beans
Message Driven Beans
Java Standard Edition
Java Card
Java Micro Edition
Java Platform HotSpot
Memory:
Classic VM
10MB< ----------------------------------------- >1MB
64bit
KVM
500KB<----------------->10KB
1、JNDI
JNDI屏蔽了不同目录服务之间的差异。JNDI service API是和具体的目录服务无关的。这使得 我们利用JNDI开发的应用可以不用修改代码而应 用到不同的目录服务上。
EJB基础——体系结构new

五邑大学信息学院 洪智勇
平台独立性
使用EJB所开发的应用的另一个特点就是平台独立 性——Write Once, Run Anywhere:
应用的平台独立性一方面得益于EJB沿袭了Java技术的平台无关性。
五邑大学信息学院 洪智勇
平台独立性
另一方面,EJB/J2EE规范的开放性使得构成EJB应用的商业对象可 以移植到任何符合EJB规范的应用服务器上。
Servlet或JSP形式的EJB客户端响应Web客户的请求
五邑大学信息学院 洪智勇
EJB Client
EJB客户还可以是其它的enterprise bean
例如session bean经常作为entity bean的客户端来访问持久数据
五邑大学信息学院 洪智勇
几点说明
每个enterprise bean都有一个home interface(和 /或localhome interface)和一个remote interface (和/或local interface)。 从使用服务的角度来看,程序员可以认为EJB Container和EJB Server提供的服务都是由容器提 供的。
Enterprise Bean
客户程序
Home Bean
Remote Bean
EJB 对象
Home Stub
Remote Stub
Home Skel
Remote Skel
通信总线
五邑大学信息学院 洪智勇
Local Interface与LocalHome Interface
EJB 2.0中引入了本地接口
CTM是一个应用服务器,它为分布式商业对象提供服务框架 CTM服务框架支持大量的系统级服务
EJB基础知识

Bean的生命周期 的生命周期
·@PrePassivate:当一个有状态的session bean 实例空闲过长的时间,容器将会钝化(passivate) 它,并把它的状态保存在缓存当中。使用这个注 释的方法会在容器钝化bean实例之前调用。这个 注释适用于有状态的会话bean。当钝化后,又经 过一段时间该bean 仍然没有被操作,容器将会把 它从存储介质中删除。以后,任何针对该bean方 法的调用容器都会抛出例外。
JavaEE相关技术 相关技术
EJB.EJB规范定义了应用开发者如何开发服务器端组件, 同时也规范了为支持这些EJB组件运行的服务器必需遵守 的规范。 用于Web服务的JavaAPI,它由Java Servlet技术及一种 针对于JEB的Web service服务规范。 Java远程方法调用RMI和RMI-IIOP.用于解决在分布式应 用中实现远程调用,类似于RPC。RMI是J2SE的规范, 为与CORBA集成,JavaEE中扩展了RMI引入了RMI-IIOP。 Java命名与目录接口(JNDI),一种用于访问网络资源的 API,开发者可以利用JNDI访问命名目录系统,同时JNDI 也能实现各种应用需求,如:访问EJB组件,访问网络中 的资源等。
EJB基础
deli.wu@
课程简介
EJB概述 EJB容器 EJB3.0与EJB2.0的区别 Java的反映机制与Annotaion 会话bean简介 会话bean开发实例
EJB概述 概述
EJB它是基于java的服务器端组件的框架技术。 通过它开发者能轻松构建企业级,分布式的组件 应用。 EJB它是一种标准,遵守EJB规范开发的组件能在 所有支持EJB的应用服务器上运行。 EJB3.0是EJB的最新版,它在延续了EJB在企业 级应用开发上的优势,同时简化了EJB 传统
中职EJB得简单开发PPT课件

2.1 开发环境和工具
Web层主要用来处理客户请求,调用 相应的逻辑块,并把结果以动态网页的形式 返回到客户端。
(3)业务层(Business Tier) 业务层也叫EJB层或应用层,它由EJB
服务器和EJB组件组成。一般情况下许多开 发商把Web服务器和EJB服务器产品结合 在一起发布,称为应用服务器。EJB层用来 实现企业级信息系统的业务逻辑。这是企业 级应用的核心。
。
2.1 开发环境和工具
WebLogic Server 6.0sp2测试版的 安装程序做成了一个独立的压缩包运行程 序——weblogic600sp2_win.exe。这个 文件大概有60M,需要硬盘110M左右的空 间。可在Windows2000 Professional简 体中文版操作系统下运行这个程序,按照每 个安装界面的提示进行安装。
2.1 开发环境和工具
由运行在业务层的EJB来处理Bean 。 一个Bean从客户端接收数据、处理,然后 把数据送到企业信息系统层存储起来。同样, 一个Bean也可以从企业信息系统取出数据, 发送到客户端程序。业务层中的EJB要运行 在容器中,容器解决了底层的问题,如事务 处理、生命周期、状态管理、多线程安全管 理、资源池等。
它在不同的数据库界面上提供了一个 统一的用户界面。提供了多种多样的数据库 连接方式。J2EE中提供了JDBC API使多 种数据库操作简单、可行。
(5)分布式通信技术 分布式通信技术是分布式企业系统的核
心技术。J2EE框架为Web应用和EJB应用 提供多种通信模式。
2.1 开发环境和工具
为了使运行于某一机器上的对象调用另 一台机器的对象,J2EE实现了如下通信方 式:
启动系统管理控制台程序要求输入系统 密码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Context.PROVIDER_URL • 注意:当客户端和服务端运行在同一个JVM上时,
上述两个设置内容由服务器来设置,否则需要由 开发人员来设置
• 建立初始上下文对象
设置了环境属性名后,通过InitialContext类调用 其有参或无参构造方法创建初始上下文对象,如:
• 目录服务:特殊的命名服务,在这种服务中,对 象不但包含一个映射名称,同时还包含属性。 如:NDS、LDAP等
• JNDI(Java Naming and Directory Interface) JNDI是Java平台的一个标准扩展,为Java程 序提供了一组访问名字与目录服务的接口、类和 关于命名空间的概念。JNDI是providerbased的技术。
EJB3.0
软件工程系:聂常红
第1讲 EJB概述与其技术基础
• 1.1 什么是EJB • 1.2 为什么使用EJB? • 1.3 EJB3.0组件类型 • 1.4 EJB3.0运行环境 • 1.5 分布式计算 • 1.6 JNDI
1.1 什么是EJB
EJB(Enterprise JavaBeans)是一 个用于分布式应用的标准服务器端组件 模型,用于编写业务层代码。
内容回顾
• 什么是EJB? • EJB3.0可运行在哪些服务器中?请列举几
个。Tomcat可以运行EJB3.0吗? • EJB3.0组件包含哪些类型?分别简述它们
的作用。
1.5 分布式计算
• 分布式计算:组件调用不同JVM上的组件进行 通信。
• 分布式计算机制:
① 客户端以常规的方式进行方法调用,无须 操心数据在网络上传输或者解析响应之类的问 题。提供服务的对象可能不在同一个虚拟机内, 甚至可能不是Java语言实现的对象。
用于构造业务逻辑.分 为无状态会话和有状 态会话
消息驱动 Bean
Message-driven bean
用于构造业务逻辑,需 与JMS结合使用,以提 供消息驱动的异步处 理功能。
实体Bean Entity Bean
仅作为普通JAVA对 象来使用,负责与 数据库表进行对象 与关系映射(O/R Mapping)
• Context上下文:JNDI中的一组绑定
JNDI Implemention Possibilities
• JNDI常用接口和类:
– Context接口:定义命名服务的基本操作及创建子上下 文等操作,常用方法如下。
public Object lookup(String name) throws NamingException; 说明:1)实现查找参数name所绑定的对象;
SOAP:
简单对象访问协议,使用基于XML的传输格 式。
Java RMI架构
服务器:
远程接口B:列出了可以远程调用的所有方法; 远程对象B:实现远程接口B的类实例化对象; 主干(skeleton):将客户端发送的参数反向序列化并调用远程对象上所需方法 远程引用层(RRL):为远程对象B创建一个远程对象引用。同时维护远程对象与 其引用之间的映射
1.2 为什么使用EJB?
EJB容器提供了企业开发中经常使用 到的服务,如事务管理、安全管理、 持久化和分布式应用,开发人员无需 自行开发这些服务,从而能够更加快 捷、简便地开发分布式、支持事务、 安全的和可移植的Java应用系统
EJB VS JavaBean
• 共同点:都可用于编写业务层代码 • 不同点:EJB适用于大型企业,主要用于
客户端:
存根(stub):以远程对象B的引用(唯一标识)、远程接口B方法描述来构造一 个代理对象; 远程引用层(RRL):远程对象B的引用到达RRL时,生成stub,并维护远程对象B 的引用与stub之间的映射
1.ห้องสมุดไป่ตู้ JNDI
• 命名服务: 提供一种绑定服务,用于将名称和对 象联系起来,从而可以使用名称来访问对象。 如:RMI、DNS等
Context ctx=new InitialContext();
• 根据访问命名服务器的不同,为上下文设置的初 始上下文和URL也不同,下面以JBoss为例:
Java EE服务器
Web容器
JSP 页面 Servlet
EJB容器 会话Bean
消息驱动 Bean
持久化提供器 实体Bean
•目前支持EJB3.0的应用服务器有JBoss (4.2.x以上版本)、Weblogic、Glassfish 等
1.4 EJB3.0组件类型
EJB3.0
会话 Bean Session bean
分布式的应用;JavaBean适用于中小型 企业,用于非分布式的且不需要事务的应 用。
EJB VS Spring
• Spring+Hibernate后具有了EJB绝大 部分功能,比如同样提供事务管理、持久 化等功能,但Spring不提供分布式应用功 能。
1.3 EJB3.0的运行环境
• EJB3.0需要运行在Java EE应用服务器中:
2)参数name为对象在命名服务器中的JNDI名称
– InitialContext类:实现了Context接口,用于创建 初始上下文对象
创建初始上下文
• 在进行JNDI查找前,必须设置应用服务器的 上下文信息,设置内容主要包含以下两个:
①初始上下文工厂:指定要使用哪个服务提供程 序spi,使用以下环境属性名来设置: Context.INITIAL_CONTEXT_FACTORY
调用本地代理
发送请求数据
调用本地服务方法
返回方法结果
返回响应数据
返回方法结果
• 三种通信技术:
RMI:
Java的远程方法调用技术,支持Java的分布 式对象之间的方法调用
CORBA:
通用对象请求代理架构,支持任何编程语言编 写的对象之间的方法调用,使用Internet Inter-ORB 协议(IIOP)支持对象间通信
② 在客户端为服务器对象安装一个代理 (proxy),客户调用此代理进行常规方法调用。 客户端代理负责与服务器进行联系。
③ 在服务器端安装第二个代理对象。该服务 器代理与客户端代理进行通信,以常规方式调 用服务器对象上的方法。
RMI CORBA SOAP
client
proxy
proxy
server