使用一个简单的webframe来解决EAI和分工合作问题

原创 2002年08月23日 09:46:00

使用一个简单的webframe来解决EAI和分工合作问题

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       在前段时间的工作中,我们开发了一个面向最终客户的网站,网站的数据都是来自不同的系统的,这是一个带有EAI性质的项目,包括有:SQL Server数据库、Tuxedo Jolt服务、Tuxedo上运行的Corba服务、Socket。很自然的,会考虑使用EJB来访问这些后台系统,使用Servlet来访问EJB,使用JSP来显示结果。

       在设计阶段,我们最头疼的问题是,我们只有两个初级经验的jsp/servlet人员,对j2ee的了解并不深入,同时有两个具有相当经验的j2ee开发人员。如果按照传统的方式,开发EJB,然后公布一个接口给web开发人员,再由web开发人员完成页面,效率很低又没有办法很好的维护。我们也简单考察了一些现有的技术,包括webservicecocoonmvctag技术等,发现都需要增加相当多的培训时间,所以我们决定做一个自己的webframe,这个webframe目前使用的版本,解决了以下两个重要问题:

²        WebEJB(完成EAI接口调用)开发人员的开发工作隔离开

²        可以更容易的与其他系统集成(EAI

实际上,目前的webframe,实现的功能与webservice有不少相似之处。

 

完整的与EAI系统交互的工作流程

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

      

 

      这个序列图简单描述了使用webframe的情况下,如何与一个EAI后台系统进行交互。

       图中的xml messageServletJSP View构成了简单的MVC模型。

       Servlet把提交的数据转换为xml数据,webframe负责检查这些数据的合法性,同时判断应该把xml数据提交到哪一个EJBEJB接收到xml数据后,与后台EAI系统连接,然后把结果也构造成xml数据,返回给webframe

       一般的,xml数据应当描述以下信息:

²        操作的用户,webframe做日志记录用以及判断该用户是否有操作权限用

²        该操作的编号,webframe用来判断对应的EJB JNDI Name

²        操作的数据,webframe不处理这些数据,而由EJB来处理

²        返回的数据,webframe不处理这些数据,由JSP View来显示给User

       可以看到,关键在于数据都是xml格式的,所以,在实现上,webframeEJB中负责操作的方法,入参和出参都是String类型,也就意味着,所有负责EAIEJBHome InterfaceRemote Interface是一致的。

       webframe中最关键的事务处理类和方法:

       package com.sztelecom.webframe.core;

/**

 * 核心事务管理,负责前台和EJB会话管理

 * @author  Chen WenJing

 * @version 1.0, Mar-27-2002

 * @since   JDK 1.3.1

 */

public class TransactionManager

{

       /**

            * 受理申请,根据xml描述分发到不同的EAI EJB

     * WebUser.referApply()

            * @param _sxml xml描述

     * @return xml操作结果

            */

    public String referApply(String _sxml)

           {

              }

       }

      

       EJB Home Interface

       package com.sztelecom.webframe.ejb.core;

 

/**

 * 所有EAI EJB Home接口

 *

 * @author  Chen WenJing

 * @version 1.0, Mar-27-2002

 * @since   JDK 1.3.1

 */

public interface AgentHome extends EJBHome

{

           Agent create() throws CreateException, EJBException, RemoteException;

}

 

       EJB Remote Interface

       package com.sztelecom.webframe.ejb.core;

 

/**

 * 所有EAI EJB Remote接口

 *

 * @author  Chen WenJing

 * @version 1.0, Mar-27-2002

 * @since   JDK 1.3.1

 */

public interface Agent extends EJBObject

{

            /**

     * 操作申请方法。

            * @param _sxml xml描述

     * @return xml操作结果。

            */

    public String referApply(String _sxml) throws EJBException, RemoteException;

      

    /**

            * 查看EJB是否可用的方法。

     * @return true

            */

    public boolean isAvailable() throws EJBException, RemoteException;

}

 

EAI接口开发人员的职责

       在使用webframe开发的情况下,EAI接口开发人员只需要完成EAI调用,同时给出xml请求数据和返回数据格式就可以了,更完整的情况下,可以给一个简单的调用例程。不同于传统的J2EE EJB开发,还需要让调用人员来关心ExceptionAppServer地址、复杂的参数等问题。

 

web开发人员的职责

       在使用webframe开发的情况下,web开发人员只需要知道xml数据的格式以及该操作的编号,就可以完成。Web开发人员完全不需要知道任何与EJB有关的知识,只需要掌握htmljspservlet就可以。

 

webframe中的关键类说明

核心处理类包括有:

TransactionManager完成事务管理,这个singleton的类负责与EAI EJB连接。

PlugInit接口是用来定义额外的初始化内容的,而实现这个接口的类名将在名为webframe.xml的配置文件中描述。

DBConnection类包装了数据库连接,数据库连接的地址或者是JNDI名在webframe.xml中描述。

EAI EJBHomeRemote Interface

日志记录的类,Webframe包装了Log4jLogkit的日志系统,它们都是Apache提供的,LogkitLog4j提供了更多的定制空间,所以系统日志是Log4j记录的,而访问EAI EJB的应用日志,由Logkit来记录。

webframe初始化用的Servlet,所有配置信息,记录在webframe.xml文件中。

 

与用户有关的包括有:

WebUser类是一个实体类,记录登录的用户的各种状态和数据。

LoginRole接口是用户角色接口,而具体对应的用户角色类在webframe.xml中描述。

Validator接口是用户认证器接口,用来检查用户合法性,对应的用户认证器类在webframe.xml中描述。

LoginManager类管理用户的整个生存期。

 

 

webframe提供的功能列表

ü           完全符合j2ee规范,可以搭建在任何符合j2ee标准的web服务器中

ü           管理基本的数据库连接

ü           完善的日志系统,包括系统日志和EAI日志

ü           管理用户类型,且用户类型可以自定义

ü           负责EAI EJB访问分发,控制访问并发负载

ü           可自定义额外的初始化插件

ü           管理用户类型可用EAI EJB

ü           使用xml完成配置和EAI EJB访问数据

ü           管理用户生存期

ü           统一的用户登录入口

ü           统一的xml业务数据入口和出口

 

webframe展望

目前的配置文件webframe.xml还需要手工来修改,将提供console来修改配置文件。而目前修改配置文件需要重新启动服务器的情况也会得到解决。

webframe的最终目的是成为一个适应大多数情况的web-EAI系统基础平台,最大程度的减少培训成本,使不同角色的开发人员可以专心在各自的专有领域完成开发工作。

 

 

SOA与EAI的比较

在一家银行基于ESB产品做企业应用集成项目,自然要言必称SOA。客户对SOA也比较感兴趣,他们有EAI产品和项目经验。一日问SOA和EAI到底什么区别,SOA比EAI究竟多了哪些东西。当时就自己的理解...
  • zhurui536
  • zhurui536
  • 2013年09月25日 08:50
  • 2863

ROS机器人Diego 1#制作(二十一)搭载EAI F4激光雷达gmapping创建室内地图

上篇文章中我们用hector创建了室内地图,本文中我们采用gmapping来创建室内地图,hector和gmapping主要区别gmapping创建地图需要odom数据,而hector不需要,所以在g...
  • mwlwlm
  • mwlwlm
  • 2017年02月17日 20:07
  • 1420

SAP R3 主流系统EAI接口技术剖析

作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提...
  • levin_rain
  • levin_rain
  • 2013年02月05日 12:44
  • 623

跨域问题及其简单的解决方案

1、什么是跨域       当请求不同域名下的资源时,就会产生跨域请求问题。 2、跨域请求的产生的原因       浏览器的同源策略造成了跨域问题(同源策略严格限制不同域名下的文档、脚本之间的交互)。...
  • angry_tiger
  • angry_tiger
  • 2016年08月30日 15:11
  • 733

EAI和SOA比较

原文:http://blog.sina.com.cn/s/blog_493a84550100j94u.html 1.EAI(Enterprise Application Integration,企业...
  • aeaiesb
  • aeaiesb
  • 2014年10月29日 16:59
  • 843

ROS机器人Diego 1#制作(二十)搭载EAI F4激光雷达Hector创建室内地图

EAI F4激光雷达是EAI最近推出的低成本二维激光雷达,具备极高的性价比 今天我们就用这款雷达基于ROS的 hector来创建室内地图,先上创建好的室内地图。 此图是diego 1#搭载...
  • mwlwlm
  • mwlwlm
  • 2017年02月16日 10:38
  • 2027

EAI激光雷达X4使用hector_slam建图(一)

环境:ubuntu14.04+indigo(完整版)  准备:雷达+转接板 创建工作空间: mkdir -p ~/eaix4_ws/src 第二步进入工作空间根目录下: cd ~/eaix4_ws...
  • zhu751191958
  • zhu751191958
  • 2018年01月04日 13:14
  • 110

激光雷达F4与D1坐标校正

激光雷达F4与D1坐标校正
  • EAIBOT
  • EAIBOT
  • 2016年12月28日 13:18
  • 1212

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决

系统软件这个概念其实比较模糊,传统意义上一半将用于管理计算机本身的软件称为系统软件,以区别普通的应用程序。系统软件可以分成两块,  一块是平台性的,比如操作系统内核、驱动程序、运行库和数以千计的...
  • liutianshx2012
  • liutianshx2012
  • 2016年03月03日 18:04
  • 2591

用python解决你的实际问题,忘记语言吧

我在思考一个问题。软件是为人服务的,而人的需求一直在变。什么东西能快速适应这种需求的变更。 本人从汇编玩到C,总觉得这些底层的东西吧~~强大是强大,但是用起来费劲,而且分散你的经历,不能把精力放在应用...
  • cpuwolf
  • cpuwolf
  • 2016年01月28日 13:40
  • 867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用一个简单的webframe来解决EAI和分工合作问题
举报原因:
原因补充:

(最多只允许输入30个字)