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

类别:Java 点击:0 评论:0 推荐:

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

 

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

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

²        把Web和EJB(完成EAI接口调用)开发人员的开发工作隔离开

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

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

 

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

      

 

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

       图中的xml message、Servlet和JSP View构成了简单的MVC模型。

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

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

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

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

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

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

       可以看到,关键在于数据都是xml格式的,所以,在实现上,webframe和EJB中负责操作的方法,入参和出参都是String类型,也就意味着,所有负责EAI的EJB的Home Interface和Remote 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开发,还需要让调用人员来关心Exception、AppServer地址、复杂的参数等问题。

 

web开发人员的职责

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

 

webframe中的关键类说明

核心处理类包括有:

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

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

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

EAI EJB的Home及Remote Interface

日志记录的类,Webframe包装了Log4j和Logkit的日志系统,它们都是Apache提供的,Logkit比Log4j提供了更多的定制空间,所以系统日志是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系统基础平台,最大程度的减少培训成本,使不同角色的开发人员可以专心在各自的专有领域完成开发工作。

 

 

本文地址:http://com.8s8s.com/it/it18209.htm