加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 阅读中心 > 软件学习

最佳实践:用 Enterprise JavaBean(EJB)设计应用程序

时间:2014-05-04 10:33:48  来源: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 与该组联系。  
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
滨海近地生产厂房1500平出租
滨海近地生产厂房1500
科比专为大场面而生
科比专为大场面而生
“最美清洁工”原是《赤壁》宫女
“最美清洁工”原是《
尹馨大胆亮相《男人装》 嫩肤美腿勾人魂
尹馨大胆亮相《男人装
相关文章
    无相关信息
栏目更新
栏目热门