帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
解析J2EE型式的应用(上) (1)
作者:佚名 发布时间:2005-04-02 来源:不详
 
  一、概述


  许多实际开发软件的人
他们有时间,他们也是希望
以做出更明智的选择。型式
设计者。
都没有时间始终跟踪注意有哪些
从中找出一些具体的应用以帮助
(pattern)是一个良好的体系结

关于设计和体系结构的言谈,即使
他们在下一次焉设计系统的时候可
构和设计信息来源,可以训练软件


  在许多专业水平的规则
实际情况,也就是一项设计
设计师采用的是全新的一套
软件设计师都可以生成更好
思想都来自Sun公司内部,
越来越注意分享他们的思想
代码和思想上合作的趋势促
,并且可以帮助人们设计各
中,有一条关键的规则是不要低
大部分是在相关上下文环境中已
思想来生成软件系统;关键是把
的系统。来自Sun公司的Bill Jo
因此人们必须对其他领域打开自
,在开放源代码(Open Source)
成了软件设计型式(pattern)目
种不同的软件系统。
水平的重复。目前设计领域的一些
有理想应用的综合。没有一个软件
这些知识都汇集起来,以便于所有
y的说法,表明并不是所有良好的
己的思想。幸运的是,软件开发者
社团中,人们还共享代码。这种在
录的产生,这些内容可供公共使用


  一个型式就是在一种给
适用的面就越广。在软件术
定、设计和实现软件系统时
定上下文环境下已经证实的解决
语中,型式实际上指人们在实践
哪些工作效果最好。
方案。具体环境越宽,对应的型式
中获得的“经验总结”,指出在指


  在许多软件和系统领域都可以找到型
型式。在这种分析中发现的实体和关系将
相应的型式。如果你在某个特定领域工作
式可以节省时间和精力。型式也可以是某
Java专用的型式在语言惯用语的各级中都
式。在高层,人们在执行特定领域的分析时可以找到
在一个业务方面反复出现。这种重复性使人们发现了
,如金融或者电信,则调查一下现有的具体领域的型
种特定技术或者语言专用的(有时称为“惯用语”)。
存在。

  二、J2EE型式的应用


  对于J2EE型式,可能对此最突出的体
工作。他们已经根据Sun公司Professiona
实现生成了一组专门用于J2EE的型式。这
开发者连接)中,并且正在通过J2EE Patt
现就是由Sun Java Center的一些Java设计师所做的
l Services(专业服务)人员多年基于J2EE的实际系统
组型式位于在线的Java Developer Connection(Java
erns电子邮件群发展和变化。

  Sun Java Center的J2E
Presentation、Business和
E型式针对的就是n层业务系统,
Integradon。下表1显示了此分
并且根据驻留的层而分类为:
类中的一些更常见的示例型式。

  这个列表只是Sun Java Center中提
Blueprints 的组成部分。提供的这些型
对设计者的极大帮助。我们可以从别人的
关的型式。 我们不能只使用J2EE专用的
复制和粘贴这些代码形成自己的解决方案
个型式作为一个总体指导使用,让它符合
供的J2EE型式的一部分,J2EE型式也是J2EE
式实例经过证实都可以在J2EE系统平台上工作,这是
经验中学习,并且观察他们如何为自己的环境实现相
型式或者其他任何型式,它们就像一堆积木,简单地
而不更改任何代码是不好的。有经验的设计师将把一
特定上下文环境的需要。

  所有的应用程序上下文
满足我们特定的要求。同时
式看作为一组“设计时使用
是可以调整的)而得到最终
环境都有一定程度的惟一性,因
,一组型式肯定无法覆盖我们整
的”组件,可以经过调整然后通
的产品。
此这些型式的实现必须经过调整以
个应用程序的要求。我们应该把型
过自定义的逻辑结合起来(它本身


  表1 J2EE型式应用                                                        
  
 

  

  


  1、前端控制器型式


  为用户生成显示的视图
于具体的视图而更改。这些
流和导航的代码。普通服务
系统维护方面的问题和一致
购物的一系列步骤,当控制
应该包含最少的业务代码,以便
规律也适用于为视图提供普通服
如安全性和状态管理,不应在多
性问题。与一个应用程序的某部
其相关导航的代码分在多个视图
于在多个视图中共享以及可以独立
务的代码以及在视图之间提供工作
个视图之间复制,因为这样会带来
分关联的工作流,如进行一个在线
中的时候将更难被改变。

  Front Controller(前
项或者多项处理:
端控制器)型式引入了一个组件

,它捕获客户请求并且进行下列一


  ●应用普通服务,如验证和访问控制。                                           
  ●决定处理请求的适当视图。                                                   
  ●通过处理用户令牌和访问的数据源为相关请求建立状态信息。                     

  图1显示了一个前端控制器如何实现
用程序中一个工作流的一部分,也可以是
一个客户和多个视图之间的中介。这种中介可能是应
在语言或者其他因素基础上的一个选择。

  
 

  

  图1


  一个前端控制器可以与其他组件或者
使用一个分离的分配器组件来实现要求的
View Helper即视图帮助器型式)来执行与
示的情况说明了这些组件之间的交互。
帮助器(helper)交互以提供要求的服务。前端控制器
任何工作流也是常见的情况。它还将使用帮助器(如
业务有关的处理或者把状态信息传递给视图。图2所


  
 

  

  图2                                                                          
  


  2、复合视图型式


  大多数基于Web的系统
能,如同时可供选择的部分
元素的代码和格式在多个使
复和更改都必须在相关代码
由许多不同的网页或者视图构成
产品列表,以及普通的导航、信
用它的视图中都重复,则系统会
和格式处理出现的地方应用。
。每个视图都将包括一些专用的功
息或者功能化元素。如果对于这些
非常难于更新和维护,因为任何修


  作为一种解决办法,复
的接口划分成多个子视图,
一个单独的组件,可以与其
Web网页。在这里我们设计
页的左侧有导航视图,当然
使用图3所示的其他视图。
合视图(Composite View)型式定
并且可以被重新结合起来以生成
他子视图分开维护、更新和增强
在屏幕顶部有一个Header View(
还有居中显示的Main Body(正文

义了各种阶段以有效地把一个用户
需要的总体视图。每个子视图构成
。构成复合视图型式的一个示例
标题视图),在这个标题下方和网
)视图。复合视图的总体构成可以


  
 

  

  图3                                                                          
  


  视图管理器可以包含在复合视图和子
要求有条件地包含一些内容,则它会有用
简单复合视图实现,如下:
视图之间。一个视图管理器的使用是可选的,但如果
。作为一个JSP网页实现而不包含一个视图管理器的


  <table border="0" valign="top" width="100%">

    <tr>

    <td><jsp:include page="templates/header.jsp"/></td>

    </tr>

    <tr>

    <td><jsp:include page="tenlolates/navigation.jsp"/></td>

    </tr>

    <tr>

    <td><jsp:include page="content/java_book_list.jsp"></td>

    </tr>

    </table>


  3、会话正面型式


  如果EJB简单地用作业
驻留在使用这些BJB的客户
网络访问,因为客户要访问
理中。这样在客户之间造成
务数据的存储或者简单的业务服
上。这样做是有害的,原因有两
很详细筛选的业务服务和数据。
了不必要的业务代码分散和重复
务,那么大多数业务逻辑都将仍然
方面。首先,它将再次带来过量的
它还会把客户强烈地联系在业务处


  解决的办法是采用正面
它被引入到客户和一个复杂
务,这样可以提供粗选的相
Facade)为业务逻辑和多个E
一个会活EJB的形式。客户
服务。
(Facade)型式的一种变形,正面
的子系统之间。这个正面只展示
应服务(不是细选)。在J2EE型式
JB封装的服务执行这个角色。会
与会话正面通信,会话正面再根

(Facade)是指一个对象或者组件,
客户要求的服务以及相关的综合服
术语中,会话正面(Session
话正面,如其名字所示,采取的是
据其他EJB如实体bean来提供业务


  图4显示了一个会话正面如何控制对
。会话正面虽然一般用作基层实体EJB的
问服务和数据,也可以从数据访问对象(D
图4所示。
多个实体bean的访问并且提供一个对客户统一的接口
一层掩护,但一个会话正面既可以从其他会话EJB访
ata Access Objects)来访问。这些类之间的关系如


  
 

  

  图4                                                                          
  




  通常,会话正面会为一
可以得到多个业务操作(这
操作不是在返回一组值对象
正面中。接着发生的是在服
输量,当然也给服务器处理
个或者多个业务使用案例封装相
种情况有时称为批处理方法分布
(Value Objects)的一个会话bea
务器上迭代处理数据,只把结果
带来了一些负担。
关功能。通过对该正面的一次调用
式型式/惯用语)。客户想要执行的
n上的操作,而是可以移植到会话
传送回客户。这样就减少了网络传


  4、服务定位器型式


  从代码中看,在一个EJB的业务接口
常而已。但是EJB的生成需要有专门的基
就迫使客户要包含相关代码以处理上下文
其他的复杂化如主接口引用的缓冲存储,
上使用方法带来的负担相对较小,只需要处理远程异
于JNDI的代码来发现主接口并且生成需要的EJB。这
环境的牛成、查找并且缩小引用的范围。同时,任何
必须被每个客户重复。

  服务定位器(Service L
EJB的查找和生成任务。客
。所有与JNDI和EJB主接口
和EJB主实现和业务实现之
ocator)型式定义了一个对象可
户只是简单地找到服务定位器,
的交互都被分配到了服务定位器
间的交互。
以如何执行与多个客户关联的多个
并且请求对需要的EJB的一个引用
。图5所示即为客户、服务定位器


  
 

  

  图5                                                                          

  


  注意,服务定位器典型情况下是单独实现的,目的是共享缓冲存储带来的效益。       

  5、值对象型式


  简单的数据对象通常把
在需要的时候访问这些属性
这种处理成为一种普通的实
Environments,IDE)这样的
客户和数据对象之间引入了
有数据在持续地通过网络传
行数据访问的时间都花在等
下降。
它们的数据作为属性展示出来。
。与过程中(in-process)的方法
践,特别是在像集成开发环境(I
“拖放-点击”环境中根据JavaB
一个网络,这种基于属性的编程
送。出现这种情况时,通信过程
待网络调用返回的信息,而网络

一个客户将使用获取器或者设置器
调用相关的相对较低的负荷已经使
ntegrated Development
ean生成用户接口。但是,—旦在
会产生不好的“锯齿效果”,因为
就成为整个计算的主导,大多数进
性能也会由于传输的数据量太大而


  在访问EJB展示的数据或者以数据为
数据分布在多个EJB上则产生的效率就会
这里要考虑的另一方面是大多数数据访问
中心的服务时,这种问题就会表现出来。如果需要的
被放大,因为每一部分都必须通过网络来分别访问。
都是用于读,而不是写操作。

  这些问题可以通过生成
普通的Java对象中,而不是
出一个请求,而是可以只发
Java串行化。接着客户在其
EJB及其值对象之间的这种
一个值对象(Value Object)来解
像EJB这样的重型分布式对象。
出一个返回值对象的请求。值对
本地地址空间中访问值对象的属
关系如图6所示。
决。值对象把业务数据封装在一个
这里不需要为EJB的每个属性各发
象将被回送给客户,一般是通过
性,从而节省许多网络上的传输。


  
 

  

  图6                                                                          
  



  客户、EJB和值对象之间的交互如图7所示                                      

  
 

  

  图7                                                                          

  


  根据应用程序的要求,我们可以使用
分业务数据,它是可以更新的,把更改的
能力,值对象可以采用一个XML文档的形
EJB和数据访问对象。
不同的变化形式。值对象只能封装相应EJB表示的部
情况回传到其父级EJB;或者如果需要有非Java互操作
式。 值对象可以在适当的时候用于实体EJB、会话


  6、业务委派型式


  客户直接与业务服务交互并不是一个
应用会话正面(Session Facade)型式把与
使如此,客户仍然要处理查找、实例化以
如果其复杂性有了任何变化,如缓冲存储
好的想法。这使他们在实现中面临潜在的变化。通过
业务服务的一些交互封装在一个EJB中是可能的。即
及管理一个EJB所需的远程出错处理。业务层的处理
和批处理调用,都需要由客户来完成。

  作为一种解决方案,业
抽象使用。它可以潜在地直
网关来使用。业务委派型式
接口可以提供一些方法用于
义的应用程序异常。
务委派(Business Delegate)型
接与各业务组件协同工作,或者
可以负责所有的专门EJB交互并
封装多个服务器交互。业务委派

式可以作为一个业务服务的客户方
可以作为客户方对一个会话正面的
且为客户提供一个本地接口。这个
型式还可以把远程异常映射到有意


  业务委派型式是执行客
调用以及对不同服务器的故
户方业务信息缓冲存储的逻辑位
障恢复。客户,业务委派和业务
置,如处理值对象或者重试失败的
对象之间的关系如图8所示。

  
 

  

  图8                                                                          
  


  图8中所示的服务定位器是另一个型
来使用。同时,我们的目的是把处理命名
业务对象及其工厂的引用检索中。
式,可以独自使用也可以与一个业务委派型式结合起
服务的复杂性隐藏起来,把缓冲存储和优化添加到对

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·解析J2EE应用体系  (2005-04-02)
 ·解析J2EE中的安全问题  (2005-04-02)
 ·域名专题 - NT 4.0究竟能不能进行  (2005-03-12)
 ·域名专题 - 对NT环境下DNS的负载  (2005-03-12)
 ·域名专题 - DNS解析原理  (2005-03-12)
 ·域名专题 - 域名解析系统DNS的网  (2005-03-12)
 ·域名专题 - Win2000功能特性:Ac  (2005-03-12)
 ·用正则解析图片地址,并利用XMLHT  (2005-03-12)
 ·使用Digester解析XML文档示例  (2005-03-12)
 ·SAX解析XML  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统