帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
最佳实践:用 Enterprise JavaBean(EJB)设计应用程序
作者:未知 发布时间:2005-03-12 来源:JSP天空网
关键字: Enterprise JavaBeans、EJB、模型-视图-控制器、MVC、会话、实体、会话 bean、无状态、前端

摘要

当您设计应用程序且考虑使用 Enterprise JavaBean(EJB)时,会有多种选择。不同的方法具有不同级别的复杂性、优点和缺点。使用基于“模型-视图-控制器(MVC)”的体系结构,您可以将会话 (session) bean 用作实体(entity)bean 的前端。前端会话 bean 可通过减少网络调用数量来增强性能,它还将表示逻辑与商业逻辑分离,从而降低了 EJB 的复杂性。

建议

使用前端会话的主要优点是从前端会话 bean 对实体 bean 的调用是本地方法调用,从而避免了大量网络通信的开销。当客户机和服务器正在同一 Java 虚拟机(JVM)中运行时,WebSphere 对象请求代理(ORB)处理远程调用的方式不同。ORB 从客户机到服务器进行本地调用,而不是在远程方法调用/因特网 ORB 间协议(RMI/IIOP)上发送远程调用。使用前端会话的另一个原因是由于 EJB 远程方法调用是在 RMI/IIOP(RMI 的一个扩展)上,序列化对象可以在这些调用之间传递。序列化对象可以包含来自一个或多个实体 EJB 的所有信息,降低方法调用数并且将大量参数和复杂性隐藏到单一方法调用中。

使用前端会话 bean 也遵循模型-视图-控制器 (MVC)编程模型。MVC 使应用程序中的表示逻辑与商业逻辑分离,且会将特定安全模型应用到表示逻辑和商业逻辑中,并且将角色分离应用于开发组,其中页面设计师的工作与商业逻辑开发者的独立工作可以平滑地集成在一起。表示逻辑和商业逻辑的分离是由三个部分定义的。

模型 - 通常通过 JavaBeans 或 EJB 来封装商业逻辑和规则并且实现商业处理。

视图 - 通常通过 JavaServer pages(JSP)来显示商业过程的结果并实现对用户的响应界面。

控制器 - 管理控制用户和应用程序之间的所有交互。控制器通常是 servlet,它接收用户请求并将所有输入参数传递到完成实际工作的模型中。最后,控制器调用视图以显示生成结果。





screen.width-333)this.width=screen.width-333;">
图 1. 基于“模型-视图-控制器”体系结构的应用程序


无状态 EJB Sessionbean 作为对请求程序(通常是执行控制器功能的 servlet)隐藏实体 bean 复杂性的前端,正确地遵循了 MVC 模型并将表示逻辑与商业逻辑分离。它提供了远程接口中实体 bean 的商业方法和本地接口中的实体 bean 的创建和查找程序方法。





screen.width-333)this.width=screen.width-333;">
图 2. 使用前端会话 bean 来隐藏实体 bean 复杂性的应用程序


遵循 MVC 模型的优点有对客户端隐藏内部模式,使 EJBs 看起来象一个普通的数据资源。还有将多个数据源结合在一起作为以商业数据层的单一入口点和集中对前端层上事务和安全性的控制,以允许对应用程序进行更有效的管理。所有这些优点都会使开发更容易,因为 servlet 编程人员只须处理独立于基本实现的方法调用。该技术将提供给客户请求更小更方便的接口以便屏蔽 EJB 实现中的改动。

有了更改 EJB 实现中的商业逻辑或 servlet 接口中的表示逻辑而不互相影响的能力,就可在改动应用和添加新功能时有更灵活的选择。
替代方法

当利用 EJB 设计应用程序时,直接访问和Access Bean 是两种不同的方法。虽然两个方法都有一些比使用前端会话 bean 更好的优势,但是缺少表示逻辑和商业逻辑之间的分离限制了更好的发展。

直接访问

“EJB 的直接访问”很容易实现,需要在 servlet 的 init 方法中初始化实体 Bean 。因为初始化是在客户机方的 servlet 上发生的,所以表示逻辑和商业逻辑之间的分离就不存在了。当更改应用程序中的商业逻辑而又要求不影响表示逻辑时,使用“EJB 的直接访问”的开发者就会遇到困难。即当 servlet 正在与 EJB 容器相同的系统(同一 JVM)上运行时,使用“直接访问”,客户机执行的每个方法调用都是远程调用,导致通过 TCP/IP 栈对方法进行路由分配。

Access bean 方法

“Access Bean”方法比“EJB 的直接访问”快得多。因为它可将 EJB 缓存在 Access Bean 中象其它的缓存一样被执行。“Access Bean”还允许没有 EJB 知识的开发者编写可访问 enterprise JavaBeans 的 servlet 和 JSP 并且显示其属性。通过修改企业 bean 的实现,可以大大减少通过网络远程调用的数目,从而显著地提高性能。然而,由于实现方法唯一,导致 Access Bean 与其它选项不可兼容。它另一个缺点是包含在关联中的 Access Bean 是可导航的。调用Access Bean 的导航方法会返回与Entity bean 相对应的Access Bean。因为通过Access Bean 方法后继续关联时将产生错误,所以需要开发者为关联中相关的所有企业 bean 生成对应的Access Bean。

参考资料

EJB Development with VisualAge for Java for WebSphere Application Server,尤其是第 13 章 ? Client Programming
Enterprise JavaBeans Development Using VisualAge for Java
Building Layered Architectures for EJB Systems
作者

该最佳实践是由 WebSphere 最佳实践团队创建的。有关附加信息、问题或意见可以通过 WebSphere_Best_Practices@us.ibm.com 与该组联系。  
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·EJB 最佳实践:用值对象加速您的  (2005-03-12)
 ·EJB 最佳实践:工业强度的 JNDI   (2005-03-12)
 ·最佳实践:有状态会话 bean运行结  (2005-03-12)
 ·EJB 最佳实践:数据验证出现在什  (2005-03-12)
 ·EJB最佳实践:动态委派  (2005-03-12)
 ·EJB 异常处理的最佳做法  (2005-03-12)
 ·使用MySQL内建复制功能来最佳化可  (2005-03-11)
 ·使用MySQL内建复制功能来最佳化可  (2005-03-11)
 ·使用MySQL内建复制功能来最佳化可  (2005-03-11)
 ·使用MySQL内建复制功能来最佳化可  (2005-03-11)

   栏目导行
  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实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统