ImageVerifierCode 换一换
格式:DOCX , 页数:74 ,大小:595.58KB ,
资源ID:4989568      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4989568.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EJBNoteAll.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EJBNoteAll.docx

1、EJBNoteAll EJB笔记EJB的预备知识:JDBCHibernateThreadIO network RoadMap 路线:Java 1、C/S架构的程序 swing、+ + 2、Web程序 (MVC架构)JDBCHibernate JSP + Servlet + 3、Java EE程序 (多层架构) Web技术 + EJB + Java EE相关(JNDI、JTA、JWS、JMS)EJB学习的目标:1、 掌握EJB的基本的原理,理解其基本概念。 (重点)体会思想企业级程序:HA(高可用性)、安全、可伸缩2、 编写各种类型的EJB。 (重点) 3、 了解EJB的一些简单的设计、部署知识

2、。(可选)EJB学习的内容:(11章)第1章:EJB概述(企业级程序背景知识、EJB概念、原理) day1重点第2章:First EJB(EJB编程的步骤、EJB3.0编程的模型)第3章:会话Bean(两种会话Bean的编写)重点第4章:会话Bean发布为一个Web服务第5章:实体基础(JPA 全称:Java持久化API) 重点第6章:消息服务(JMS、MDB)第7章:给EJB增加功能(Bean的调用、公用的标注、依赖注入、拦截器) 重点、难点第8章:实体高级部分 重点第9章:事务 重点第10章:EJB中的安全第11章:定时服务(任务管理)参考书: 精通EJB3.0、Java Enterpri

3、se Bean3.0第1章:EJB概述(企业级程序背景知识、EJB概念、原理)一、EJB是什么? What? Enterprise Java Bean 企业JavaBean定义: 采用Java语言 开发、部署服务器端的分布式组件 标准(规范)标准(规范) JSR: Java Specification Request Java规范请求 JCP: Java Community Process 是95年Sun公司定义的一个开放型组织 好比丐帮要制定班规,邀请各路长老相会,共同制定规范。 国内就有JCP成员:金蝶公司 JSR220规范二、企业级程序开发背景知识 Why? 企业级程序架构发展历史 Ho

4、st/Terminal 主机/终端主机 PC UTerm终端 (只接收输入/输出,无计算能力) 优点:a、安全、可靠,因为有许多冗余组件 b、I/O处理能力很强 缺点:a、昂贵 b、升级、扩展极其不便 主流的主机厂商:IBM主机、Unisys主机Client/Server 客户机/服务器 在客户机中有业务逻辑,胖客户端 比如Swing DBApplication Server 客户机 (安装GUI)优点:a、开发难度低、经济 b、代码易维护 缺点:a、维护较为困难,业务的改变需要重新安装GUI和后台 b、业务面对客户的数量有限Multi-layered 多层架构 (B/S)应用服务器(可选)D

5、BWeb服务器浏览器 A、接收http请求 业务逻辑的计算 数据的存储 B、表示逻辑 数据访问 部分的业务逻辑 比如存储过程 优点:维护非常方便 缺点:开发复杂度较高 开发一个企业级程序考虑的问题 1、HA 高可用性 7x24x365 集群: 把多个相似配置的Server通过网络组织在一起,形成逻辑上的概念 2、安全 3、集成 4、性能 5、中间件技术 容器提供中间件服务,组件封装业务逻辑,程序员重点在组件 组件、容器都满足标准的要求 6、分布式组件: A、组件依赖于容器,而JavaBean直接运行于JVM B、组件依赖于特定的协议 C、组件有特定的生命周期,被容器管理的 分布式应用:应用程序

6、的逻辑分散在多个服务器之上。远程方法调用JVM2 方法BJVM1 方法A Remote Method Invocations 远程方法调用 Load Balancing 负载均衡 Transparent Fail-over 透明性容错 Back-end Integration 后端集成 Transactions 事务 Clustering 群集 Dynamic Redeployment 动态重新部署 Clean Shutdown 完全关机 Logging and Auditing 日志和评审 Systems Management 系统管理 Threading 线程 Message-orient

7、ed Middleware 面向消息的中间件 Component Life Cycle 组件生命周期 Resource pooling 资源池 Security 安全性 Caching 缓存 为什么要使用EJB (优点) 容器可以提供大量的中间件服务(事务、安全、资源池、缓存、集群、后端集成) 可以简化企业级程序的开发 EJB组件 IDE 开发分布式应用,目前三大类技术:CORBA (公用对象请求代理架构) 由OMG开发的,和语言、平台无关,但要有一套CORBA现有的类库;DCoM 微软的技术,缺点就是依赖于Windows平台;EJB它们都是基于组件的技术 还有Web服务,但性能上目前有限制。

8、 可伸缩、安全的三、EJB的基本原理 代理/委托模式 委托: 原因:C基于安全的原因,入口很严格 C可能是一个远程对象,A不知道C在哪台JVM中 记录日志、审核等 A没办法或不方便访问C,这是就需要通过Delegater委托类来调用CCDelegaterA 客户端 委托类 被委托类(目标类) 委托模式的作用: (1)解耦合,调用者与被调用者 (2)为我们提供增值服务 代理: 要求委托类与被委托类都实现同一个接口。IC 代理接口 (表示实现接口)CDelegaterA 客户端 委托类 被委托类(目标类) 远程方法调用 RMI 一个Java对象可以透明地访问运行在另一个JVM中的对象。即跨虚拟机,

9、去调另一个虚拟机中的对象的方法。 透明表示不用处理网络调用的细节。 SUN公司提供RMI协议:Remote Method Invocation. 相应的API、命令行工具。 分布式对象:具有网络使能的Java对象。此对象可以被客户端所访问,不需要考虑网络细节。相对与客户端,是运行在另外的JVM中,此对象可以透明地被远程客户端所调用。 Stub: 存根对象,(1)分布式对象的本地代理;(2)实现了远程接口; (3)编码(RMI协议)、解码、网络连接、寻址 Skeleton: 骨架对象,(1)接受Stub调用请求,将请求进行解码,将请求交给分布式对象,是一种委托关系。 (2)编码所以,Stub 和

10、Skeleton的作用就是屏蔽网络调用的细节。它们是由RMI的工具rmic来生成的。RMI 远程方法调用,不同JVM的进程。运用代理/委托模式 使用EJB能够快速开发和部署分布式组件。分布式组件可供远程系统访问。分布式组件又被称为分布式对象、远程对象。无论是同一进程内的客户,还是进程外的客户及网络中的其他客户,都能够与分布式对象进行交互。远程接口拦截器远程方法调用(RMI)过程涉及到的主要步骤如下:(1)客户调用存根(stub),它是客户端提供的代理对象。Stub负责将网络通信屏蔽掉,这对于客户而言意义深远。它能够使用Socket访问网络中的其他资源。而且,还能够将Java对象(参数)转换成底

11、层网络要求的特定格式。(2)借助于网络,存根能够实现与服务器端的骨架(skeleton)进行交互。骨架为服务器端提供的代理对象。骨架负责将网络通信屏蔽掉,骨架能够接收来自Socket的访问请求,还能够将存根构建好的来自客户的参数转换转换成Java表示。 (3)骨架将来自客户的调用委派给合适的分布式对象实现。该对象完成具体的访问请求,将结果返回给骨架。则骨架将结果返回给存根,最后客户获得分布式对象的响应结果。注意:Stub和服务器端实现的对象都实现了远程接口。利用接口,暴露Bean类中的业务方法,容器会根据业务接口来产生stub和skeleton以及拦截器。采用代理/委托模式。显示中间件调用:需

12、要通过编写代码去调用中间件的API。优点:我们可以细粒度地控制中间件服务 缺点:代码的耦合性太高。是指业务代码对中间件代码的耦合。隐式中间件调用:声明式的。 优点:代码的耦合性低,编程更加简单,编程效率提高。 缺点:属于粗粒度的实施,处于方法之上。请求拦截器:Request Inteceptor 是由容器生成的; 它实现了远程接口; 是调用中间件服务; 将请求委托给远程对象。可以通过标注,或部署描述文件,EJB容器会根据这些信息来产生相应的代码。四、EJB的角色 (了解) Bean provider develop EJBs Bean开发人员 Application assembler app

13、lication architect 架构师,集成EJB,选型等 EJB deployer EJB的部署人员,选型,打包部署,性能的优化 System administrator 系统管理员 Container provider/Server provider 应用服务器提供商(容器提供商) Tool vendor 工具提供商 IDE IBM的WSAD, SUN的NetBeans五、EJB相关技术1、Java EE 用Java语言 简化开发、部署多层的、分布式的企业级应用的标准和平台 A、Java EE提供了一个分层的模型:每一层提供了相应的组件和容器面试时很重要的Java EE分层图: 客户

14、层 Web层 企业组件层(业务层) 企业资源层浏览器Html、jsAppletJDBCDBRMI协议Http协议EJBJSPServletERPJava ApplicationRMI协议MESWeb服务客户端SOAP协议EJB容器Web容器 B、提供了设计的参考(Blueprints) 容器/应用服务器C、提供标准的API和规范 组件 D、兼容性测试所以,EJB是Java EE里的企业组件层中的一种组件技术。 Enterprise JavaBeans (EJB) EJB Java API for Web Services (JAX-WS) Java开发Web服务的API The Web Ser

15、vices Metadata for the Java Platform Java Remote Method Invocation (RMI) and RMI-IIOP 远程方法调用 Java Naming and Directory Interface (JNDI) Java命名目录服务接口 Java Database Connectivity (JDBC) Java Transaction API (JTA) and Java Transaction Service (JTS) Java事务服务 Java Messaging Service (JMS) Java消息服务 Java Ser

16、vlets Java Server Pages (JSP) JavaServer Faces (JSF) Sun提出的 表示层框架 Java EE Connector Architecture (JCA) Java连接器,Java应用服务器+遗留系统 Java API for XML Parsing (JAXP) XML解析的 Java Architecture for XML Binding (JAXB) XML Java类 绑定 Java Authentication and Authorization (JAAS) Java的认证和授权服务,非常复杂CORBA IIOP协议 Inter

17、inter-ORB protocol EJB的RMI协议兼容性较差,而RMI-IIOP作一个择中。RMI的API + IIOP的协议第2章:First EJB(EJB编程的步骤、EJB3.0编程的模型)一、步骤Step1:编写Bean类、业务接口;业务接口:暴露Bean类的可访问方法的普通的Java接口。 特点: 访问Bean类,必须要通过业务接口 本地、远程业务接口EJB的调用者与EJB Bean类的实例在同一个容器中运行,使用本地接口,因为使用本地接口无网络调用的开销,性能会有所改进;反之,EJB的调用者与EJB Bean类的实例不在同一个JVM中运行,使用远程接口。 业务接口可以使用标注

18、来确定类型(远程/本地接口)Bean类:封装业务逻辑的普通的Java类。特点: Bean类一定要具有业务接口中声明的方法,但是不一定实现业务接口 Bean类中可以使用标注来确认Bean的类型。import javax.ejb.Stateless;import javax.ejb.Remote;Stateless 某种Bean类 (无状态会话Bean)Remote(HelloRemote.class) 标注远程业务接口public class HelloBean implements HelloRemote /* Creates a new instance of HelloBean */ pu

19、blic HelloBean() public String sayHello(String user) /TODO implement sayHello return Hello, + user; Step2:编译step1的代码; Java EE的API Step3:提供部署描述符; (可选)A、标准的部署描述符文件: ejb-jar.xml 与容器无关的B、容器特定的描述文件: 比如Sun的 sun-ejb-jar.xmlStep4:创建Ejb-jar文件,打包2、3步的产物;生成.war包 包中需要满足一定的结构:session/ejb/HelloRemote.classsession

20、/ejb/HelloBean.classMETA-INF/ejb-jar.xml (optional)META-INF/vendor-specific xml DD filesStep5:将Ejb-jar文件部署到容器中。Step6:通过查看EJB容器验证是否部署成功。 (可选) 查看EJB的存根有没有绑定到JNDI服务器之上。Step7:编写客户端程序调用Bean类进行测试。1、EJB容器生成Stub,并且绑定到JNDI服务器上。(绑定名:默认是远程业务接口的全限定名)2、客户端通过JNDI来查找Stub(JNDI服务器的入口信息)1、EJB容器生成Stub,并且绑定到 JNDI服务器上。J

21、NDI服务器 (绑定名:默认是远程业务接口的)HelloBeanJNDI查找EJB容器Test产生Stub对象Stub客户端JVM #1 应用服务器 Sun Application Server9.0 JVM #23、使用业务接口来调用相应的方法。package ejbclients;import javax.naming.InitialContext;import javax.naming.Context;import session.ejb.HelloRemote;public class Main public static void main(String args) throws E

22、xception System.setProperty(jndi.factory,com.sun.jndi.cosnaming.CNCtxFactory); System.setProperty(jndi.provider.url,corbaloc:localhost:3700/NameService); Context ctx = new InitialContext(); 构造初始化上下文对象 HelloRemote h = (HelloRemote) h就是存根,用远程业务接口来引用的 ctx.lookup(HelloRemote.class.getName(); Stub默认的JNDI

23、的名字 System.out.println(h.sayHello(George); 拦截器客户端SkeletonBean类Stub端口号信息: http:/localhoat:4848 加入 客户端需要依赖于Sun的运行库:appserv-rt.jar javaee.jar 业务接口二、EJB3.0的编程模型 1、EJB的类型 会话Bean:封装业务逻辑 实体Bean:封装数据访问的逻辑,类似orm方案。 消息驱动Bean:处理消息2、EJB的调用过程3、EJB3.0的改进 (了解) 取消了home接口(远程、本地)倾入式方案 取消了组件接口 取消了远程对象接口、本地对象接口 使用标注来代替

24、部署描述文件 比如Stateless a. 标注和部署描述文件可以同时使用; b. 描述文件优先级高 使用依赖注入 DI 对象间的依赖关系由容器来提供。三、会话Bean1、会话Bean的概念 用来封装业务逻辑(业务流程、业务规则、算法、工作流的一种EJB) BO (Bussiness Object) 类似Entity 业务对象,不仅有数据,还有业务对象的关系; BPO Service 生命周期非常短暂(内存中,不会被持久化)SLSBHelloBeansayHello()2、无状态会话Bean Stateless Session Beans SLSB 类图 主要内容: 特点、编程、生命周期 用来

25、建模,只需要一次方法调用即可完成的业务逻辑 特点: 不保存客户端的状态 使用Pooling来提高并发的性能 (池化的思想很重要)Bean实例拦截器Clientpooling 可以被多用户共享 编程:SLSBTaxBeangetTaxRate(city : String) : double生命周期: 实例化,调用Bean类缺省的构造器 依赖注入 (可选) 调用PostConstruct回调方法 (可选)在EJB容器调用Remove之后,销毁之前初始化EJB会回调Bean类的相应的回调方法Remove修饰的方法只是EJB容器销毁其实例A. 对于无状态会话Bean,不会真正删除B. 有状态会话Bea

26、n,会删除此Bean注意:1、 回调方法不能够在事务、安全上下文环境中运行。 在默认情况下,Bean的所有的业务方法,都会有事务支持。(有事务上下文对象存在), 这是一种隐式中间件服务。 2、回调方法可以定义在单独的回调类(POJO)A. 回调方法必须带一个参数: InvocationContextB. 使用标注将回调类与Bean类绑定C. 在Bean类中写D. PostConstruct、PreDestroy 只能放在方法的前面.补充:方法的调用一般有三种: a). 同步调用 A调用B,必须等B完成才可以进行后续工作。 b). 异步调用 A向B发送消息,不必等待B的回应。 c). 回调,也是

27、同步调用的一种。 A调用B, B再调用A。CallbackMethod()Bfb(Callback c)Afa() public void fb() new B().fb(this); 好莱坞原则:Dont call me, Ill call you!3、有状态会话Bean、特点: 需要多次方法调用来完成一个业务流程 需要维护客户端的状态 不能够被多用户共享 使用cache来提高并发性、激活、钝化机制:EJB容器需要对有状态会话Bean的状态进行保存(持久化设备)或者从持久化设备中恢复其状态。钝化:1、挑选某个相对空闲的Bean (LRU算法 最近最少使用算法)2、钝化其状态。激活:1、挑选某

28、个相对空闲的Bean (LRU算法 最近最少使用算法)2、读取保存的状态。钝化DBClient1ABClient2供C使用cacheCClient3EJB容器钝化过程: A.(默认被钝化的状态)1、有状态会话Bean的基本类型、对象类型都会被自动持久化到磁盘中去。(采用序列号协议)2、home接口的引用也会被自动钝化。3、Bean的业务接口的引用4、EntityManager、TimeService . 也会自动钝化。B.(默认情况下不被自动钝化的状态)数据库连接Connection、Socket等EJB不会帮助钝化,需要使用回调方法:Passivation 在此标注的方法中,一般用来释放这些

29、资源。PrePassivate 默认的钝化机制不支持的状态,在该方法中处理.PostActivate与PrePassivate对应,用于重新获得资源在PrePassivate中close,在PostActivate中获取连接,不过用得少,因为用数据源等。、编程:练习: 购物车的EJB SessionBean实现, 1,EJB Module 2,客户端有状态会话Bean的生命周期:补充:. init 是为了兼容EJB2.0时 ejbcreate() 是给属性赋初值 (了解)当客户端调用Remove的方法,就会把Bean删除。第4章:会话Bean发布为一个Web服务 (Web Services)企业中的实际运用:a. 做集成b. 动态的电子商务 (要求较高)一、Web服务(概念、特点、原因、编程.)1、什么是Web服务? Web Services是一种使用WSDL、SOAP技术,并使用xml文档来交换信息的网络应用程序。案例:某医院病例 保险公司不同保险公司会有不同的索赔系统,开发的语言不同,维护起来极其

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1