UML软件工程组织

构建智能企业应用整合框架(2)
作者:文枫    本文选自:开放系统世界——赛迪网  2003年01月15日

 

首先,Java提供了一个概念清晰、结构紧凑的分布计算模型和构件互操作的方法,为组件应用开发提供了相当的灵活性。CORBA是一种集成技术,更是一个非常完善的分布对象平台。CORBA可以扩展Java在网络、编程语言、组件边界、操作系统中的各种应用。

其次,Java不仅是适合与CORBA捆绑的语言,还是一个跨平台的对象系统,允许CORBA对象在大型主机、网络计算机和移动电话等应用上运行。Java优化了大型应用系统中的内存分配,其中内置的多线程和垃圾收集机制使编写可靠的网络对象更为方便。采用CORBA可以将网络对象连接在一起,并与异构环境中的数据库、原有业务系统、其它语言编写的对象和应用相互集成。

CORBA与Java的基础结构也具有互补性。CORBA处理网络透明性,Java则处理实现透明性。CORBA提供了采用Java实现应用环境与对象间连接的便捷通道。

在EAIF中,我们将把业务代理EJB与原有系统之间通过CORBA IDL接口进行集成。同时,把所有涉及IDL接口实现的操作封装在EJB中。具体地说,只在EJB容器中进行CORBA调用,即只在业务代理EJB的ejbCreate方法中实现CORBA的根名字引用和接口对象初始化。这样将CORBA接口对象操作封装在业务代理EJB的生存周期中,从而避免JSP/Servlet无意的直接调用,这将使业务生产系统的接口更为安全。而前台JSP/Servlet则只能访问EJB远程接口的业务申请referApply(String xml)方法,并必须通过预先定义的、一套专有的XML业务数据传输格式与EJB进行通信。这将使业务受理更易于调度,并使系统的开发、维护与升级也更为简单和方便。

XML消息总线

EAIF系统部署采用XML配置文件,系统将有一个核心的管理配置文件Config.xml,另外还有一个Business.xml。Business.xml用于对业务插件(不同业务系统连接的Adapter)进行配置。通过对系统配置XML文件的动态定制与更新,即可实现业务的动态配置、识别与加载,同时通过实时刷新各类用户可操作的业务列表,使企业在需要增加新业务或抛弃旧业务时,不需要Reset服务即可实现业务应用的“热拔插”。显然,这将使企业在激烈的市场较量中更富竞争力。另外,通过定义一套专有的XML业务数据传输格式,作为前台Web页面(JSP/Servlet)编写人员与后台业务代理EJB开发人员之间进行业务申请和受理的专用XML通信通道,从而使前台开发人员的要求大大降低。因为他们不需要了解复杂的后台业务系统和艰深的CORBA技术,即可完成页面开发工作。这样,通过XML使业务处理透明,在大大降低开发成本的同时使系统更灵活健壮,移植部署也更为方便。

连接池技术(ORB/DB)

EAIF系统中,为了提高关键业务的处理效率和吞吐量,必须采用连接池技术。我们需要考虑两种类型的连接池,一为数据库连接池,另一为对象连接池。

◆ 数据库连接池

该技术已非常成熟,并且应用广泛。在许多主流应用服务器中,如BEA WebLogic Server和IBM WebSphere,在它们的控制台中都提供了连接池的配置工具,直接配置即可。如想自己创建,也不会很困难。因为虽然JDBC1.0标准及其扩展中没有定义连接池,但在JDBC 2.0标准的扩展中定义了与连接池相关的接口,实现与接口对应的类即可。图5简略地描述了数据库连接池的运行机制(对象连接池也类似)。



图5 数据库连接池的运行机制


◆ 对象连接池

在调用CORBA服务时,如果频繁地创建和销毁接口引用对象,必然会使性能受到影响,尤其在大规模并发访问中。如果没有连接池,很可能导致CORBA服务器因排队等待的任务过多而超时,或者因为负载过重而直接导致CORBA服务器没有响应。显然,这是不允许的。所以,为了避免这种情况,我们采用对象池技术。实现方式有两种,如果应用服务器提供了配置工具,如WebLogic Server就提供了连接Tuxedo CORBA主域的配置工具WLEC,直接配置其Config XML文件即可。如果没有,则必须自己创建对象池。需要指明的是,具体的ORB管理连接池可能依赖于EAIF所采用的ORB提供厂商,比如BEA的WLE与Inprise Visibroker及IONA Orbix的ORB,它们具体实现都是不同的。

与后台业务系统的接口方式


CORBA IDL接口

EAIF与业务系统接口的调用方式可采用CORBA IDL。业务系统CORBA接口的所有实现方法都封装在业务代理Stateless EJB中,通过该业务处理EJB调用WebLogic Enterprise的、Tuxedo主域提供的CORBA服务。前台JSP通过调用EJB的远程接口referApply方法,实现业务的具体申请和受理。

如何在EAIF的业务插件接口中实现具体业务处理呢?我们可以根据不同的业务类型定义IDL的不同模块,然后在一个模块中定义一类业务的多个操作接口与商业方法。假设要实现某一类业务,如电信的97业务,它可能涉及多个商业方法,如电话新装、验证用户密码、改电话特性、停机/复机、移机/拆机等。

那么如何来实现业务代理EJB呢?我们可以根据某类业务的大小设计N+1个Stateless EJB。其中AgentBusinessBean实现该类业务操作接口与事务管理控制器TranscationManager的通信。它主要根据业务的BusinessID,分发前台的业务申请到另外N个含具体业务处理方法的Stateless EJB中,具体为AgentBusinessBean1、AgentBusinessBean2...AgentBusinessBeanN。其中Stateless EJB处理10个具体的Business业务,它们共有的远程和本地接口分别为AgentBusiness和AgentBusinessHome。如果将来需要在该类业务中增加新的Business方法时,只需要根据该接口格式增加AgentBusinessBeanN+1... AgentBusinessBeanN+M,并在EAIF的config.xml中加入新业务方法及有权操作用户的声明,将business.xml中的BusinessEJBCount改为N+M,即可实现新业务的自动识别和加载,不需要修改前面的任何代码。

同样,如果需要再增加不同类型的业务,我们只需再定义一个不同的module,在IDL中声明相应的接口和方法、在CORBA服务端实现、在EJB中调用即可。当然,也需要将EAIF的config.xml进行相应的更新。但不需要对以前的代码进行任何修改,甚至根本不需要了解以前已实现的业务,只要按照EAIF的新业务开发规范即可完成新业务的开发、配置和部署。

JOLT调用Tuxedo服务

很多企业的业务系统,比如深圳电信的客户服务中心(现在的1000号,原来的112/114/180/189等)就是直接通过Tuxedo服务器直接提供业务受理。在这种情况下,再为此建立CORBA接口,一是开发代价较大,二是根本没有必要,因此完全可以直接通过Java来访问Tuxedo服务。具体实现时,可使用BEA提供的Jolt类包。如果应用服务器采用BEA的WebLogic Server,还可通过配置其中的Jolt Session Pool,实现对Tuxedo Service的业务调用与动态负载均衡。

系统配置


系统功能配置采用XML文件描述,主要涉及以下XML文件:

◆ Web.xml文件

该文件是J2EE标准Web服务器使用的Web配置文件,应该放在Web服务器的WEB-INF目录下,在EAIF的启动控制Servelt中指明系统主要配置XML文件的路径;

◆ config.xml文件

在EAIF的Web框架系统中,负责描述包括数据库、日志、JNDI环境、额外的初始化插件、业务代理EJB、用户类型、用户类型可用业务等多种信息;

◆ business.xml文件 负责描述EAIF与后台业务系统的接口方式及连接池的配置。

系统主要功能


从上面的分析可以看到,设计EAIF系统主要应包含核心框架、事务管理、系统配置、统计分析及业务插件等五个子系统。



版权所有:UML软件工程组织