java网络编程技术

上传人:千****8 文档编号:115578515 上传时间:2019-11-14 格式:PPT 页数:80 大小:414.50KB
返回 下载 相关 举报
java网络编程技术_第1页
第1页 / 共80页
java网络编程技术_第2页
第2页 / 共80页
java网络编程技术_第3页
第3页 / 共80页
java网络编程技术_第4页
第4页 / 共80页
java网络编程技术_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《java网络编程技术》由会员分享,可在线阅读,更多相关《java网络编程技术(80页珍藏版)》请在金锄头文库上搜索。

1、第15章EJB网络应用程序开发(1)215.1EJB简介EJB(EnterpriseJavaBean)组件。在JavaEE中,组件技术是非常重要的内容。组件实现了系统的大部分功能,它们运行在性用的服务器上供客户端进行调用。在JavaEE中重要的组件有2类:1.EJB组件。2.web组件。EJB开发是J2EE的核心内容。在典型型的JavaEE四层模型中,EJB位于业务层,主要用来实现企业级应用中的业务逻辑。3JavaEE业务逻辑从客户端软件中抽取出来,封装在一个组件中,这个组件运行在一个独立的服务器上,客观端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端的功能单纯到只负责发送调用请求和显

2、示处理结果。在JavaEE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(EnterpriseJavaBean)组件。4EJB应用的典型架构56EJB的实现技术EJB是运行在独立服务器上的组件,客户端是通过网络对对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,EJB的技术正是RMI。通过RMI技术,JavaEE将EJB组件创建为远程对象,客户端就可以通过网络调用EJB对象了。不同于RMI,EJB客户端进行远程调用时。并不是采用RMI注册表提供的命名服务进行查找,而是使用JNDI技术查找EJB对象。JNDI屏蔽掉了RMI命名服务实现的细节,是客户端程序更具有

3、通用性。7远程方法调用(RMI)RMI生成远程对象必须先要定义远程接口(继承Remote接口),然后还要编写它的实现类。开发EJB组件时,也是要先定义远程接口,但不用编写它们的实现类,远程对象的实现类是由EJB组件所运行的容器根据远程接口自动实现的,不同的容器生成的实现类文件可能不同。与RMI不同,EJB组件包含2个接口文件,一个是Remote接口文件,另一个是Home接口文件。这两个接口都是远程接口,都继承了java.rmi.Remote接口,并且它们声明的方法都要抛出java.rmi.RemoteException异常。8Remote接口中声明的方法是EJB中实现了业务逻辑的方法,而Hom

4、e接口则声明了如何生成EJB对象的create方法(实体EJB还包含finder方法)。EJB容器在运行组件时,先生成一个Home对象,这个对象就是Home接口实现类的实例。客户端程序在调用时,首先通过JNDI查找到Home对象,然后调用Home接口提供的创建EJB对象的方法返回一个EJB对象的引用。EJB组件中真正的EJB对象是由容器生成的Remote接口实现类的对象,而它是由Home接口中的创建组件的方法来生成的。9EJB技术的高明之处在于它虽然使用了RMI技术,但却只需要定义远程接口而无需定义它们的实现类。RMI与EJBRemote接口的不同:RMI的Remote接口是继承java.rm

5、i.Remote接口;EJB的Remote接口是继承javax.elb.EJBObject接口;java.elb.EJBObject接口是java.rmi.Remote子接口,增添了与EJB相关的方法。对于本地视图的EJB接口继承javax.ejb.EJBLoaclObject接口,该接口没有继承java.rmi.Remote接口。10JNDI(JavaNamingDirectoryInteface)服务EJB采用JNDI来查找EJB对象。JNDI是一个J2EEAPI,提供了一个定位用户,机器,网络,对象,和服务等的标准接口JNDI接口提供了一个公共框架,通过它可以执行所有的目录操作EJB采用

6、JNDI来查找EJB对象。11XMLEJB组件最后要部署到容器上才能够运行,容器需要部署人员向它提供有关EJB组件的一些信息。这些部署信息是通过XML文档的形式提供给容器。EJB规范中要求的部署文件只有一个,即ejb-jar.xml。12从EJB组件组件开发到应用的全过程中,EJB组件与三个角色发生关系,他们是EJB组件开发人员、容器供应商和客户端。从EJB开发人员的角度看,一个EJB组件有四个组成部分:Home接口、Remote接口、EnterpriseBean和部署秒描述文件;从容器的角度来看,它从EJB中读取部署描述文件,通过部署描述文件提供的信息生成Home对象、EJB对象和Enter

7、prise对象,并回调EnterpriseBean对象中提供的方法,实现EJB对象所需要的一些服务;EJB组件与不同角色的关系13从客户的角度来看,EJB组件则提供了一组可以调用的业务方法。能够完成整个业务流程中大部分业务逻辑。对EJB来说,有两种客户可以调用的方法,一种是远程客户可以调用的方法,另一种是本地客户可以调用的方法。所以EJB有责任向客户提供两种视图,即本地视图和远程视图。14EJB分类类EJB2.1中定义了三种不同类型的EJB,会话Bean(SessionBean)、实体Bean(EntityBean)和消息Bean(Message-DrivenBean)。会话话Bean会话Be

8、an是一个应用逻辑组件,表示的是客户要求完成的任务。如网上虚拟的购物车就是一个会话Bean,它实现了客户要求的各种任务,如添加商品,删除商品、结账等。会话Bean不是持久数据对象,它不会存储的数据库中,当服务器或容器发生意外崩溃后,会话Bean就不复存在了15每个客户在与服务器会话时,都会占有一个特定的会话Bean,在会话过程中其他客户机不能同时访问这个Bean,会话结束后,会话Bean一般会被收回到Bean池中。虽然会话Bean一般只存在于服务器端与客户端对话过程中,但却是实现业务逻辑的主要组件,地位十分重要。根据容器对会话Bean的状态管理的不同,会话Bean分为无状态会话Bean和有状态

9、会话Bean。无状态会话Bean不存储与客户进行会话的过程中的消息。有状态会话Bean则能保持客户状态的变化。但也只是一种暂时的保存,当服务器发生意外崩溃后,状态会丢失。16会话Bean可以直接通过JDBC对数据库进行访问,但要求EJB开发人员编写大量的数据库查询也修改语句,降低工作效率。所以更好的办法是通过实体Bean将数据对象化,然后在会话Bean中通过实体Bean对这些数据进行访问。这样可以减少编写SQL语言的代码工作量。集中精力考虑真正的业务逻辑问题。17实实体Bean实体Bean是一种持久数据组件,表示底层的数据模式。实体Bean不包括业务逻辑,它只是将底层数据对象化,以便于数据操作

10、。但也有业务方法,只不过它的业务方法比较简单,一般都是对属性的getter、setter方法。这些方法都定义在Remote接口中,用户可直接调用。会话Bean在与客户端程序会话结束后就会被回收到Bean池中,它内部所包含的数据也就不复存在了。即使是有状态的会话Bean,由于它的状态是以属性的方式存储在对象中,所以当Bean消失后,它的状态也不存在了。18通常的方法是通过会话Bean访问实体Bean,然后按照会话Bean中的业务逻辑对实体Bean所代表的数据进行处理。根据实体Bean持久管理机制不同,可以将实体Bean分为Bean管理持久机制(bean-managedpersistenceBMP

11、)的实体Bean和容器管理的持久机制(container-managedpersistence,CMP)的实体Bean。19消息Bean消息Bean用于听取Java消息服务(JMS,JavaMessageService)的输入消息。消息Bean没有向客户端公开的接口,要与消息Bean进行通信只能通过向其发送消息来实现。由于没有公开接口,所以消息Bean没有Home接口,也没有Remote接口。20对对象状态态即对象的属性值持久化方法如对象序列化、OR映射、使用对象数据库等方法。序列化将一个对象转换成字节流的形式,并在读取时将字节流还原成对象。2115.2EJB的构成EJB有四个部分构成:远远程

12、EJB构成:远程Home接口;Remote接口;EnterpriseBean类;部署描述文件。22本地EJB构成:(1)远程Home接口;(2)Local接口;(3)EnterpriseBean类;(4)部署描述文件。无论是会话Bean还是实体Bean都必须包含这四个部分;23Home接口声明了创建EJB的方法;Remote接口和Local接口则声明了实现业务逻辑的业务方法;Home接口和Local接口的方法都将开放给客户调用;EnterpriseBean类则说明了接口中的方法应该如何实现,并定义了所有容器的回调方法;但是EnterpriseBean类并没有实现Home、Local或Remot

13、e接口,它只是说明这两个接口中的方法如何实现。实际上EnterpriseBean类的真正父接口是java.ejb.EnterpriseBean接口。24Home接口会话Bean和实体Bean都有Home接口,Home接口继承了java.ejb.EJBHome或java.ejb.LoaclHome接口,前者为远程Home接口,后者为本地Home接口。25Publicinterfacejavax.ejb.EJBHomeextendsjava.rmi.RemotepublicabstractEJBMetaDatagetEJBMetaData()throwsjava.rmi.RemoteExcepti

14、onpublicabstractHomeHandlegetHomeHandle()throwsjava.rmi.RemoteExceptionpublicabstractvoidremove(Handlehandle)throwsjava.rmi.RemoteExceptionjava.ejb.RemoveExceptionpublicabstractvoidremove(ObjectprimaryKey)throwsjava.rmi.RemoteExceptionjava.ejb.RemoveException26publicinterfacejava.ejb.EJBLocalHomepub

15、licabstractvoidremove(ObjectprimaryKey)throwsRemoteExceptionEJBException27如果希望EJB同时具有远程或本地特征,就应该同时继承这两个接口。在开发EJB时,必须定义Home接口,它的作用是声明创建、删除和查找EJB对象的方法。但是,不用编写Home接口的实现类,实现类将有容器自动生成.28方法说明getEJBMetaData()用于获取EJB的EJBMetaData对象,它封装了EJB的各种信息,如EJB种类等getHomeHandle()用于获取远程Home对象的句柄remove(Handlehandle)通过EJB对象

16、的句柄消除EJB对象remove(ObjectprimaryKey)通过EJB主键类消除EJB对象,只能应用与实体BeanHome接口的方法EJB接口中要声明创建EJB对象的方法,一般称这些能够创建EIB对象的方法为create方法,create方法的名称必须以create开头,并且返回返回的是Remote接口或Local接口的实现类的对象的引用。对于实体Bean,它的Home接口除了可以定义create方法外,还可以定义finder方法。下面是一个会话Bean接口:packagefirstejbimportjavax.ejb.importjava.util.importjava.rmi.publicinterfaceFirstHomeextrendsEJBHomepublicFirstcreate()throwsCreateExceptionRemoteException客户端在调用EJB对象的方法前必须先调用FirstHome对像的create方法,创建EJB对象,这个对象就是First接口实现类的对象。Remote接口和Local接口Remote接口继承了ja

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号