已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
与集成应用研究应用研究 摘要:通过对JSF和EJB3.0技术的研究分析,提出了集成二者进行Web应用开发的几种方法,给出了实现集成的关键代码,最后分析了JSF与EJB3.0集成应用的优势及发展前景。 关键词:JSF1.2;EJB3.0;JNDI;Jboss Seam :TP311:A:1009-3044(xx)18-31670-02 Study on the Integration of JSF and EJB3.O FU Ming-teng,LIU Dong-fei (School of Computer Science and Technology,Wuhan 430070,China) Abstract:Aording to the analyses about the technology of JSF and EJB3.0, this paper put forward the various methods of integrating JSF with EJB3.0 to develop a Web application. The codes of realization were given in paper. In the end the advantages and development prospects of integrating JSF with EJB3.0 were discussed. Key words:JSF;EJB3.0;JNDI;Jboss Seam 1 引言 SUN公司最新推出了JSF1.2这个新的表现层框架和一套以注释为基础的EJB编程模型EJB3.0,并引入了新的Java Persistence标准,这是一套基于Java EE的基本架构。Web应用开发的关键是提供良好的数据持久化层、简捷快速的表示层构造以及对业务逻辑、页面导航的有效管理。以JSF+EJB3.0的集成模式开发Web应用系统,能很好的兼顾开发效率与维护成本,具有极高的实用价值,同时两者均为Web应用框架并且都遵循Servlet规范,也为二者的整合提供了基础。 2 JSF概述 JavaServer Faces(JSF)是一种用于构建Web应用程序的新标准Java框架。它提供了一种以组件为中心来开发Java Web用户界面的方法,从而简化了开发。通过JSF,可以在页面中轻松自如地使用Web组件、捕获用户行为所产生的事件、执行验证、建立页面导航等。 JSF通过将良好构建的模型-视图-控制器(MVC)设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性,JSF按照MVC架构可以分为3部分:View(视图)、Controller(控制器)和Model(模型)。 (1)View层 该层即用户使用界面,它是与用户交互的部分。开发者使用JSF内建或其他厂商提供的Render Kit来开发。 (2)Controller层 该层位于View层与Model层之间,控制着它们之间的交互过程。在JSF中java.faces.webapp.FacesServlet作为Controller,它配合faces-config.xml配置文件控制WEB应用程序的运作流程。 (3)Model层 该层是进行业务操作的部分,由它来实现业务逻辑。JSF中一般使用JavaBean,被称为后台(backing)或托管(managed)bean。 3 EJB3.0概述 为了减少EJB开发的复杂性,Sun公司于xx年5月推出了EJB3.0新规范,EJB3.0新规范中两个重要的变更分别是:使用了Java5中的程序注释工具和基于Hibernate的O/R映射模型。EJB3.0引入了DI(依赖注入)容器类与POJO持久类这些新功能。 在EJB3.0里,任何类型的企业级Bean只是一个加了适当注释的简单Java对象(POJO),这就减少了在创建EJB时所需的类、接口、部署描述符的数量,注释可以用于定义bean的业务接口、O/R映射信息、资源引用信息。EJB 3.0通过用纯旧式Java对象(POJO)取代抽象bean类,用纯旧式Java接口(POJI)取代组件与主接口(Component & Home),也不必实现业务接口,简化了EJB的开发过程。 在Java EE5中,开发了通用持久化规范Java Persistence API 1.0(JPA 1.0)代替以前规范中的Entity Bean。JPA是java持久化技术的一个集大成者,它吸取了Hibernate、JDO、TopLink等优秀技术和框架,将这几年发展成熟起来的基于POJO模型的O/R Mapping技术标准化,成为在java中通用的API。大大减轻了编程的复杂性。 4 JSF与EJB3.0的集成 虽然JSF与EJB3.0被作为标准搭载在JavaEE5里,但JavaEE5却没有给出一个结合JSF与EJB3.0的API。要同时在一个WEB应用中使用JSF和EJB3的话,开发者必须自己考虑一个实现方案。开发者可以用下面二种方法来实现JSF与EJB3.0的集成。 4.1 使用JSF的Backing Bean调用EJB组件 包含JSF标签的JSP页面是表示层,Faces Servlet提供了controller的功能,将JSF中的属于Bean角色的Backing Bean作为EJB与UI的接口,其作用是在真正的业务逻辑Bean及UI组件之间搭起桥梁。而另一面的EJB容器则成为MVC模式中的Model层,其中会话bean执行独立的、解除耦合的任务;实体bean已经升级为独立的持久层框架(即JPA1.0),应用O/R Mapping技术处理与数据库之间的业务,通过EntityManager对实体(Entity)进行持久化,查询,删除等操作。体系结构如图1所示: 图1 基于JSF和EJB3.0的WEB应用的体系结构 在本集成方案中,JSF与EJB3.0的交互,依靠JSF中的Backing Bean来调用EJB。可以用以下方法来实现: (1)编写工具类 EJB使用JNDI(Java Naming and Directory Interface)名来定位存取某特定的对象;JNDI服务是EJB标准所规定的一项标准服务,所有EJB服务的提供商,必须为其EJB服务器实现JNDI服务。 客户端在调用EJB组件时都需要遵循如下步骤: a.借助于JNDI,查找到EJB组件的本地或远程业务接口; b.借助业务接口,调用EJB实例中的业务方法。 开发者可以利用业务委派模式编写一个工具类,它处理连接到 EJB 容器、获取所需资源。Backing Bean通过这个工具类调用EJB来实现业务逻辑,下面是这个工具类的关键代码: import javax.naming.InitialContext; import javax.naming.NamingException; public class ServiceDelegate private static ServiceDelegate instance = new ServiceDelegate (); 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 public static ServiceDelegate getInstance() return instance; /* 创建一个 ServiceDelegate 实例*/ public ServiceDelegate () try /借助JNDI,查找SessionBean InitialContext ctx = new InitialContext(); SessionBean业务接口 xxxService =(SessionBean业务接口) ctx .lookup(SessionBean业务接口的JNDI名称); catch (NamingException e) e.printStackTrace(); catch (Exception ex) ex.printStackTrace(); /*此处省略调用EJB业务方法代码*/ (2)使用依赖注入机制 依赖注入就是由容器负责查找被依赖的对象并注入到依赖bean中,而bean本身不再需要进行JNDI或者context查询。EJB3里可以直接在EJB组件里申明类似Stateless等注释(annotation)便可标明该EJB为无状态Session Bean,而客户端程序里也只需要在程序里申明类似EJB的注释便可完成对EJB的调用,而省略了配置过程。其原理是这样的:EJB容器会在配置EJB时解析EJB组件里的注释,根据被申明的注释和默认配置把EJB登录到JNDI里。而客户端程序的运行环境(比如WEB容器)在运行时需要对SERVLET等进行解析,分析被注释的成员变量的类型或名称,根据这些信息得到JNDI名,调用lookup方法,得到对EJB对象的引用,然后使用DI和AOP技术自动完成对EJB的调用。 SUN公司的Java EE应用服务器GlassFish已经在 Web 层支持 Servlet 2.5 和 JSF 1.2 关于 Java EE 5 的依存关系注入申明,如果将JSFEJB3应用程序部署在同一个GlassFish应用服务器中,在 Java EE 5 中,backing bean调用EJB组件时,您不必编写任何JNDI查找代码。仅使用 EJB 声明来标识一个字段,服务器会在创建 managed bean 后注入一个 EJB。 4.2 利用JBoss Seam框架 由于JSF的定位是表示层框架,与应用层交互的唯一手段,只有Managed Beans。在Sun的蓝图里,应用层由EJB主持大局。应用层和表示层之间需要某种技术来粘合。Managed Beans有一定的粘合作用,但远远不能满足企业应用编程的需求。为了解决现有框架(包括 EJB 3.0,JSF 和 BPM)之间存在的这一问题,JBoss推出了JBoss Seam 框架,JBoss Seam提供了一致的,以注释为基础的整合EJB3.0和JSF1.2的方法。在JBoss Seam中,你只要为EJB3.0组件提供一个简单的注释,就可以在JSF中直接使用EJB3.0组件了。 在一般的开发模型中,JSF的Managed Bean与EJB3的Entity由于分属于2个不同的组件模型,所以他们的状态也不得不分别管理。比如,在JSF里用faces-config.xml定义Managed Bean,JSF框架根据faces-config.xml的定义对Managed Bean加以管理。在使用EJB3的情况,得把Managed Bean传送给EJB3框架,EJB3对自己的Entity的状态加以管理。而使用JBoss Seam的情况,JSF的Managed Bean则不再需要在faces-config.xml里定义,JBoss Seam本身提供了一种称为Seam组件的Bean(Java Bean),只要在普通的Java Bean里,对它加以标注(annotation),JBoss Seam便可将其自动映射(mapping)为JSF的Managed Bean和EJB3的Entity。 使用Jboss Seam 集成JSF和EJB3的方法如下: (1)Jboss Seam与JSF集成 首先在web.xml中设置: org.jboss.seam.servlet.SeamListener 设置 faces-config.xml: org.jboss.seam.jsf.SeamPhaseListener (2) Jboss Seam与EJB3的集成 设置ejb-jar.xml: org.jboss.seam.ejb.SeamInterceptor * org.jboss.seam.ejb.SeamInterceptor 以上为所有的EJB Beans定义了SeamInterceptor回调。EJB3容器会在调用Session Bean之前先调用SeamInterceptor。这就使得Seam跟Session Bean有机结合起来了。 5 总结与展望 通过使用规范里UI组件、注释和POJO等新技术,采用JSF1.2与EJB3.0集成的方法减轻了开发人员进行底层开发的工作量,而且开发和设计过程层次分明、结构简单。 JSF和EJB3.0 是用于构建 Web 应用程序的强大技术。如果 能将两个框架统一起来,无疑它们会相得益彰:无态和有态 EJB 是用于 JSF 的极好的事件处理支持 Bean;JPA可以提供自动且透明的对象关系型数据库映射;可视的 JSF 组件可以将自己的状态绑定到实体 Bean 上。因此,它们是实现面向对象域模型的一个很好的解决方案。为了统一JSF managed beans和EJB 3.0这两种组件模型JBOSS向JCP提交Web Beans技术规范预览草案JSR 299。该项目的目标是让EJB 3.0 组件能够同时作为JSF managed beans来使用,统一这两种组件模型,进而简化Java中的WEB应用编程模型。 _: 1 JCP Expert Group. JSR-244(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- QC/T 1206.4-2026电动汽车动力蓄电池热管理系统第4部分:加热器
- 2026事业单位工勤技能-江西-江西下水道养护工五级(初级工)历年参考题库含答案详解3套试卷
- G6PD缺乏症的护理
- 《我的眼睛》学前教育健康领域说课稿
- 2026下半年小学教师资格证考试学科全真自测试卷及解析
- 心理疲劳的辨析与治疗
- 医院院长年度智慧医院建设与患者就医体验提升工作总结(3篇)
- 学校食堂大宗食材采购验收管理工作指引+中小学校“点餐日”活动方案
- 便秘人群健康调理
- 下肢血肿康复指导
- DB44-T 2350-2022 临床医疗输送运行管理规范
- 职工上下班途中交通安全培训
- 高二数学开学第一课(高教版2023修订版)-【开学第一课】2025年春季中职开学指南之爱上数学课
- 上海学前教育课程指南
- 先天性心脏病介入封堵术护理
- 现代(HYUNDAI)N300系列变频器使用说明书
- 人际交往与人际沟通
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 彩钢板房安装合同
- 第二届北京市全民国防知识技能大赛知识考试总题库(含答案)
- 注射用艾普拉唑钠-临床用药解读
评论
0/150
提交评论