开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Geronimo的银行通讯前置系统的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要: 提出了一套基于JavaEE开源服务器geronimo通讯前置系统的设计方案,以解决银行异构系统间的通讯互联问题。该系统具有通讯模式转换、报文格式转换、工作流和日志记录等功能,不仅能有效地解决银行与企业间数据交换时存在的问题,同时可以很好地兼容银行原有的系统架构。
关键词: 银行; 数据交换; 通讯前置; Geronimo
中图分类号:TP319 文献标志码:A 文章编号:1006-8228(2012)12-36-03
Design of front-end system for banks based on Geronimo
Fan Liang, Ding Yuewei
(University of Shanghai for Science and Technology School of Optical-Electrical and Computer Engineering, Shanghai 200093, China)
Abstract: To solve the problems of interconnection between heterogeneous systems, a design of front-end system based on open source JavaEE server Geronimo is presented. The system contains the functions such as communication mode conversion, message format conversion, and workflow and log record. It can solve the problems above and it is also compatible with the original system architecture of banks.
Key words: bank; data exchange; front-end system; Geronimo
0 引言
随着金融信息化程度的加深,银行之间以及与第三方企业之间的信息交互也越来越频繁。每个银行和企业都有自己的应用系统,甚至银行内部会有几套不同的应用系统。这些系统的通讯方式、通讯协议和报文格式各不相同,使得系统间通讯十分复杂,对于不同的系统互联一般都需要单独开发一套通讯接口,这样不仅开发难度高,效率低下,而且由于系统间耦合度极高,容易给日后的维护带来极大的不便。为了解决以上的问题,本文提出了一种基于开源组织Apache的JavaEE开源服务器Geronimo的通讯前置系统。它不仅能整合杂乱无序的通讯需求,而且作为各类应用系统间的通讯枢纽,为其形成统一、平滑的通讯连接,提供统一、方便的管理,并且能提供可靠的安全校验机制,保证数据传输过程中的安全性。
1 Geronimo简介
Geronimo是开源组织Apache的一款开源服务器,支持所有J2EE1.4规范,并且支持大部分J2EE1.5规范。Geronimo的核心是一个轻量级的Ioc核心,在Geronimo中的模块以配置文件的形式存在,由这个Ioc核心负责读取和管理。这个核心的主要功能是支持依赖管理,配置管理,生命周期管理和仓储服务。以这个核心为基础集成了各种各样的容器和模块,比如Apache的OpenEJB,ActiveMQ和Jetty等,并且可以根据需求添加或删除,可扩展性非常好。
Geronimo中一个模块称为一个GBean,由Ioc核心来管理这些GBean的生命周期。通过JDK自带的Jmx工具不仅可以查看Geronimo服务器运行的状态,内存分配等情况,还可以查看服务器中已经存在的GBean的状态,属性等等。
2 通讯前置系统设计与实现
2.1 系统设计思想
该平台的总体设计思想是设计出一个能解决异构系统间通讯互联的通讯前置系统。在通讯部分,采用TCP/IP协议来整合来自不同系统间的的通讯需求,实现通讯协议的转换。该平台的主体基于开源组织Apache的一款服务器Geronimo,支持功能的模块化,可扩展性强,而且由于Java的平台无关性,系统也具有良好的可移植性。
2.2 系统架构
通讯前置系统采用C/S架构,主要包括两个部分。一部分是通讯前置服务器,另一部分是通讯前置业务配置工具[1]。
2.2.1 通讯前置服务器
服务器是一个基于Geronimo的JavaEE容器,遵循Jmx标准规范。系统基于异步核心,使用基于Jms1.0标准规范的消息服务。
系统所有服务都在该容器中。每个服务主要包括控制器、监听线程或消息监听器,业务处理线程。控制器读取配置文件,监听监控工具的管理请求,然后按照请求启动或者停止监听线程。监听线程负责监听某个具体的业务请求,在收到业务请求后,启动业务处理线程进行处理,消息监听器用于处理消息请求,启动相应的业务处理器进行处理。
2.2.2 业务配置工具
业务配置工具是基于Eclipse的SWT开发的图形化用户界面,它用来收集用户的业务需求,将其转换为通讯前置服务器可读的配置文件,供通讯前置服务器读取[2]。配置的主要内容是业务流程配置,报文格式配置及资源的配置及业务控制、调试等功能。
2.3 系统功能模块
通讯前置系统功能模块主要分为五部分:系统主模块,通讯模块,报文模块,工作流模块以及日志模块。各模块关系如图1所示。
2.3.1 系统主模块
通讯前置系统里有一系列的接入适配器,每个接入适配器的都配置了IP和端口。系统主模块为每个IP和端口都分配了一个交易监听线程来监听消息交易请求,一旦接收到请求,就将请求分发给对应的业务处理线程进行处理[3]。同时它还负责每个交易的启动,部署,停止和卸载,是整个通讯前置系统的核心模块。
2.3.2 通讯模块
随着银行业务的拓展,银行与第三方的通讯模式越来越多样化,有同步的,有异步的,有长连接,也有短连接,更多的是以上几种模式兼而有之。通讯模块负责各种通讯模式的相互转换,为银行和第三方间的信息交互提供了统一、平滑的通讯连接。
2.3.3 报文模块
报文格式的定义有很多,有定长报文、分隔符报文,8583报文,XML报文等。甚至同一种类型的报文,比如8583报文,它们的定义也可以不相同。报文模块可以根据开发人员配置好的报文转换规则,将不同格式的报文进行相互转换,这也为银行和第三方的通讯提供了可靠的保证。
2.3.4 工作流模块
工作流模块主要用于解释工作流,完成与工作流相关的各模块之间的相互调用。工作流信息通过配置文件的形式存储。工作流引擎根据交易代码调用配置文件中的相应业务流程,并按顺序调用相应的组件,每个交易维护自己的一个交易上下文,同时,每个交易会使用应用服务或系统服务提供的报文,适配器,MQ队列等资源[4]。
2.3.5 日志模块
日志模块负责加载日志配置文件并把交易日志记录到相应的文件中去,这样可以方便开发人员进行错误的排查。日志模块采用Log4J技术,通过配置文件可以指定交易日志的级别,从低到高可分为Debug,Info,Warn,Error,Fatal五个级别。当为一个交易指定了日志级别之后,则日志中记录该级别以及该级别以上的日志信息。
2.4 系统流程设计
通讯前置启动时加载应用服务前会读取一个状态信息配置文件,配置文件中保存了各应用服务上一次关闭前置系统时的状态,根据状态信息恢复应用的状态。另外,在应用服务的启动过程中,必须先启动基本的系统服务,再启动应用服务,因为应用服务依赖于系统服务,而应用服务之间是相互独立的[5]。
应用服务启动过程中,首先读取应用配置信息,然后根据配置信息中指定的参数分配相关资源,并启动监听线程和业务处理线程,由监听线程等待客户端请求,接到请求后转发给业务处理线程,再循环等待下一个客户端请求。
业务处理线程处理交易的过程是:业务处理线程池接收到交易请求后,调用一个空闲线程,读取交易及相应的报文配制,按照交易流程进行相应的交易处理,流程处理完毕后释放相应资源,将线程归还到线程连接池,以处理新的请求。线程连接池采取非阻塞的方式来处理,增加了吞吐量,也降低了交易互锁的风险[6]。
3 通讯前置系统性能测试
3.1 测试环境
硬件环境:服务器采用的是IBM 9133-55A;CPU为4颗双核(每颗2097 MHz);物理内存为7936MB;调页空间为8192MB。
软件环境:操作系统采用AIX 6.1;JDK版本为IBM JDK1.6-SR10。
测试工具:Nmon。
3.2 测试目的
⑴ 对平台的处理效率、并发性能以及可扩展性等方面进行考察。
⑵ 对平台稳定性进行测试。
3.3 测试用例与测试数据
为了测试多种交易的情况,本文一共模拟了5种交易场景进行测试。对不同的交易场景制定了不同的测试用例进行测试。
测试用例1和测试数据如表1所示。
3.4 测试结论
从性能对比测试结果看,基于Geronimo的通讯前置系统的TPS能满足绝大部分银行交易平台的需求。该系统也具有很高的稳定性,能长时间不间断地稳定运行。
4 结束语
随着商业银行的快速发展和银行电子化进程的加快,商业银行迫切需要一个解决异构系统间通讯互联问题的通讯前置系统,同时,由于银行业务系统的不断增加,图形化配置业务流程以及加快业务系统的开发进度就显得十分必要。通讯前置系统还提供不同业务交易流程的整合功能,保障核心的稳定性和可扩展性。虽然在控制高并发方面还有待进一步研究,但是基于Geronimo的通讯前置系统已经基本满足了商业银行的以上需求,提高了商业银行的市场竞争力,为商业银行开拓更多元化的金融产品和服务提供了强有力的技术保障。
参考文献:
[1] 刘绍球,邱卫东,陈克非.商业银行综合前置系统的设计与实现[J].计
算机工程,2006.32(16):274-276
[2] (美)埃克尔著,陈昊鹏译.Java编程思想(第4版)[M].机械工业出版社,
2007.
[3] Robbins, Steven Robbins. Unix Systems Programming:Communi-
cation, Conncurrency and Threads[M].Pearson,2003.6:23-56
[4] 葛冬霞.消息队列中间件及其应用[J].高性能技术,2004.169(4):
58-60
[5] 翟裕忠.一个基于XML的数据交换原型系统[J].计算机工程,
2000.26(12):212-214
[6] 唐丁波.银行前置机系统的设计[J].电脑信息与技术,2003.32(6):
32-36