您的位置:首页 > 大数据 > 人工智能

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

2002-08-23 09:46 781 查看
使用一个简单的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开发人员完成页面,效率很低又没有办法很好的维护。我们也简单考察了一些现有的技术,包括webservice、cocoon、mvc、tag技术等,发现都需要增加相当多的培训时间,所以我们决定做一个自己的webframe,这个webframe目前使用的版本,解决了以下两个重要问题:
²        把Web和EJB(完成EAI接口调用)开发人员的开发工作隔离开
²        可以更容易的与其他系统集成(EAI)
实际上,目前的webframe,实现的功能与webservice有不少相似之处。
 

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


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


      
 
      这个序列图简单描述了使用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 EJ
cdb1
BException, 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系统基础平台,最大程度的减少培训成本,使不同角色的开发人员可以专心在各自的专有领域完成开发工作。
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息