您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第02章-EJB设计——体系结构
EJB体系结构内容提要EJB体系结构中的构件EJB容器EJB客户EJB容器服务EJB开发角色EJB体系结构中的构件一、EJB体系结构中的构件EJB体系结构由6种构件组成EnterpriseBeanHomeInterfaceRemoteInterfaceEJBContainerEJBServerEJBClient1、EnterpriseBeanEnterpriseBean包含商业逻辑代码的Java类提供商业方法供调用被部署到EJB应用服务器上可以被组装形成大型的EJB应用1、EnterpriseBeanEJB执行支持客户应用解决实际问题的任务例如某Enterprisebean为客户应用完成如下任务:从数据库中获取最新的股票价格,并根据价格计算当前的收益值(1)SessionBeanEnterprisebean包含三种类型,第一类为Sessionbean。Sessionbean存在于客户应用与应用服务器交互的时间段内Sessionbean中的数据不保存在数据库中Sessionbean可以是有状态的或无状态的(1)SessionBeanStatelessSessionBean在方法调用中间不维护任何状态同时可以处理多个客户应用的请求StatefulSessionBean要跨方法调用保存会话状态同时只处理一个客户应用的请求(2)EntityBean第二类Enterprisebean是EntityBeanEntityBean代表数据库中的记录EntityBean在数据库中的数据存在期间都会存在EntityBean可以被多个客户应用访问(3)MessageDrivenBean第三类Enterprisebean是MessageDrivenBeanMessageDriverBean用来处理异步消息MessageDriverBean一般不是由客户端调用的当有异步消息发送到某MessageDrivenBean,容器会调用MessageDrivenBean的回调方法——OnMessage2、HomeInterfaceEJB体系结构中的另一类构件是HomeInterfaceHomeInterface包含enterprisebean生命周期管理的相关方法客户程序使用HomeInterface创建或删除enterprisebean的实例3、RemoteInterfaceEJB体系结构中的另一类构件是RemoteInterfaceRemoteInterface包含enterprisebean实现的商业方法的定义定义了enterprisebean提供的服务客户程序只能通过remoteinterface访问enterprisebean实现的商业方法,不能直接调用。4、LocalInterface与LocalHomeInterfaceEJB2.0中引入了本地接口Local接口完成与Remote接口类似的功能LocalHome接口完成与Home接口类似的功能本地接口的不同之处在于客户应用通过本地接口发起的调用是本地调用比远程接口有更高的效率要求客户应用和enterprisebean在同一个进程(虚拟机)内例如一个SessionBean要访问同一容器内的某个EntityBean,可以使用EntityBean的本地接口以获得更高的执行效率二、EJB容器(EJBContainer)EJBContainerEJBContainer为enterprisebean提供运行环境,并管理运行于其中的enterprisebean理论上讲,一个EJB容器可以包含任何数量的enterprisebean(1)EJBContainerEJBContainer为enterprisebean的执行提供系统级的服务如自动将enterprisebean的homeinterface注册到一个目录服务中自动注册服务支持客户应用查找定位enterprisebean的实例(2)EJBServerEJBServerEJBServer是遵循EJB定义的构件模型的CTM实现一个EJBServer可以包含一个或多个EJB容器(2)EJBServerEJBServer为EJB容器的运行提供服务框架服务框架支持系统级服务如JNDI服务:JNDI服务是一种命名目录服务,支持客户应用在网络环境中访问enterprisebean三、EJB客户EJB体系结构中另一种构件是EJB客户EJB客户是调用enterprisebean提供的商业方法的应用EJB支持多种形式的客户三、EJB客户EJB客户可以是独立的Java程序,也可以是运行在Web服务器上的servlet或JSP。Servlet或JSP形式的EJB客户端响应Web客户的请求三、EJB客户EJB客户还可以是其它的enterprisebean例如sessionbean经常作为entitybean的客户端来访问持久数据几点说明每个enterprisebean都有一个homeinterface(和/或localhomeinterface)和一个remoteinterface(和/或localinterface)。从使用服务的角度来看,程序员可以认为EJBContainer和EJBServer提供的服务都是由容器提供的。四、EJB容器服务运行时服务EJB容器服务EJB容器为enterprisebean的执行与管理提供服务程序员可以在部署描述符中声明这些服务的使用1、RemoteClientConnectivityRemoteClientConnectivity是EJB容器提供的最基本的服务:该服务支持远端的客户应用访问enterprisebean1、RemoteClientConnectivityEJB容器使用JNDI服务将enterprisebean的homeinterface注册到一个目录服务中;客户应用通过JNDI服务接口获取特定enterprisebean的home接口的引用。2、LifeCycleManagementEJB容器向enterprisebean提供生命周期管理服务生命周期管理服务支持管理enterprisebean的生命周期基于生命周期管理服务,enterprisebean可以为来自多个客户应用的请求服务2、LifeCycleManagement在处理来自多个客户应用的请求时,EJB容器会改变enterprisebean的状态Enterprisebean的状态表明EJB容器中是否存在enterprisebean的实例。2、LifeCycleManagementEJB容器创建enterprisebean的实例EJB容器中不存在enterprisebean的实例例如当客户应用请求某个enterprisebean的商业方法时,如果EJB容器中不存在该enterprisebean的实例,EBJ容器就会为该enterprisebean创建一个实例。2、LifeCycleManagement当一个enterprisebean的实例不再被客户程序使用时,EJB容器会删除其实例。EJB容器删除enterprisebean的实例enterprisebean的实例不再被客户应用使用2、LifeCycleManagementEnterprisebean的生命周期包含三个状态PooledStateReadyStateNoState2、LifeCycleManagementPooledStatePooled状态表明enterprisebean的实例存在于对象池中处于pooled状态的enterprisebean实例不与任何EJB对象关联EJB对象:类型为远程接口的对象,要提供服务需要和真正的enterprisebean实例关联。2、LifeCycleManagementReadyState处于ready状态的enterprisebean实例建立了与EJB对象的关联可以处理客户应用的请求2、LifeCycleManagementNoStateNo状态表明EJB容器中不存在enterprisebean的实例该状态表明一个enterprisebean生命周期的开始与结束3、DeclarativeTransactionManagement声明性事务管理声明性事务管理服务自动管理客户应用与enterprisebean交互的开始与结束EJB容器管理客户应用与enterprisebean之间的交互3、DeclarativeTransactionManagement声明性事务管理基于程序员在部署描述符中声明的enterprisebean的事务属性。Enterprisebean的事务属性表明了在一个事务中,enterprisebean与客户应用交互的方式。3、DeclarativeTransactionManagement例如如果一个enterprisebean的事务属性为Required,则表明如果客户应用使用了事务控制,则商业方法在客户应用的事务中执行,否则在容器管理的事务中执行。TransactionattributesTransactionattributesClientstransactionTransactionwithbusinessmethodTransactionwithresourcemanagerRequiredNoneT2T2T1T1T1RequiresNewNoneT2T2T1T2T2SupportNoneNoneNoneT1T1T1T1:客户端控制事务T2:容器控制事务NONE:没有事务控制ERROR:出错Transactionattributes(cont)TransactionattributesClientstransactionTransactionwithbusinessmethodTransactionwithresourcemanagerNotSupportNoneNoneNoneT1NoneNoneMandatoryNoneERRORN/AT1T1T1NeverNoneNoneNoneT1ERRORN/AT1:客户端控制事务T2:容器控制事务NONE:没有事务控制ERROR:出错4、SecurityManagement安全性管理安全性管理保证只有授权用户才能够访问EJB应用中的enterprisebean。授权用户未授权用户ACL——AccessControlList安全性管理基于ACL——AccessControlListACL定义了EJB应用所使用的安全性角色一个安全性角色代表了一组有权访问EJB应用的用户ACL还为每个安全性角色定义了方法许可权(MethodPermission)方法许可定义了该角色可以访问的一组home和remote接口的方法每个该角色的用户都可以调用这些方法ACL基于ACL,安全性管理服务允许ACL中所包含的用户访问EJB应用。授权用户未授权用户5、PersistenceManagement持久性管理持久性管理管理entitybean数据的存储与获取EJB容器提供持久性管理所采用的机制是与具体的厂商相关的。EJB容器管理EntityBean数据的存储与获取6、ResourceManagement资源管理资源管理服务管理大量的enterprisebean这些bean在处理客户应用的请求时需要用到资源资源管理服务将这些资源在大量的enterprisebean之间共享EJB容器管理大量的enterprisebean6、ResourceManagement数据库连接资源建立数据库连接是很耗时的资源管理服务维护一组活跃的数据库连接Enterprisebean可以快速的获取可用的数据库连接一个enterprisebean释放的数据库连接可以被其它bean重用数据库连接五、EJB开
本文标题:第02章-EJB设计——体系结构
链接地址:https://www.777doc.com/doc-6232142 .html