J2EE Review复习资料

上传人:努力****83 文档编号:163714335 上传时间:2022-10-22 格式:DOCX 页数:29 大小:1.06MB
收藏 版权申诉 举报 下载
J2EE Review复习资料_第1页
第1页 / 共29页
J2EE Review复习资料_第2页
第2页 / 共29页
J2EE Review复习资料_第3页
第3页 / 共29页
资源描述:

《J2EE Review复习资料》由会员分享,可在线阅读,更多相关《J2EE Review复习资料(29页珍藏版)》请在装配图网上搜索。

1、J2EE Review1. JAVAEE 概述Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本和标准,这个版本以前称为 J2EE,在Java SE的基础上构建,是一个让企业开发大幅缩短投放市场的时间的体系结构能够帮助开发和部署可移植、健壮、可伸缩、安全、可以分布式的服务器端 Java 应用程序。提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。例如:servelt api,jdbc api,

2、CORBA(公共对象请求代理体系结构),JSP,EJB,邮件服务1.1. 分布式多层应用,包括哪些层?1. J2EE可以分为4层:(方案一)客户层:运行在客户端机器上的客户端组件Web层:运行在J2EE服务器上的Web层组件.业务层:运行在j2EE服务器上的业务逻辑层组件.企业信息系统层:运行在EIS服务器上的企业信息系统层软件.2. 方案二,划分为三层客户层:客户层和web层视为一个层JavaEE服务器端数据库或者后台遗留系统1.2. javaee 组件和标准java类的区别?1. JavaEE组件采用java语言编写,像java类一样编译,将相关类和文件打包成的独立的功能单元,可以和其他组

3、件交互,可以集成部署到服务器当中运行,JAVAEE应用是由组件构成。2. 和java类的区别l 组件按照javaEE的规范被编译成javaEE应用l 可以发布部署到服务器中运行l 可以提供安全,事务管理,JNDI寻址,远程连接,生命周期管理,数据库连接操作等功能l 普通java类按j2se的编译规范编译为.class文件,不能发布部署的服务器(容器)中运行1.3. 有哪些javaEE组件,和多层结合起来,每一层有哪些组件?1. 客户端组件客户端组件Applets:采用java创建的基于html的程序应用客户端组件:比网页标记语言提供更丰富的UI,让用户能充分控制任务的执行,例如GUI(swin

4、g),AWT(abstract window toolkit)Web客户端组件(瘦客户端):动态网页(html,xml); 浏览器Javabean组件:在客户端和服务器之间或server和数据库之间管理数据流2. Web层组件服务器端组件Java servlet, JSF(javaserver faces), JSP, web层组件可以直接和数据库交互,也可以通过业务层来和数据库交互3. 业务层组件EJB企业bean,完成业务逻辑处理(会话bean,消息驱动bean,实体bean),EJB负责和EIS(企业信息系统层),数据库交互4. 企业信息系统层(EIS)负责EIS,包括企业基础设施系统,

5、例如企业资源计划(ERPenterprise resource planning (ERP)),大型主机事务处理,数据库系统,遗留信息系统1.4. 容器有哪些类型,?可配置的服务包括哪些?不可配置的服务(生命周期模型)包括哪些?容器是支持组件和底层平台功能的接口,javaee组件要编译成模块,发布到容器中运行,通过配置一些文件就可以提供安全,事务管理,JDNI查找和远程连接的服务l 容器有哪些类型?n Javaee服务器:u EJB container:管理EJB的执行,EJB容器和ejb组件可以运行在javaEE服务器行u Web container:管理web pages,servlets

6、,一些EJB组件的运行,Web容器和web组件可以运行在javaEE服务器上n 应用客户端容器:管理应用客户端组件,应用客户端和它的容器可以运行在应用客户端n Applet容器:管理applets的运行,由同时运行在客户端的web浏览器和java插件组成l 可配置的服务安全性配置用户的访问权限;事务管理配置由哪些操作来组成一个事务单元JNDI查找提供统一的接口让应用查找服务远程连接管理客户端和企业bean(EJB)之间的低层通信,一个EJB被创建,client可以invoke其中的方法就像EJB在client的同一个JVM中一样,代理模式l 不可配置的服务EJBservlet 生命周期数据库连

7、接资源池javaee平台API1.5. 组件要打包部署到服务器上,打包的内容包括哪些,打包后形成的文件类型有哪些?l 打包后的内容包括 功能组件或javaee组件:例如EJB,web page,servlet,applet 可选的部署描述文件:描述部署内容,两种类型n Javaee部署描述符:定义javaEE规范,配置部署设置n 运行时部署描述符:配置javaee实现时需要的特殊参数l 打包后的文件类型通用的java打包文件.jar文件Web应用打包成.war文件企业级应用打包成成.ear文件1.6. javaee模块有哪些类型?打包后的扩展名?各个模块的内容1. web模块, *.war 包

8、括servlet类文件,JSP页面文件,支持类文件,GIF和html文件,web应用部署描述符文件(xml形式的配置文件)2. ejb模块, *.jar 包括ejb文件,ejb配置文件(ejb部署描述符)3. application client模块; *.jar 包括相关类文件,应用客户端配置文件(部署描述符)4. resource adapter模块 *.rar 包括所有的java接口,类,本地库,文档,资源适配描述文件(资源部署描述符)1.7. 有哪些使用的轻量框架,容器,服务器l 框架 Struts:基于MVC设计模式的web框架,用于表示层 Spring:轻量级的javaee应用程序

9、框架,用于应用层,实心IOC(控制反转),支持面向方面的编程 Hibernate:ORMg工具,把文件值对象和数据库之间建立起映射关系,提供对象化的数据库查询方式,用于持久层l 容器和服务器 Web服务器:tomcat,Resin,主要是提供servlet容器;web容器提供请求分派,安全,并发,生命周期管理,提供web组件访问API EJB服务器:jboss,提供EJB容器 应用服务器:IBM websphere, oracle weblogic,应用服务器性能可靠,24小时服务,扩展性高,负载均衡,高容错性1.8. *.Java EE应用可重用模型,哪些角色?The Java EE pro

10、duct providerThe tool providerApplication Component ProviderApplication AssemblerApplicaion Deployer and Administrator1.9. *.Java EE应用哪些广泛使用的技术?EJB技术,Servlet技术,JSF,JSP,Java Persistent API,Java Transaction API,JAX-RS,Managed Beans(POJO),CDI(依赖注入),Dependency Injection,Bean Validation,JMS(消息服务),JavaEE

11、connector Architecture(支持访问EIS),JMail API,2. Servlet2.2.1. 有哪些种类的web应用?Web应用是对web或应用服务器的动态扩展,有两种类型 面向表示:包括用于交互的web pages(html,xhmtl,xml),用于响应用户的动态内容 面向服务:实现了web的端点服务2.2. web应用请求处理的过程,6步?1) client发送HTTP请求给web server2) 采用servlet和jsp实现的web server转变请求为HTTPServeltRequest object3) 该object被转发给web组件,web组件和j

12、avabean组件或数据库交互产生动态内容4) Web组件产生HTTPServletResponse,或者把request对象传给另外的web组件处理5) Web组件生成最终的HTTPServletResponse object6) Web server将该object转化为HTTPresponse,返回给客户端2.3. servlet和jsp和jsf的区别,在什么地方用哪一个技术?Java server pagesJSP;java server facesjsf Servlet:最适用于面向服务的应用,即web service可以用servlets实现;适用于面向表示的控制功能,例如requ

13、est转发,非文本数据处理 JSF和Facelets pages:是web应用的用户接口框架,包括GUI组件框架,灵活渲染不同标记语言的模型,适用于产生基于文本的标记语言,例如XHTML,适用面向表示的应用 JSP:sun公司倡导的动态网页技术标准,可以在HTML代码中可以嵌入java代码片段,基于servlet API的处理片段,达到动态效果;编译时JSP会编译为servlet,本质是一个servlet,但常用与表示层,经常结合servlet来使用2.4. web应用包括的内容,打包后包括哪些内容,web模块的结构,结构什么样,包括哪些内容?1. Web应用开发过程: 开发web组件代码 开

14、发web应用部署描述符,有必要的话 编译web应用组件和帮助类,帮助类用来引用其他组件 打包web应用为一个可部署的单元 部署应用到web容器 提供一个URL来访问web应用2. 打包后的web模块包括哪些内容Web模块是web资源最小的可部署和复用的单元包括:web组件,静态web资源(例如images),server-side utility class(database bean,shopping carts 等),客户端类(applets and utility class)打包后.war可以部署到任何有servlet容器的web服务器上3. 打包后的结构 最顶层是应用的doucume

15、nt root:XHTML pages,client-side class and archieves, 静态web资源(images)存放的位置 Document root包括一个子文件WEB-INF WEB-INF包括:n classes:一个包括server-side classes的文件夹(包括:servlets,EJB class files,utility class, javabean components)n tags:一个包含tag files的文件,tag files用户实现tag librariesn lib:一个文件夹,包含必须的jar文件,jar文件中包含ejb,ja

16、va打包的库文件,叫做server-side classesn 部署文件描述符:web应用是web.xml,ejb应用是ejb-jar.xml2.5. Web.xml包括哪些内容?1) 配置应用程序的servlet,以及访问servlet的URL2) 配置过滤器3) 配置监听器4) 配置tag文件的相关信息,taglib5) 配置session6) 配置资源和环境信息7) 配置安全信息8) 配置覆盖注解的信息9) 配置welcome-file-list2.6. sevlet的生命周期是什么?Servlet技术是:一种java编程语言类,是服务器端的小程序,用于扩展服务器的能力,用reques-

17、response的编程模型来管理访问。Servlet的生命周期由servlet所部属的容器控制,当一个客户端请求发送到服务器时,容器开始执行以下步骤:n 如果servlet实例不存在n 载入servlet类n 创建一个servlet的实例,一次只初始化一个servlet实例n 调用init方法初始化这个实例n 调用service的方法,传递request和response对象n 如果容器需要移除这个servlet,那么他就会通过调用servlet的destroy方法来释放这个servlet2.7. 访问servlet,HTTP请求包括 url包括哪些内容l 访问servlet采用请求响应模型,

18、request(从客户端到服务器端),response(从服务器端到客户端)Request包括:request方法(包括GET,HEAD,POST,PUT,DELETE,OPTIONS,TRACE);requestURL(一个字符串,由它来导向一个web组件,或者是一个静态的对象,例如html页面或者是图片文件什么的);header fields;bodyResponse包括:result code(例如404(表示请求资源不可用),401(请求需要HTTP认证),500(服务器内部错误导致无法完成请求)503(服务器超载导致无法完成请求);header fields;bodyl URLhtt

19、p:/host:portrequest-path?query-string request-path上下文路径:向前的斜线/和servlet的Web应用的上下文根的拼接。servlet路径:与激活该请求的组件别名相应的路径部分,由向前的斜线/开始。路径信息:请求路径的部分,不是上下文路径或者servlet路径的部分。 查询字符串:查询的参数2.8. tomcat容器文件的组织结构,组件结构1. tomcat是基于组件的服务器,构成组件可配置在confserver.xml2. Server代表一个服务器,可以包含多个service3. Service:代表服务,可以包含一个engine,多个co

20、nnector4. Connector代表通信接口,在某一个指定端口监听用户请求,并且将获得的请求交给engine来处理5. Engine可以包含多个host,将获得的请求匹配到某个虚拟主机上,并且吧请求交给该host来处理6. Host:可包含多个context,代表虚拟主机,每一个都和某个网络域名相匹配,每一个都可部署多个web应用7. Context对应一个web应用(由一些Servlet,HTML,Java类,JSP页面和一些其他的资源组成,在创建时根据confweb.xml获得和/WEB-INF/web.xml载入Servlet类。在请求时查询映射表找到被请求Servlet类并且执行

21、以获得请求回应2.9. tomcat如何处理http请求,简单描述 http:/localhost:8080/HelloWorld/ 1.请求被发送到本机端口8080,被Java HTTP Connector获得; 2. Connector将该请求交给它所在的Service的Engine来处理,并等待Engine的回应; 3. Engine获得请求,匹配所有虚拟主机; 4. Engine匹配到名为localhost的主机; 5. localhost主机获得请求,匹配所拥有的所有Context; 6. localhost主机匹配到路径为/HelloWorld的Context 7.路径为/Hell

22、oWorld的Context获得请求,在映射表中寻找对应的Servlet; 8.Context匹配到URL PATTERN为/的Servlet; 9.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用该Servlet的Service方法; 10. Context把执行完之后的HttpServletResponse对象返回给localhost主机; 11.Host把HttpServletResponse对象返回给Engine; 12. Engine把HttpServletResponse对象返回给Connector; 13. Connector

23、把HttpServletResponse对象返回给客户Browser2.10. session跟踪,cookie和url重写机制实现1) Session跟踪 Web应用采用session来跟踪应用的状态,因为HTTP是无状态的,有需求要维持状态。 Session被表示为HTTPSession对象,可以将一个object-valued的属性关联到session中,这样属性可以在同一个web应用的不同地方使用; 因为cIient端不会发signal不需要一个session了,所以session有timeout机制,过时失效 Web容器在client和server端传递一个标识符(session i

24、d)来维护session的状态,在client端这个标识符可以实现为cookie机制,或者在服务端采用URL重写机制来维护session,将session信息写入URL中。一般选择URL重写机制,因为cookie在客户端可能不启用 Session实现两种机制:cookie和url重写2) Cookie机制1) 访问站点创建新会话对象(Httpsession),server分配唯一会话标识号(sessionID);sessionID放入HTTPSession中2) Server创建一个暂时的HTTP cookie用来存储sessionID,server会将cookie添加到HTTP响应中,coo

25、kie被放置到客户机浏览器中,存储到客户机硬盘;3) 客户浏览器发送包含cookie的请求4) 根据客户机浏览器发送的sessionID信息,server找到相应的HttpSession对象,跟踪会话5) 在会话超时间隔期间,如果没有接收到新的请求,server将删除此会话对象3) URL重写1) Cookie被客户禁用时采用url重写机制:调用response.EncodeURL(URL)方法2) 5与cookie机制相同(PPT原话)3) server将sessionID放在返回给客户端的URL中4) 客户端浏览器发送请求包含sessionID5) 根据包含请求的sessionID信息(U

26、RL),server找到相应的httpSession对象,跟踪会话2.11. cookie和session使用场景 Cookie1. 跟踪会话,也可以独立于http会话使用cookie2. 长期“记住用户信息”3. 存储在客户机本地计算机硬盘上示例:在购物车系统中,使用cookie记录用户id,预填充;使用会话,跟踪登录状态,跟踪应用程序的使用情况,cookie.txt文件,记录用户对语言和颜色的选择之类的偏好 Session1. 保存在服务器端内存中2. 使用机制不同示例:在购物车系统中,跟踪用户的购物车,导航信息,登录状态2.12. servlet线程安全问题Servlet默认是多线程的

27、实例变量是在堆中分配的,不是线程安全的; request,response是线程安全的 局部变量是在栈中分配的,是线程安全的,局部变量可作为参数传递 Server创建一个servlet实例,用它处理并发请求编写线程安全的类,避免使用可以修改的类变量和实例变量2.13. web组件共享信息有哪几种方法web组件共享信息方法:1. private helper objects :javabean,可以在public函数的区域共享信息2. request,response绑定属性:四种作用域对象共享信息application,page,request,session3. 数据库共享信息:数据库绑定属

28、性4. 其他web资源2.14. 有哪四种作用域对象 Web context初始化参数,关联资源给web context,object-valued attributesLogging capabilities;绝对路径定位资源 Servlet context包含Web应用的配置信息,Servlet需要的某些外部资源的所在位置等信息请求转发:将客户端定向到另一个资源包括其他资源的输出相对路径定位资源2.15. 共享资源并发访问的场景P151l 并发原因多线程服务器中,共享资源带来并发的问题,内存中scope object共享实例变量和类带来并发问题外部对象:例如文件,数据库连接,网络连接l 产

29、生并发的场景 多个web组件访问web context(web上下文)中的对象 多个web组件访问session中的对象 Web组件多线程访问实例变量(可以采用实现SingleThreadModel interface来避免)l 并发避免对于并发资源做好同步,例如:在需要并发访问的class中方法前加上synchronized;public synchronized void accessVal(int newVal);2.16. 过滤器和监听器使用场景1) 过滤器是一个object,可以修改request或者response的header和context 改善代码重用,在不修改servlet

30、代码的情况下想servlet添加功能(如身份验证) 用于跨多个servlet执行一些功能,创建可重复使用的功能 在servlet处理请求之前截获请求(如:在调用servlet之前截获请求,验证用户身份,未经授权的用户遭到拒绝,而servlet不知道曾经有过这样的请求,如限制以字母D开头的已登录用户的访问) 具体使用场景:代码重用;应用安全策略;日志;为特定目标浏览器传输XML输出;图像转换、加密;动态压缩输出;解决请求和响应中中文乱码的情况2) 监听器是一个对象,监听servlet的生命周期,而做一些操作;可以监听webcontext,才初始化时做一些操作;监听session;监听reques

31、t 监听系统关闭或者是开启 监听用户访问次数 监听用户是否登录 监听session是否改变等3. JSPJSP技术可以容易的创建web context(静态+动态),sevlet技术在jsp中可用,也提供了更加自然的方式创建静态内容;特性: 一种开发JSP pages的语言,基于本文描述如何请求和响应 提供表达式语言,访问server-side的对象 定义了jsp语言上的扩展1.2.3.3.1. jsp页面是文本,有哪两种文本? 静态数据:HTML,SVG(可伸缩矢量图),WML(无线标记语言),XML 动态数据:jsp 元素(标准jsp语法,xml语法),如java代码,指令标签等3.2.

32、jsp元素包括哪些类型(明天找书看?) 指令元素; 脚本元素: 声明只在当前页面可用,声明变量和方法 行为元素jsp:set|get Property;jsp:include|forwardjsp:plugin3.3. 这些类型是如何翻译成servlet1.静态数据:转化为代码,排放到响应流中的数据。2.jsp元素 指令标签:是用来控制Web容器转换并执行JSP页面; 脚本元素:插入到JSP页面的servlet类中; 表达式语言:作为参数传递来调用JSP表达式解释器 jsp:set|getProperty:被转换成方法来调用JavaBeans组件。 jsp:include|forward: 被

33、转换成Java Servlet API的调用,即servlet采用dispatcher的方式include和forward的方式。 jsp:plugin被转换成浏览器的特定标记来激活一个applet Custom tags自定义标签:转化为调用标记处理程序,该程序实现自定义标签调用3.4. 常见的指令和动作有哪些 指令标签Page指令(session,import,extends,contentType,buffer,ThreadSafe,errorPage);例如:;include指令:,静态包含,不能有重复内容taglib指令: uri指明标签 动作标签n :调用servlet API的i

34、nclude,不是静态包含,是运行时包含,是被包含的jsp执行完毕后,包含到本页面,被包含页面中有与本页面重复内容不影响,可以包含静态和动态内容n n n n n n 例如:参数只在被访问的页面有效3.5. jsp生命周期jsp页面的请求是请求一个servlet,生命周期的诸多性能取决于servlet技术,相比servlet的优势是容器自动创建线程,servlet储存在内存中,响应速度快于servlet的访问1) 请求被映射到jsp页面2) Web容器检查jsp的servlet是否比jsp page旧,如果是,web容器将jsp page转化成一个servlet class,并编译这个clas

35、s,放入JVM中;如果没有JSP的servlet则重新创建 servlet,加载到JVM在实现类装在完成后,JVM将创建这个类的一个实例。容器自动创建创建一个线程来处理请求。3) 初始化jsp page4) 处理请求,调用_jspService处理请求和响应5) 生命周期终止:服务器不再把客户端的请求发给JSP。在所有的请求处理完之后会释放掉这个类的所有实例。这种情况一般发生在服务器关闭的时候或者是服务器要保存资源,检测到有jsp文件更新等3.6. jsp脚本元素创建和使用对象的方式三种创建和使用脚本元素对象的方法:1) 类实例和类变量 在声明中创建,在脚本和表达式中被使用声明方法2) 局部变

36、量 在脚本和表达式中被创建和使用3) 作用域对象的属性 在脚本和表达式中被创建和使用:四种域对象:application,session,request,session3.7. jsp隐式对象,常见的有哪些(查书?)application,session,request,respose,out,pageContext3.8. *四种作用域对象页面域(page scope)请求域(request scope)会话域(Session scope)应用域(Application scope)3.9. include动作和include指令,forward和HTTP redirect重定向的差别? i

37、nclude指令:包括其他页面,编译时把其他页面的内容加进来,比include动作快;静态包含,不能有重复内容。include标准动作:使用RequestDispatcher,运行时把其他页面的内容加进来(包括到输出流中),调用servlet API的include,不是静态包含,是运行时包含,是被包含的jsp执行完毕后,包含到本页面,被包含页面中有与本页面重复内容不影响,可以包含静态和动态内容 HTTP重定向:response.sendRedirect(myNewURL);发送的请求信息又回送给客户机,让客户机再转发到另一个资源上,新的URL出现在Web浏览器中,需要在服务器和客户机之间增加

38、一次通信forward标准动作:使用RequestDispatcher ,JSP的转发功能是在服务器本身上实现的;不生成新的URL,但是forward之前处理过response就不能forward,浏览器地址栏不改变3.10. javabean设计的规范javabean是java的class,是符合一定规范的value object,是可以复用和组合使用的组件,所有java的class只要符合javabean规范,就是一个javabean,jsp支持javabean的创建和初始化,设置属性。规范:1. 属性Read/write, read-only, or write-only2. 属性可以简

39、单的单值也可以复合(数组)3. 每一个属性有get和set方法,可以设值是可读,可写,或同时可读/可写4. 命名规则:属性第一个字母小写,Set/Get第一个字母大写5. 要位于一个package中6. 要有一个无参数的构造器3.11. javabean动作标签执行过程,usebean,get,set1. Scope可以是application,session,request,page2. (initializing bean properties)用usebean标签声明要使用javabean,并指明作用域,如果这个bean不存在,则statement创建一个bean,存在scope中,id

40、决定了bean的名称,class决定了具体的class容器将自动创建bean实例,容器自动处理javabean的清理事项3. SetPropety4. GetProperty获取bean中的属性值Name是useBean中的id3.12. 什么场景使用定制标签自定义标签,可以消除jsp页面的冗余标签, 在简单的JSP标签后面隐藏复杂的功能 在一定程度上实现了模块化 JSP程序员把程序的基本功能用自定义的标签库来实现;美工人员使用这些标签,专注于数据的表达 实现了重用性 将复杂的功能封装在HTML风格的标签中:一些场景n 处理格式化任务:处理表单n 访问外部资源:数据库n 重用(如反复查看股票价

41、格)n 企业级的服务:email,目录服务n 实现控制流4. JDBC4.1. *两种建立数据库连接的方式?DriverManager机制和DataSource机制:向数据库提交查询请求,读取查询结果,处理结果,释放连接4.2. *事务:哪些种Java事务类型?JDBC事务;JTA(Java Transaction API)事务,容器事务4.3. 什么是数据源机制?ODBC开放式数据库连接,使用针对于数据的驱动程序,提供一组用于访问任何数据库的API。DriverManager弊端:n 是一个同步的类,一次只有一个线程可以运行n 与数据库相关的连接信息都包含在类中,如果用户更换另一台计算机作数

42、据库服务器,就需要重新修改URL变量、重新编译、部署;n 用户的用户名、口令也包含在类中,丧失了安全性DataSource机制JNDI DataSource是JDBC Connection对象的一个工厂 允许使用已经在JNDI命名服务中注册的DataSource对象建立连接,由驱动程序供应商实现1. JNDI:注册到JNDI,使用JNDI服务向程序隐藏了登录细节JNDI:Java命名和目录接口(Java Naming and Directory Interface),为开发人员提供了查找和访问各种命名和目录服务的通用、统一的方式。(中央注册中心,储存了各种对象、用户和应用的变量及其值,开发大型

43、的分布式应用,使分布式的Java程序找到分布式的对象)分布式应用程序:通过RMI或CORBA向JNDI注册对象,其他任何客户机上的应用程序只需知道数据源对象在服务器JNDI中的逻辑名称,就可以通过RMI向服务器查询数据源,然后与数据库建立连接2. 连接池Application Server启动时,创建通向数据库资源的连接池。连接池包含多个JDBC连接。当应用程序需要访问数据库时,从连接池中取得一个连接,使用该连接与数据库通信;一旦工作完成,关闭数据库连接,释放回连接池中,重用共享数据库连接,最好的连接方式4.4. java事务有几种类型,转账事务可以有哪些实现事务:标准一系列数据库操作能够完成

44、,特性:原子性,一致性,隔离性,持久性转账事务的实现方式:JDBC事务,JTA事务,容器事务l JDBC事务 用Connection对象控制 提交事务两种模式:自动提交和手工提交 使用 JDBC 事务界定时,可以将多个 SQL 语句结合到一个事务中。 缺点:事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库l JTA(Java Transaction API)事务 允许应用程序执行分布式事务处理在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。提供事务的默认自动提交来控制事务的提交和回滚 两阶段提交:事务管理器和资源管理器之间使用的协议是XA;

45、XA:资源和事务管理器之间的标准化接口,参与JTA事务,XA连接不支持JDBC自动提交功能l 容器事务 是J2EE应用服务器提供的,容器事务大多是基于JTA完成。 与编码实现JTA事务管理相比,可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能。 可以简单的指定将哪个方法 加入事务,一旦指定,容器将负责事务管理任务。5. MVC5.1. web应用,控制流程是什么 javaee的mvc流程View层:Browser(HTML tags;JSP tags XML/XSL)用户界面Controller层:Servlet,接受用户动作,并对数据做适当处理Model层:Bean/Java

46、Beans(InventorManager,InventorItem,ShipmentReceived)封装应用数据1) client端(web浏览器)发出请求2) servlets获取客户请求3) servlets决策由哪一个web组件来处理请求(javabean,EJB,或者其他对象)4) javabean或者EJB处理来自servlets的业务请求,封装结果5) servlet选择一种表示模板(JSP),将内容返回给client6) jsp根据结果中的javabean产生具体的jsp页面,返回给client端;jsp页面不创建对象,只是从javabean中获取内容,对象都由servlet

47、创建5.2. 常见的设计模式? MVC模式 Front Controller模式对所有请求进行统一处理,所有请求被传送套一个前端控制器对象,该对象处理所有请求,并决定和选择其后的业务控制器组件,达到集中式控制(中央控制器)的目的,更易维护 session faade模式 Data Access Object模式5.3. *于MVC模式的JavaEE Web应用构架。View层:Browser(HTML tags;JSP tags XML/XSL)用户界面Controller层:Servlet,接受用户东都Model层:Bean/JavaBeans(InventorManager,Invento

48、rItem,ShipmentReceived)封装应用数据5.4. *用的MVC框架。使用框架的优点。Structs;Webwork;Spring MVC等优点:一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。6. EJB6.1. 中间件技术有哪些类型?(见中间件部分)6.2. RMI和JNDI名词解释(见中间件部分)6.3. 什么时候使用EJB?EJB是server-side组件,封装业务逻辑,EJB主要用于大型分布式企业级应用,EJB提供系统级别的服务,包括事务管理,安全认证等

49、;client无需事先复杂业务逻辑;提供基于接口的组件,标准的API,容易调用什么时候使用:1. 大规模的分布式应用:大用户并发,应用分布在不同的机器上,应用分布时对象的位置是透明的2. 需要事务支持保证数据的安全性:EJB提供事务支持,管理并发共享对象3. 需要不同的client:基于EJB,可以提供瘦大量,多样的客户端应用,远程client可以很容易地定位EJB6.4. EJB有哪两类?1. Session bean:执行客户端请求的任务,可以用web server实现封装业务逻辑,代表为一个用户执行的操作,可以被本、远程client,webservice调用。访问分布式的server端应

50、用,client调用session bean的方法,session bean屏蔽了服务器端内部业务逻辑的细节。Session bean 不是持久化的,不保存到数据库中2. Message-driven bean:监听某种类型的消息, 例如Java Message Service API(JMS) 让javaee应用能处理异步消息,JMS消息或其他消息 是一种JMS消息监听器,接受jms消息,类似于事件的监听器 JMS消息可以由javaee应用组件发出(应用client,另外的ejb,web组件),JMS应用发出,或者非java技术的应用发出 Sessionbean 主要是同步接收或发出JMS消

51、息,但是不能异步;当需要降低同步消息带来的进程阻塞时,用 Message-dreiven bean,异步消息传输 Message-driven bean不通过接口来访问bean 无状态:可以处理多个client的消息 单线程:一个message-driven bean一次只能处理一个消息 Message-driven bean:class要是pulic的,添加MessageDriven注解,class不能是abstract或final,要有无参数构造器,不能定义final方法,最好实现message listener接口6.5. 会话bean三种类型是什么? Stateful(有状态sessi

52、on bean);n 有状态的会话 bean在方法调用时可保持对话状态,维持实例变量的状态;n 不同的client有各自的session bean,不共享。Client端请求session bean,系统就给该client创建一个session bean实例,并维持组件的状态n client端关闭,session bean失效;要指定容器在某个方法完成后删除有状态的会话bean实例,只要为该方法添加注释Removen 什么时候使用:a)client跨越多个方法调用需要维持相关信息 b)client需要和其他应用组件交互 c) 该session bean需要多个EJB交互才能实现,需要维护一个工

53、作流例如:购物车 stateless(无状态会话bean);n 不维持会话状态,不跟踪记录从一个方法调用传递到另一个方法调用的信息,每次调用无状态的业务方法都独立于前一次调用。n 一个bean可以被多个client共享,client可以从容器的stateless session bean的实例池中获取实例n 可以实现web service,但是stateful session bean不行。n 容器管理stateless session bean更简单n 指定Java Bean作为无状态的会话bean加以部署及管理,只需要为该bean添加注释Stateless。n 例如:发email sing

54、leton(单例bean)应用的生命周期中,只会被实例化一次。可以被所有客户共享,并发访问可以实现为web serveive端点用途:应用的初始化工作,关闭时的清理工作,singleton在应用的整个生命周期存在6.6. RMI,client访问session bean,有哪些方式?l No-interface view:无接口访问,client端直接调用enterprise bean的public方法,调用实现类中的方法或实现类的父类中的方法;l Business interface标准java的接口访问,接口中包括ejb的业务方法接口6.7. client引用session bean,有哪

55、两种方式?l 依赖注入:client端有ejb的实例引用,采用java语言注解的方式;ejb和client在同一个jvm中。最简单的获取ejb引用的方式。Jsp,web application,JAX-RS web service, 其他的EJB, java ee应用客户端,都支持依赖注入,需要javax.ejb.EJBannotation包EJB(“beanName”)l JNDI查找:ejb和client在不同的jvm或者同一个jvm中,通过JNDI来查找ejb实例。Client端可以是简单的J2SE应用,JNDI支持识别java ee组件的全局语法,简化了显示查找的语法6.8. 会话be

56、an允许哪些client访问?l 远程romote Client和ejb在不同的jvm上,client可以是web组件,应用client,另外的ejb 对于远程client,Ejb的位置透明 必须通过business interface 访问ejb,不能no-interface-view访问:采用JNDI查找 客户端通过remote接口调用ejb:会用到RMI的stub和skeleton,网络,参数整理功能,生成bean很慢,效率不高l 本地 local Client和EJB在同一个jvm,client可以是web组件或其他的ejb, ejb的位置不透明 采用no-interface view

57、的方式访问ejb,依赖注入或JNDI查找都行,不用使用new操作符来创建EJB实例 采用business interface view的方式访问ejb:依赖注入或JNDI 快速高效的访问,没有使用stub、skeleton代理,以更快的方式生成beanl 服务 web service6.9. Bean bean远程client接口可以是哪些组件?应用客户端Web组件:servlet,另外的ejb组件6.10. EJB打包后的模块结构如何?l Enterprise bean class实现业务方法的的ejb,生命周期回调方法l Business interface定义业务接口方法当ejb是本地,

58、且no-interface-view访问时,就不需要了l Helper classEjb的辅助类,例如:exception 或者 utility class6.11. 使用消息服务的应用场景?JMS技术:Java Message Service;智能的交换机,用于路由分布式应用中的应用程序组件和进程中的消息;异步传递消息应用场景:进程间通信n web前端为顾客订货录入系统n 仓库管理系统:接受订单、配送货品、把订单转交发货系统n 发货系统:更新顾客的账号纪录,开始发货各个组件之间可以发送消息来通信6.12. JMS的两种消息域,点对点,发布订阅模式应用场景?l 点对点 JMS把消息传递给一个消

59、息消费者,例如:web前端发送包含订货信息的消息,仓库管理系统接收这个消息,处理订货,即使有多个仓库管理系统,也不会同时处理一个订单 异步通信:不必等到所有的处理工作都完成,成功将消息插入队列后可回复处理 按照发送的顺序把消息写入并保存到队列中;消息消费者处理队列中的信息l 发布/订阅 把消息发送给一个主题(Topic),每个主题有多个订阅者,由JMS把消息的副本传递给主题的每个订阅者 当客户购买过几次之后,一个消息就会发送给一个“常客”主题 站点为这些常客发送一个“特惠待遇”消息6.13. 消费者可以同步,可以异步,区别 ?消费者处理消息l 同步消息 发布者或者订阅者调用receive方法,显式地从目的端获取消息 receive方法在消息到达之前会阻塞,或者设置一个timeout在时限内没有到达,就失效返回nulll 异步消息 在消息消费者端注册消息监听器,类似于事件监听器 消息到达,JMS pr

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!