动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.破除Java神话之一.
.利用JavaSwing实现游戏开发.
.用MVC架构简单的注册、登录例子.
.野马的性格 Java SE 6.0新特性体.
.J2ME编程开发平台中几个重要概念.
.从数据库读出的JPG文件的字符流,.
.分享如何写自己的Type3 JDBC 驱动.
.2. Building Model Components.
.Eclipse编辑国际化资源文件插件.
.基于MIDP1.0实现组合按键.
.用Java实现Web服务器.
.JHighlight 1.0 发布.
.JAVA中正则表达式的应用(1).
.java使用ant来编译.
.JBoss将Arjuna事务加入SOA.
.Java高级日期概念.
.Collections API定制实现(一).
.Java设计模式之迭代器模式.
.Spring WebFlow :3(WebFlow实现重.
.Thinking in Java第三版读书笔记.

两种设计模式在EJB开发中的应用

发表日期:2008-1-5 |



  摘要:本文介绍了J2EE的分层结构,深入研究了如何使用Session Facade模式和ValueObject 模式设计EJB,并对其开发过程做了较具体的说明。

  要害字:EJB ;值对象模式;会话外观模式

  一、概述

  与传统的二层体系结构相比,J2EE有两个特点:

  1、定义了一套标准化组件,通过为这些组件提供完整的服务。

  2、使用多层分布式的应用程序模型。应用程序的逻辑根据其实现的不同功能被封装到不同的组件中。如图1所示。



两种设计模式在EJB开发中的应用(图一)



  这种多层结构使企业级应用具有很强的伸缩性,答应各层专注于某种特定的角色:

  1、Client Tier用于显示。

  2、Web Tier用于生成动态显示。

  3、Business Tier用于实现业务逻辑。

  4、EIS Tier用于数据库服务。

  其中,用于实现业务逻辑的EJB组件架构是J2EE的基础和最重要的部分。

  正是熟悉到J2EE平台作为一种可扩展的、全功能的平台,可以将要害的企业应用扩展到任何Web浏览器上并可适合多种不同的Internet数据流、可连接到几乎任何一种传统数据库和解决方案,J2EE已经成为开发电子商务应用的事实标准。

  为了使开发者开发出规范的、可重用的应用程序,J2EE为我们提供了大量的模式。模式尽管有时不易理解,但使用却非常简单,它提供了强大的可重用机制,避免了开发者和设计者的重复投资。

  可是,面对如此多的模式,初学者往往不知如何下手,为此,作者结合以往的开发经验,具体介绍如何使用模式完成EJB的设计。
QQ病毒 腾讯QQ空间代码专题 PPT教程专题 ADSL应用面面俱到 Fireworks教程专题 计算机和网络技术基础知识 校园网专题 网吧技术专题
二、设计与实现

  1.值对象模式

  J2EE应用程序把服务器端业务组件实现为会话Bean和实体Bean。对于实体Bean的创建,开发人员通常采用CMP(容器治理持久性)模式,其好处在于容器提供公共的服务,例如目录服务、事务治理、安全性、持久性、资源缓冲池以及容错性等,使开发人员不必维护将会集成到业务逻辑中的系统级代码,只需专注于商业逻辑。

  一般来说,有了实体bean,就可以通过调用业务组件的一些方法向客户端返回数据。初学者往往会认为既然客户端可以与服务器通信,那么任务就算完成了。可是,问题恰恰出在这里。业务组件的get方法只能返回一个属性值,这就导致需要获得所有属性值的客户端需要多次调用业务对象的get方法,如图2-1所示。每次调用都是一次网络调用,都会造成系统性能的退化,当调用次数增多时,系统性能就会严重下降。

  这就要求有一种方法使客户端可以一次调用得到所需的大量数据,这种方法就是Value Object(值对象)模式。值对象是任意的可串行化的Java对象,也被称为值的对象,它在一次网络传输中包含和封装了大量的数据并被保存在内存中。这样,当客户端需要再次使用数据的时候,不用再次到数据库中查询,而是直接在内存中读取值对象,节省了大量的时间和系统开销,如图2-2。

  值对象模式有两种策略――可更新的值对象策略和多值对象策略。

  可更新的值对象策略中,业务对象负责创建值对象,并且在客户端请求时把该值对象返回给客户端;同时,业务对象也可以从客户端接收数据,形成值对象,并使用该对象来完成更新。

  例如,在银行系统的例子中,Account 中提供一个以AccountValue为参数的setAccountValueObject方法,这样客户端可以通过这个方法来设置值对象的值,而不采用实体bean--Account中设置每个属性的方法(setBalance()),因为后一种方法会导致大量的网络负载。由于值对象的易变性,所以值对象类必须给每个可以被客户端更新的属性提供设置方法。例如,AccountValue中的setBalance()方法。这样,一旦某客户端拥有来自业务对象的值对象,客户端就可以在本地调用必要的设置方法来更改属性值,然后调用业务对象的setAccountValueObject()方法更新业务对象。

  多值对象策略

  一些应用程序业务对象往往比较复杂,在这种情况下,根据客户端请求不同,有可能单个业务对象会产生多个不同的值对象。在这种情况下,可以考虑采用多值对象策略。这种策略的实现比较简单,就是在entity bean中增加不同的Get×××ValueObject()方法和set×××ValueObject()方法。

  2.Session Facade 模式

  有了实体Bean,客户端就可以直接调用它以获得数据。也就是说实体Bean封装了业务数据,并把他们的接口暴露给客户,因而也就把分布式服务的复杂性暴露给客户。在对J2EE 应用程序环境下,一般会产生如下问题:

  1、紧密耦合,这回导致客户端和业务对象的直接依靠关系

  2、客户端和服务器之间的网络方法调用太多,轻易导致网络性能问题

  3、缺乏统一的客户访问策略,轻易误用业务对象

  4、假如实体bean的API改动,那么用户端的一些代码也要修改,扩展性很差

两种设计模式在EJB开发中的应用(图二)

  解决这些问题的方法就是把客户端和实体bean分割开。本文采用Session Facade模式,如图3-2所示。该模式通过一个Session Bean,为一系列的实体bean提供统一的接口来实现流程。事实上,客户端只是使用这个接口来触发流程。这样,所有关于实体bean实现流程所需要的改变,都和客户端无关。当实体bean改变时,我们不用改变客户端的代码,只要对Session Bean做出相应的改变即可,大大提高了系统的可维护性。

  通过实体bean来表示业务对象是session fa?ade的最常见用法。但多个实体bean参与某用例时,不必向客户暴露所有实体bean。相反的,用session bean 包装这些实体bean ,并且提供粗粒度方法来执行所需的业务功能,从而隐藏了实体bean交互的复杂性。

  但是千万不要以为Fa?ade模式就是简单的用Session Bean把Entity Bean的所有方法统统封装起来,而不提供任何额外的抽象。其实这是对Fa?ade模式的滥用。这样做并不是降低整个系统的复杂性,而是把复杂性转移到另一个对象上。

  正确应用Facade模式应遵循三条基本原则:

  1、他们自己不作实际工作,而是委派其他对象作实际工作。

  2、他们提供简单的接口。

  3、他们是底层系统的客户端接口。他们应该把特定于子系统的信息封装起来,并且不应该在不必要的情况下公开它。
上一篇:快速上手Eclipse Eclipse快捷键指南 人气:406
下一篇:混合Eclipse、WTP、Struts和Hibernate 人气:653
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-4 LPLY CMS 网站管理系统 v5.0
2008-9-4 缤纷互动视频交友 v3.01.902
2008-9-4 ADN视频收藏专家 v3.0 bulid 080
2008-9-4 天空网络电影系统SKYUC v2.5.6 简
2008-9-4 Web Wiz Rich Text Editor(文本编
2008-9-4 幻影动漫网视频系统(Ppdong) v1.
2008-9-4 乐维电脑在线DIY配置系统
2008-9-4 老樊文章管理系统SQL版
2008-9-4 ASP.NET 2.53 缩略图水印组件源码
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵