jdon 解惑授道,企业信息化解决之道
 
JdonSD设计
JdonSD结构
JdonSD性能


 

 

 

 

Jdon框架演示

JiveJdon3.0
源码下载

GoF设计模式

在线教程

社区精彩讨论

 





商业委托:EJB方法调用框架

  随着J2EE系统的普及,越来越多应用系统采取了B/S结构,但是由于浏览器客户端技术相对滞后,很多原先在VB或Delphi中很容易实现的客户端高级技术在浏览器中很难实现。

  因此,在实际J2EE系统设计规划中,为了降低成本和开发风险,将可能采取浏览器和专用肥客户端两种客户端混合的方案,那么如何保证系统核心功能和业务逻辑不因为使用了多种客户端受到影响或改动?

  解决之道:将核心功能和业务逻辑封装在EJB层实现,辅助以“J道EJB方法调用框架”,从而完全实现了客户端和业务核心功能的解耦,增强了J2EE系统的灵活性,保护了投资、大大提升了系统的可扩展性和灵活性。

架构图

  从图中可以看出,J道EJB方法调用框架适合多种类型的客户端:瘦客户端和Java肥客户端。

  浏览器一般属于瘦客户端,使用Html和wml实现,浏览器通过和J2EE服务器的Web容器形成界面输出和界面数据输入等功能实现,实际是实现MVC模式,Struts是MVC模式的成熟稳定开源框架,通过Struts的Action可以通过J道EJB方法调用框架直接调用后台EJB,Action的调用代码简单,稳定不易出错,提高调试整合通过率。

  对于Java编制的肥客户端,如运行在远程的Java Application和Swing或WebStart,在其Action部分采取类似Struts调用本框架的代码,可以直接调用远程服务器的EJB,并得到返回结果,速度性能优越。

  其它语言编制如VB Deplhi的客户端,可以通过Web Services技术使用本框架,Axis是Apache组织一个免费开源的Web Services服务器,远程客户端访问Axis后,可通过Axis调用本框架访问EJB。

  由于在你的J2EE应用系统中采用了“J道EJB方法调用框架”,从而完全解耦了业务逻辑和具体客户端类型的关系,在系统设计初期,不必确立客户端类型,可以随着时间和需求变化,动态扩展到为新的客户端服务。

  使用“J道EJB方法调用框架”有下列优点:

  (1)对于Web开发人员,无需掌握太多EJB相关知识,只要获知EJB Service提供的功能方法,就可以相对独立地开发Servlet/Jsp;也无需在Web层进行EJB出错捕获等琐碎工作;可以在没有EJB容器或数据服务器情况下测试Web层。

  (2)对于EJB开发人员,也无需了解Struts等Web技术,EJB改变或部署变化时,不必变动Web层代码。
  
  (3)由于该框架系统对EJB Service实现了缓存机制,大大提高了EJB系统响应性能。

  (4)该框架适合无状态Session Bean和有状态Session Bean,无需客户端具体指定Session Bean种类,自动识别。

  (5)提供了AOP实现的底层基础,由于本框架基于JDK动态代理实现,从而提供了纵向方面切入点。可以由开发者根据自己的要求,加入有关自己行业的Advice。

框架的使用

  本框架使用非常方便,在多层结构的B/S体系和C/S体系下的使用形式如下:

  (一) B/S体系下调用方式:

  在Web层中使用下列代码实现EJB调用,一共由三行代码组成,非常简捷方便。

 
//获得ServiceServerFactory工厂实例
ServiceServerFactory serviceFactory = ServiceServerFactory.getInstance();

//获得SecurityFacadeLocal代理实例
MyEJBFacadeLocal myEJBFacadeLocal = (MyEJBFacadeLocal)serviceFactory.getService(X, request);

//直接执行MyEJBFacadeLocal具体方法
myEJBFacadeLocal.oneOfMethod(arg1, arg2);

  (二) C/S体系下调用方式:

  在远程客户端中使用下列代码实现EJB服务调用,一共由四行代码组成,非常简捷方便。

 
public static void main(String[] args) {
  //获得ServiceClientFactory工厂实例
  ServiceClientFactory serviceFactory = ServiceClientFactory.getInstance();

  //实现安全认证
  String result = (String)serviceFactory.login("banq", "9999");

  //获得EJB代理实例
  MyEJBFacadeLocal myEJBFacadeLocal
         =(MyEJBFacadeLocal)serviceFactory.getService(XX);

  //调用MyEJBFacadeLocal方法
  myEJBFacadeLocal.oneOfMethod(arg1, arg2);

   ……
}

 

 





联系我们 | 关于我们 | RSS订阅 | 广告联系 | 网站地图 | 加入收藏夹
Copyright (C) 2006 Jdon.com, All Rights Reserved 版权所有 上海解道计算机技术有限公司
沪ICP备05018152号 如有意见请与我们联系 Powered by JdonFramework