最新305设计模式课件_第1页
最新305设计模式课件_第2页
最新305设计模式课件_第3页
最新305设计模式课件_第4页
最新305设计模式课件_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

305设计模式305设计模式参考书DesigningEnterpriseApplicationswiththeJ2EEPlatform,SecondEditionArchitectingandDesigningJ2EEApplications,SL-425CoreJ2EEPatterns12/11/20222参考书DesigningEnterpriseApplic最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件J2EE应用程序场景MultitierApplicationScenarioStand-AloneClientScenarioWeb-CentricApplicationScenarioBusiness-to-BusinessScenario12/11/20229J2EE应用程序场景MultitierApplicatioJ2EE应用程序场景MultitierApplicationScenarioStand-AloneClientScenarioWeb-CentricApplicationScenarioBusiness-to-BusinessScenario12/11/202210J2EE应用程序场景MultitierApplicatioJ2EE组件和容器ClientcomponentsAppletApplicationclientJavaWebStart-enabledrichclientWirelessclientWebcomponentsServletJspEJBcomponentsSessionbeanEntitybeanMessage-drivenbean12/11/202211J2EE组件和容器Clientcomponents12/1J2EE平台服务和服务技术J2EE平台提供一系列服务,并允许以统一的方式访问这些服务平台服务(PlatformService)简化编程的工作,允许在部署时间对组件和应用程序进行定制应用程序或组件可以使用被部署环境中的资源服务技术(ServiceTechnologies)允许应用程序以统一的方式访问各种服务标准的API,供组件开发人员使用服务标准的SPI,供J2EE产品提供商实现服务12/11/202212J2EE平台服务和服务技术J2EE平平台服务Namingservices可以在不改变组件源码的情况下定制组件使用一个名字访问数据库连接,其他的组件等资源DeploymentServices在打包和部署定制应用程序/组件部署描述符J2EE.ear=client.jar+web.war+ejb.jar+connector.rarTransactionServicesFlat:不允许嵌套事务Distributed:支持分布式事务SecurityServices认证(Authentication)授权(Authorization)12/11/202213平台服务Namingservices12/10/20221服务技术JavaNamingandDirectoryInterface(JNDI)JDBCAPIJDBC2.0CoreAPIJDBC2.0ExtensionAPI,连接池和分布式事务支持JavaTransactionAPIandService(JTA,JTS)JTAJTSJavaConnectorArchitecture(JTA)连接J2EE平台和EISJavaAPIforXMLProcessingTechnologyDOM:DocumentObjectModelSAX:Event-basedModelXSLT12/11/202214服务技术JavaNamingandDirectory通信技术InternetProtocolsTCP/IPHTTP1.0SSL3.0RemoteMethodInvocationProtocolsObjectManagementGroupProtocolsJavaIDLRMI-IIOPMessageTechnologiesJavaMessageServiceAPIJavaMailAPIJavaBeansActivationFrameworkAPIDataFormatsHTML3.2ImagefilesJARfileClassfileXML12/11/202215通信技术InternetProtocols12/10/20EJB基础12/11/202216EJB基础12/10/202216EJB的构成为创建EJB服务器端组件,Enterprise

Bean开发人员提供了两个定义bean商业方法的公共接口——Remote接口和Home接口(或者Local接口和LocalHome接口),以及真正的bean实现类——Bean

Class。客户机使用bean的公共接口来创建、操作bean,以及从服务器除去bean。bean实现类在运行时被实例化。12/11/202217EJB的构成为创建EJB服务器端组件,EnterprisEJB的构成Bean实现类:EntityBean的实现类实现javax.ejb.EntityBean接口。SessionBean的实现类实现javax.ejb.SessionBean接口。Message-drivenBean的实现类实现javax.ejb.MessageDrivenBean接口。Bean实现类要实现Remote/Local接口中定义的商业方法,以及Home/LocalHome接口中定义的创建、破坏、查找方法。12/11/202218EJB的构成Bean实现类:12/10/202218EJB的构成EJB2.0中SessionBean和EntityBean可以有两种客户端视图——Local

Client

View和Remote

Client

View:Remote

Client

View适用于分布式环境,对Remot/Home接口方法的调用都是远程调用,因此对性能有一定的影响(特别是在细粒度的情况下)。Local

Client

View避免了远程方法调用的开销,但是客户端和服务器必须存在于同一JVM中,同时失去了分布式环境带来的好处。RemoteClientViewLocalClientView12/11/202219EJB的构成EJB2.0中SessionBean和EntiEJB的构成Home/LocalHome接口:FactoryHome接口继承javax.ejb.EJBHome接口。LocalHome接口继承javax.ejb.EJBLocalHome接口。Home接口中都要定义bean的创建、破坏、查找方法。12/11/202220EJB的构成Home/LocalHome接口:12/10/2EJB的构成Remote/Local接口:Delegate供客户端调用商业方法的接口。Remote接口继承javax.ejb.EJBObject接口。Local接口继承javax.ejb.EJBLocalObject接口。两个接口中都要定义bean的商业方法。12/11/202221EJB的构成Remote/Local接口:12/10/202EJB的构成-类图12/11/202222EJB的构成-类图12/10/202222EJB的构成-部署描述符ejb-jar.xml<!DOCTYPEejb-jarPUBLIC"-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN""/dtd/ejb-jar_2_0.dtd"><ejb-jar><enterprise-beans><session><ejb-name>Hello</ejb-name><home>examples.HelloHome</home><remote>examples.Hello</remote><local-home>examples.HelloLocalHome</local-home><local>examples.HelloLocal</local><ejb-class>examples.HelloBean</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type></session></enterprise-beans></ejb-jar>12/11/202223EJB的构成-部署描述符ejb-jar.xml12/10/2EJB的构成-打包Remote/Home接口及实现类的class文件,实体Bean还包括primarykeyclass代码中依赖的其他class文件,如参数、返回值以及自定义异常等类型部署描述符(META-INF/ejb-jar.xml)12/11/202224EJB的构成-打包Remote/Home接口及实现类的claEJB容器12/11/202225EJB容器12/10/202225EJB容器在部署EJB时,容器会为每个EJB:根据Home接口和Remote接口产生HomeObject和RemoteObject生成stub和skeleton根据部署描述符设置安全环境根据部署描述符设置事务环境在JNDI名称空间中注册EJB——包括Home接口、资源引用等为CMP的实体Bean创建数据库表12/11/202226EJB容器在部署EJB时,容器会为每个EJB:12/10/2EJB容器客户端在访问EJB时:通过JNDI查找到HomeObject的引用通过HomeInterface上的create方法创建一个RemoteObjectHomeObject会创建并返回一个RemoteObject调用RemoteInterface上的商业方法RemoteObject截取调用进行处理,然后委托BeanClass完成商业方法RemoteObject截取BeanClass的返回进行处理,然后将结果返回给客户端12/11/202227EJB容器客户端在访问EJB时:12/10/202227EJB容器BeanClass在执行商业方法时可以访问容器:可以通过EJBContext对象(它是对容器的直接引用)请求关于环境的信息:如Client的身份、事务的状态以及自身的引用。可以通过JNDI访问资源,如JDBC连接、其它的EJB等。12/11/202228EJB容器BeanClass在执行商业方法时可以访问容器:EJB容器容器在管理EJB生命周期过程中,通过回调方法通知EJB状态的变化:BeanClass实现并响应这些回调方法,进行相应的处理不同类型的EJB回调方法各不相同,如SessionBean包括:ejbCreate;ejbRemove;ejbPassivate;ejbActivate。12/11/202229EJB容器容器在管理EJB生命周期过程中,通过回调方法通知EEnterpiseBeanEntityBeanContainer-ManagedPersistentEntityBeanBean-ManagedPersistentEntityBeanSessionBeanStatefulSessionBeanStatelessSessionBeanMessage-DrivenBeans12/11/202230EnterpiseBeanEntityBean12/10EJB设计模式SessionFacadeBusinessDelegateValueObjectCompositeEntityValueObjectAssemblerValueListHandlerDataAccessObjectServiceLocator12/11/202231EJB设计模式SessionFacade12/10/202SessionFacadeContext:

Inamulti-tieredapplication,businesslogicisencapsulatedinserver–sidecomponents.Businesscomponentsexposeinterfacesandcomplexitytoclients.Problem:Applicationclientsneedtousebusinesscomponentstofulfilltheirresponsibilities.TheBusinessObjectsexposetheirinterfacesandclientsaccessthebusinessobjectsdirectly.Thisintroducesatightcouplingbetweenbusinesscomponentsandclients.Insomescenarios,severalbusinesscomponentsmaybeusedinsuccession.ThisexposesclientstodependenciesbetweenBusinessObjects,andcanintroducenetworkchattiness.BusinessObjectsarenotprotectedfrommisuseorabusebyclients.ForcesClientsneedasimplerinterface.ThenumberofBusinessObjectsexposedoverthenetworkmustbereduced.Theclientshouldnothavetomanageinteractionsbetweenbusinesscomponents.Aunifiedservicelayermustbeprovidedforcoarsegrainedaccessbyallclients,basedonusecases.BusinessObjectsandclientsshouldbedecoupled.SolutionASessionbeanasaFaçadeencapsulatescomplexinteractionsbetweenthebusinessobjectsinaworkflow.TheSessionFaçadewillberesponsiblefor:locating,creating,andmodifyingthebusinessobjectsProvidingauniformcoarse-grainedaccesslayertoallclientsHandlingrelationshipsbetweenbusinessobjects12/11/202232SessionFacadeContext:12/10/2SessionFacade12/11/202233SessionFacade12/10/202233SessionFacade12/11/202234SessionFacade12/10/202234BusinessDelegateContext: ThesystemexposestheentirebusinessserviceAPItoitsclients,oftenacrossanetwork.Problem: Presentationtiercomponentsareinteractingdirectlywithbusinessservices,exposingtheunderlyingimplementationdetailsoftheserviceAPI.Additionally,thepresentationtiercomponentsthatusetheserviceAPImaketoomanycallsoverthenetwork.Iftheimplementationofthebusinessserviceschange,alltheexposedimplementationcodeinthepresentationtierwillalsoneedtochange.ForcesPresentationtierclientsneedaccesstobusinessservices.ServiceAPIsmaychangeasbusinessrequirementsevolve.ThereisaneedtominimizecouplingbetweenpresentationtierclientsandthebusinessserviceAPI,hidingunderlyingimplementationdetailsoftheservice,suchaslookupandaccess.Thesystemwouldbenefitfromacachingmechanismforserviceinformation.Thereisaneedtominimizethenetworktrafficbetweenclientandbusinessservices.SolutionUseabusinessdelegatetoreducecouplingbetweenpresentationtierclientsandbusinessservices.Thebusinessdelegatehidestheunderlyingimplementationdetailsofthebusinessservice,suchaslook–upandaccessdetailsofEJBs.12/11/202235BusinessDelegateContext:12/1BusinessDelegate12/11/202236BusinessDelegate12/10/202236BusinessDelegate12/11/202237BusinessDelegate12/10/202237ValueObject12/11/202238ValueObject12/10/202238ValueObject12/11/202239ValueObject12/10/202239TheEnd12/11/202240TheEnd12/10/202240

结束语谢谢大家聆听!!!41

结束语谢谢大家聆听!!!41305设计模式305设计模式参考书DesigningEnterpriseApplicationswiththeJ2EEPlatform,SecondEditionArchitectingandDesigningJ2EEApplications,SL-425CoreJ2EEPatterns12/11/202243参考书DesigningEnterpriseApplic最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件最新305设计模式课件J2EE应用程序场景MultitierApplicationScenarioStand-AloneClientScenarioWeb-CentricApplicationScenarioBusiness-to-BusinessScenario12/11/202250J2EE应用程序场景MultitierApplicatioJ2EE应用程序场景MultitierApplicationScenarioStand-AloneClientScenarioWeb-CentricApplicationScenarioBusiness-to-BusinessScenario12/11/202251J2EE应用程序场景MultitierApplicatioJ2EE组件和容器ClientcomponentsAppletApplicationclientJavaWebStart-enabledrichclientWirelessclientWebcomponentsServletJspEJBcomponentsSessionbeanEntitybeanMessage-drivenbean12/11/202252J2EE组件和容器Clientcomponents12/1J2EE平台服务和服务技术J2EE平台提供一系列服务,并允许以统一的方式访问这些服务平台服务(PlatformService)简化编程的工作,允许在部署时间对组件和应用程序进行定制应用程序或组件可以使用被部署环境中的资源服务技术(ServiceTechnologies)允许应用程序以统一的方式访问各种服务标准的API,供组件开发人员使用服务标准的SPI,供J2EE产品提供商实现服务12/11/202253J2EE平台服务和服务技术J2EE平平台服务Namingservices可以在不改变组件源码的情况下定制组件使用一个名字访问数据库连接,其他的组件等资源DeploymentServices在打包和部署定制应用程序/组件部署描述符J2EE.ear=client.jar+web.war+ejb.jar+connector.rarTransactionServicesFlat:不允许嵌套事务Distributed:支持分布式事务SecurityServices认证(Authentication)授权(Authorization)12/11/202254平台服务Namingservices12/10/20221服务技术JavaNamingandDirectoryInterface(JNDI)JDBCAPIJDBC2.0CoreAPIJDBC2.0ExtensionAPI,连接池和分布式事务支持JavaTransactionAPIandService(JTA,JTS)JTAJTSJavaConnectorArchitecture(JTA)连接J2EE平台和EISJavaAPIforXMLProcessingTechnologyDOM:DocumentObjectModelSAX:Event-basedModelXSLT12/11/202255服务技术JavaNamingandDirectory通信技术InternetProtocolsTCP/IPHTTP1.0SSL3.0RemoteMethodInvocationProtocolsObjectManagementGroupProtocolsJavaIDLRMI-IIOPMessageTechnologiesJavaMessageServiceAPIJavaMailAPIJavaBeansActivationFrameworkAPIDataFormatsHTML3.2ImagefilesJARfileClassfileXML12/11/202256通信技术InternetProtocols12/10/20EJB基础12/11/202257EJB基础12/10/202216EJB的构成为创建EJB服务器端组件,Enterprise

Bean开发人员提供了两个定义bean商业方法的公共接口——Remote接口和Home接口(或者Local接口和LocalHome接口),以及真正的bean实现类——Bean

Class。客户机使用bean的公共接口来创建、操作bean,以及从服务器除去bean。bean实现类在运行时被实例化。12/11/202258EJB的构成为创建EJB服务器端组件,EnterprisEJB的构成Bean实现类:EntityBean的实现类实现javax.ejb.EntityBean接口。SessionBean的实现类实现javax.ejb.SessionBean接口。Message-drivenBean的实现类实现javax.ejb.MessageDrivenBean接口。Bean实现类要实现Remote/Local接口中定义的商业方法,以及Home/LocalHome接口中定义的创建、破坏、查找方法。12/11/202259EJB的构成Bean实现类:12/10/202218EJB的构成EJB2.0中SessionBean和EntityBean可以有两种客户端视图——Local

Client

View和Remote

Client

View:Remote

Client

View适用于分布式环境,对Remot/Home接口方法的调用都是远程调用,因此对性能有一定的影响(特别是在细粒度的情况下)。Local

Client

View避免了远程方法调用的开销,但是客户端和服务器必须存在于同一JVM中,同时失去了分布式环境带来的好处。RemoteClientViewLocalClientView12/11/202260EJB的构成EJB2.0中SessionBean和EntiEJB的构成Home/LocalHome接口:FactoryHome接口继承javax.ejb.EJBHome接口。LocalHome接口继承javax.ejb.EJBLocalHome接口。Home接口中都要定义bean的创建、破坏、查找方法。12/11/202261EJB的构成Home/LocalHome接口:12/10/2EJB的构成Remote/Local接口:Delegate供客户端调用商业方法的接口。Remote接口继承javax.ejb.EJBObject接口。Local接口继承javax.ejb.EJBLocalObject接口。两个接口中都要定义bean的商业方法。12/11/202262EJB的构成Remote/Local接口:12/10/202EJB的构成-类图12/11/202263EJB的构成-类图12/10/202222EJB的构成-部署描述符ejb-jar.xml<!DOCTYPEejb-jarPUBLIC"-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN""/dtd/ejb-jar_2_0.dtd"><ejb-jar><enterprise-beans><session><ejb-name>Hello</ejb-name><home>examples.HelloHome</home><remote>examples.Hello</remote><local-home>examples.HelloLocalHome</local-home><local>examples.HelloLocal</local><ejb-class>examples.HelloBean</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type></session></enterprise-beans></ejb-jar>12/11/202264EJB的构成-部署描述符ejb-jar.xml12/10/2EJB的构成-打包Remote/Home接口及实现类的class文件,实体Bean还包括primarykeyclass代码中依赖的其他class文件,如参数、返回值以及自定义异常等类型部署描述符(META-INF/ejb-jar.xml)12/11/202265EJB的构成-打包Remote/Home接口及实现类的claEJB容器12/11/202266EJB容器12/10/202225EJB容器在部署EJB时,容器会为每个EJB:根据Home接口和Remote接口产生HomeObject和RemoteObject生成stub和skeleton根据部署描述符设置安全环境根据部署描述符设置事务环境在JNDI名称空间中注册EJB——包括Home接口、资源引用等为CMP的实体Bean创建数据库表12/11/202267EJB容器在部署EJB时,容器会为每个EJB:12/10/2EJB容器客户端在访问EJB时:通过JNDI查找到HomeObject的引用通过HomeInterface上的create方法创建一个RemoteObjectHomeObject会创建并返回一个RemoteObject调用RemoteInterface上的商业方法RemoteObject截取调用进行处理,然后委托BeanClass完成商业方法RemoteObject截取BeanClass的返回进行处理,然后将结果返回给客户端12/11/202268EJB容器客户端在访问EJB时:12/10/202227EJB容器BeanClass在执行商业方法时可以访问容器:可以通过EJBContext对象(它是对容器的直接引用)请求关于环境的信息:如Client的身份、事务的状态以及自身的引用。可以通过JNDI访问资源,如JDBC连接、其它的EJB等。12/11/202269EJB容器BeanClass在执行商业方法时可以访问容器:EJB容器容器在管理EJB生命周期过程中,通过回调方法通知EJB状态的变化:BeanClass实现并响应这些回调方法,进行相应的处理不同类型的EJB回调方法各不相同,如SessionBean包括:ejbCreate;ejbRemove;ejbPassivate;ejbActivate。12/11/202270EJB容器容器在管理EJB生命周期过程中,通过回调方法通知EEnterpiseBeanEntityBeanContainer-ManagedPersistentEntityBeanBean-ManagedPersistentEntityBeanSessionBeanStatefulSessionBeanStatelessSessionBeanMessage-DrivenBeans12/11/202271EnterpiseBeanEntityBean12/10EJB设计模式SessionFacadeBusinessDelegateValueObjectCompositeEntityValueObjectAssemblerValueListHandlerDataAccessObjectServiceLocator12/11/202272EJB设计模式SessionFacade12/10/202SessionFacadeContext:

Inamulti-tieredapplication,businesslogicisencapsulatedinserver–sidecomponents.Businesscomponentsexposeinterfacesandcomplexitytoclients.Problem:Applicationclientsneedtousebusinesscomponentstofulfilltheirresponsibilities.TheBusinessObjectsexposetheirinterfacesandclientsaccessthebusinessobjectsdirectly.Thisintroducesatightcouplingbetweenbusinesscomponentsandclients.Insomescenarios,severalbusinesscomponentsmaybeusedinsuccession.ThisexposesclientstodependenciesbetweenBusinessObjects,andcanintroducenetworkchattiness.BusinessObjectsarenotprotectedfrommisuseorabusebyclients.ForcesClientsneedasimplerinterface.ThenumberofBusinessObjectsexposedoverthenetworkmustbereduced.Theclientshouldnothavetomanageinteractionsbetweenbusinesscomponents.Aunifiedservicelayermustbeprovidedforcoarsegrainedaccessbyallclients,basedonusecases.BusinessObjectsandclientsshouldbedecoupled.SolutionASessionbeanasaFaçadeencapsulatescomplexinteractionsbetweenthebusinessobjectsinaworkflow.TheSessionFaçadewillberesponsiblefor:locating,creating,andmodifyingthebusinessobjectsProvidingauniformcoarse-grainedaccesslayertoallclientsHandlingrelationshipsbetweenbusinessobjects12/11

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论