




免费预览已结束,剩余75页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(科研训练、毕业设计)题 目:关于ISO8583协议在金融系统中应用的研究姓 名: 李 楠学 院: 软 件 学 院系: 软 件 工 程专 业: 软 件 工 程年 级: 学 号: 指导教师(校内): 职称: 指导教师(校外): 职称:年 月关于ISO8583协议在金融系统中应用的研究摘要 建行家居银行是中国电信与中国建设银行合作开发的一个项目。它利用终端厂商生产的终端,通过电信的网络,在建行进行金融交易。建行居家银行是银行继实现网站、手机交易之后的又一个交易平台,同时它也是中国电信第一个面向家庭用户实现针对电信与建行业务的交易平台。该项目主要利用了现行的银行数据传输标准ISO8583协议。ISO8583标准是由信用卡国际组织建立起来的支持银行卡交易交换的报文标准。其基本区间(位图2至64)包含了银行卡交易所需的数据元素,而扩展区间则(位图66至128)包含了银行卡机构间清算所需的数据元素。ISO8583标准被广泛应用于以银行卡交换为主的金融交易系统,也被延伸到银行企业互联、银行商户互联等其他应用项目中。针对ISO8583标准,还产生了基于java的JPOS框架库。本论文主要研究如何用Java语言实现灵活、可扩展的ISO8583协议,以及在实际系统中的应用。关键字 ISO8583 位图 JPOS SOCKETThe research in the application for the finance System by ISO8583 protocol Abstract The home bank is a project, which is China Telecom and China Construction Bank co-operated. It uses the terminals of terminal manufacturers, through telecommunications networks, in-line to do the function of financial transactions ,which is a new platform following the realization of websites, mobile phone trading in the banks, while it is also the first trading platform of China Telecom for the family-oriented users to do the telecommunications business. The project mainly use the existing standard of data transfer in bank - ISO8583 protocol.Iso8583 protocol is the standard of the data message interchanging between the banks, which instituted by the international credit card organize. It contains the sixty-four bitmaps including the data elements in the trade of the bank. Also it contains the one hundred and twenty-eight bitmaps to solve the lack of elements in the bring to account between the banks. ISO8583 protocol is used in the finance trade System widely which is the main of the interchanging between the banks and is extended to the other applications like the association from bank to the company and from bank to merchant.There is a Library called JPOS for the ISO8583 protocol. The thesis mainly study the extended protocol of ISO8583 and how to apply for the Systems around.Key ISO8583 BitMap JPOS SOCKET目 录第1章 引言11.1项目背景11.2项目简介11.3项目开发环境与部署环境21第2章 项目的总体设计及相关技术的介绍142.1项目的总体设计142.2 项目相关技术介绍142.2.1 ISO8583标准简介142.2.2基于JPOS体系结构的介绍202.2.3 Socket编程的介绍232.2.4 Webservice介绍242.2.5 加密机的介绍27第3章 项目详细设计及实验步骤、部分代码的介绍283.1项目详细设计及总体架构283.1.1项目结构图283.1.2项目类图313.2部分重要代码的介绍32第4章 实验结果贴图,及描述354.1 项目结果描述354.2 测试用例(测试代码)384.3 测试结果及解释39第5章 结束语40致谢语41参考文献42附 录43目 录第1章 引言11.1项目背景11.2项目简介11.3项目开发环境与部署环境2第2章 项目的总体设计及相关技术的介绍142.1项目的总体设计142.2 项目相关技术介绍142.2.1 ISO8583标准简介142.2.2基于JPOS体系结构的介绍202.2.3 Socket编程的介绍232.2.4 Webservice介绍242.2.5 加密机的介绍27第3章 项目详细设计及实验步骤、部分代码的介绍283.1项目详细设计及总体架构283.1.1项目结构图283.1.2项目类图313.2部分重要代码的介绍32第4章 实验结果贴图,及描述354.1 项目结果描述354.2 测试用例(测试代码)384.3 测试结果及解释39第5章 结束语40致谢语41参考文献42附 录43ContentsChapter 1 Foreword.1 1.1 Background .1 1.2 Profile.1 1.3 Development environment and deployment environment.2Chapter 2 The project design and related technology introduced.14 2.1 Design projects .14 2.2 Technology-related projects .14 2.2.1 ISO8583 standard profiles .14 2.2.2 Based on the architecture introduced JPOS .20 2.2.3 Socket programming on .23 2.2.4 Webservice introduced .24 2.2.5 Encryption machine introduced .27Chapter 3 Detailed project design and experimental steps on the part of the code. .283.1 Detailed project design and overall structure .283.1.1 Structure of the project .28 3.1.2 Class Plans of the project .313.2 An important part of the code introduced .32Chapter 4 The results textures, and descriptive.354.1 Description of the project results .354.2 Test Case.38 4.3 Test results and explain.39Chapter 5 Conclusion.40Express My Thanks to.41Reference Articles.42Appendix .437第1章 引言1.1项目背景随着时代的发展,我们已经淘汰了古代在钱庄用算盘进行交易的银行模式。信息革命的浪潮将银行业务带入人们生活的每一个角落, ATM机、pos终端随处可见。如果不同银行的ATM机,不同的pos终端只能支持该银行的业务,那势必浪费很多的资源,这时有人提出介质资源共享的概念。但是每家银行都有各自的标准,那又如何实现数据传输呢?于是ISO8583协议(简称8583包)应运而生。它是一个国际标准的包格式,是银行界所共同遵循的互联网法则,是银行业务与外部环境的接口。正是通过ISO8583标准,银行实现了用户可以在pos终端、ATM机以及手机平台上进行金融交易的功能,现在,它将被再次运用在家庭终端平台金融交易功能的实现上。1.2项目简介建行家居银行的重点在“家居”二字,它将固定电话的概念升级,使电话不仅仅是通信聊天的工具,更是变成小型金融交易的终端,使广大家庭用户足不出户就可以实现金融交易,避免了到银行排长队办理业务的麻烦。当然,建行家居银行也不仅仅是实现了像ATM终端一样简单的金融交易功能,它还扩展了许多其他的功能,具体功能如下:l 个人业务:个人客户签约账户办理挂失类、查询类、转账类、支付类等个人结算业务。l 信息发布业务:对客户公示的信息产品以及业务的宣传信息进行发布。l IC卡业务:圈存、查询。l 账单支付业务:在线账单支付和离线账单支付。它成功地实现了电信业务与银行业务的高效结合。1.3项目开发环境与部署环境本项目采用Eclipse+Lomboz 3.1.4,XMLSPY作为开发工具,JDK1.4,tomcat4.1.36作为开发环境,基于JPOS框架库,Socket编程,WebService和加密机技术(非论文研究对象)实现。最终部署在Interstage平台的服务器上。所用软件:(1) jdk1.4.2(官网提供下载,下载后的JDK文件为j2sdk-1_4_2_04-windows-i586-p.exe)(2) Tomcat4.1.36(/tomcat官网提供下载,下载后解压文件apache-tomcat-4.1.36)(3) Eclipse+Lomboz 3.1.4(官网提供下载,下载后解压文件Eclipse+Lomboz 3.1.4)(4) AltovaXMLSpy2006.rar(华军软件园、天空软件园提供下载) 安装步骤:(1) JDK的安装:运行jdk1.4.2安装程序j2sdk-1_4_2_04-windows-i586-p.exe,安装过程中所有选项保持默认,完成后配置JDK的环境变量:在我的电脑上点右键属性高级 环境变量。新建系统变量JAVA_HOME:D:j2sdk1.4.2_04 (JDK安装目录)。新建系统变量CLASSPATH:.;%JAVA_HOME%lib;(注意:点号表示当前目录,不能省略)。在系统变量Path的值的前面加入以下内容:%JAVA_HOME%bin;(注意:这里的分号不能省略)。JDK安装完毕。(2) 安装Tomcat:直接解压tomcat4.1.36.rar到D盘根目录即可,完成后配置JDK的环境变量:在我的电脑上点右键属性高级 环境变量。新建系统变量TOMCAT_HOME:D:apache-tomcat-4.1.36 (tomcat安装目录)。在系统变量CLASSPATH的值的后面加入:%TOMCAT_HOME%commonlib;% TOMCAT_HOME%commonlibservlet-api.jar。在系统变量Path的值中%JAVA_HOME%bin;的后面加入:%TOMCAT_HOME%bin;。Tomcat安装完毕。进行完(1),(2)两步的设置以后,各系统变量的值如下: JAVA_HOME: D:j2sdk1.4.2_04TOMCAT_HOME: D:apache-tomcat-4.1.36CLASSPATH:.;%JAVA_HOME%lib;%TOMCAT_HOME%commonlib;%TOMCAT_HOME%commonlib;%TOMCAT_HOME%commonlibservlet-api.jarPath:%JAVA_HOME%bin;%TOMCAT_HOME%bin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem(3) 安装Eclipse:将Eclipse+Lomboz 3.1.4.zip直接解压到D盘根目录即可。Eclipse安装完毕。(4) 配置Eclipse:a设定Eclipse+Lomboz的JRE一般情况下,Eclipse可以自动找到JRE,但是我们需要手工修改JRE于D:j2sdk1.4.2_04下。b设定Eclipse+Lomboz的Tomcat 服务器运行Eclipse,选择Window菜单项中的preference,如图1-1所示。图1-1 在Eclipse中配置tomcat服务器(1)在跳出的preference的对话框中选择Tomcat4.1.x版本和Tomcat的安装路径,如图1-2所示。图1-2 在Eclipse中配置tomcat服务器(2)在Preference对话框左端的tomcat中选择JVM设置,在右端出现的JVM设置中选择JRE目录,以及Classpath中的tools.jar路径,如图1-3所示。图1-3 在Eclipse中配置tomcat服务器(3)完成配置。(5) 部署upc_mfjccb建行模块于Interstage平台a将upc_mfjccb导出为upc_mfjccb.war的war文件在Package Explorer中右击upc_mfjccb的项目工程文件,在弹出的菜单中选择Export,如图1-4所示。图1-4 将upc_mfjccb建行模块导出为upc_mfjccb(1)在弹出的对话框中选择war file,并点击Next,进入下一步,如图1-5所示。图1-5 将upc_mfjccb建行模块导出为upc_mfjccb(2)在Export对话框中的WebModule中选择upc_mfjccb模块,并指定导出war包的位置,点击Finish,如图1-6所示。图1-6 将upc_mfjccb建行模块导出为upc_mfjccb(3)b用root用户登陆interstage在IE地址输入http:/interstage地址:端口/IsAdmin,端口默认为12000,登录界面如图1-7所示,成功登陆后将显示Interstage控制台界面,如图1-8所示。图1-7 Interstage控制台登陆界面图1-8 登陆Interstage控制台后的操作界面c在System/WorkUnit/下建立统一支付的工作平台,工作平台名为:upc_mfjccb,如图1-9所示。图1-9 在Interstage控制台上新建一个upc_mfjccb的WorkUnitd发布upc_mfjccb.war,点击upc_mfjccb,选中Deploy标签,在Deployment File中选中Upload a local file for deployment单选项,点击“浏览”选择upc_mfjccb.war包存放的位置,复选框Restart WorkUnit automatically可以选择选中,选中表示发布完平台就自动运行起来,如图1-10所示。图1-10 在Interstage上upc_mfjccb的WorkUnit中 Deploy upc_mfjccb.ware点击deploy按钮,在底部显示框中有显示发布的日志,可知发布是否成功,如图1-11所示。图1-11 在Interstage上upc_mfjccb的WorkUnit中查看是否发布成功f点击upc_mfjccb,点击Status标签,看平台状态Status是否是Running,如果不是要点击Start按钮,如图1-12所示。图1-12 在Interstage上upc_mfjccb的WorkUnit的Status选项卡中查看状态g点击System/Services/Web Server,查看Web Server Status是否是Running,如果不是要点击“start”按钮启动Web Server,如图1-13所示。图1-13 在Interstage控制台上查看Web Server的状态h查看upc_mfjccb.war是否发布成功,在IE地址输入http:/interstage 地址/upc_mfjccb/services,如图1-14则表示成功。图1-14 利用IP地址查看upc_mfjccb的服务是否正常部署成功。第2章 项目的总体设计及相关技术的介绍2.1项目的总体设计根据实现目标的不同,建行家居银行被分为三个部分(如图2-1所示):(1) 首先是与终端进行交互的前端部分,即业务控制模块。它实现了终端的菜单显示及终端数据向后台传输等功能,开发语言为c。(2) 其次是构放在服务器上与终端业务进行交互的建行模块部分。本论文主要围绕该模块的支付类展开论述。该模块使用了java语言特有的JPOS体系结构来实现ISO8583标准,同时它利用webservice技术与前端的业务模块进行交互,Socket长短链接与建行前置模块(建行方)进行数据传输。除此之外,由于建行金融数据的私密性,加密机技术也被使用到了其中。(3) 最后是建行前置模块,由建行方实现。图2-1 建行家居银行总体设计结构图2.2 项目相关技术介绍2.2.1 ISO8583标准简介概述ISO8583包由信息类型、位图段与字段域组成。其中位图是8583包的灵魂,也是打包解包确定字段域的关键。字段域段最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。因此了解每个字段域的属性则是填写数据的基础。ISO8583的出现消除了金融行业网络数据传输的无效性和不稳定性。它的突出贡献表现在以下三点:(1) 各字段数据类型的定义,降低了数据的不兼容性。比如128个字段中的“商户类型”字段,其类型,在以前不是数字就是字母,这就产生了尴尬,如果“商户类型”里面的数据同时包括数字和字母,怎么办?于是,字段域类型的双重定义出现了,即一个字段可以同时属于多个类型。 (2) 位图的使用,确保了网络传输的有效性。有时在报文的传送中,可能只需要其中的5个字段,但是按照各个域的规定,发送方每次都需要传128个字段,结果浪费了123个字段的网络传输。位图的出现,很好地解决了这个问题。发送方在报文前面加个包头,包头里面用2个字节,即16个bit(一个字节等于8bit)来表示128个字段中的各个字段是否存在。每个bit在计算机中的二进制表示如果是1就说明对应的字段在本报文中存在,如果是0就表示不存在。这样,接受方就可以先根据报文头来判断报文的存在与否了。比如,要发送5个字段,分别属于128个字段中的第2、3、6、8、9字段,那么就可以将128bit的报文头填成011001011000000000,一共128个bit,后面就全是0了。位图的优化作用不仅如此,考虑到很多时候报文并不需要128个字段这么多,甚至64个字段都不一定能够用完。于是,发送方把ISO8583的128个字段中最常见的都放到前64个字段中,将比较少用的都放到后64个字段中,并同时设位图的第一位为位图扩展位。这样一般发送报文时只需发送64bit即一个字节的报文头,再加上需要的几个字段就可以了。如果有些报文用到64到128之间的字段,发送方就把64bit报文头的第一位bit置为1,那么接收方只要根据第一位bit,就可判断位图的长度,从而进行相应的处理了。因此大大节省了网络资源,提高了网络传输的效率。(3) 变长类型的使用,扩大了数据表示的范围,提高了传输效率。以第2个字段“帐号”为例,它是变长的,变长的字段在字段的开头需加上其长度。假设它的值是0123456789,一共10位,那么在第2个字段中的数据就应该是100123456789,前面多了个10,表示后面的10位为帐号。接收方收到该字段后,它知道ISO8583规定第2个字段“帐号”是变长的,所以会先取前面的2位出来,获取其值,然后根据该长度值知道应该拷贝该字段后面哪几位数据,才是真正的帐号。下面分别来介绍ISO8583包的各个组成部分。信息类型信息类型(message type)是数据包的第一部分,定义数据包的类型,如图2-2所示。 数据类型由数据包的发起者设定,应遵循以下要求: 数据包开始部分必须是信息类型,对不支持的信息类型能给出拒绝应答。各个银行的信息类型定义不尽相同,其中以建行为例,它包括0100授权类请求消息,0110授权类应答消息,0200金融类请求消息,0210金融类应答消息,0220金融通知类消息,0230金融通知类应答消息,0420冲正类通知消息,0430冲正类应答消息,0422受理方差错处理通知消息,0432受理方差错处理通知应答等。图2-2 信息类型message_type的定义位图位图(Bit Map) ,它在整个ISO8583字段域的第一位,定长,由16个16进制数,64个bit位组成,它被分为基本位图和扩展位图,当位图的第一位设为1时,表示使用扩展位图128域,否则表示只使用基本位图64域。位图的基本作用是标示后面所带数据属于哪个字段域,以减少对无用数据的传输,优化了报文结构。当要使用某数据域时,即在位图中将相应的位设位1,如使用41域,需将位图的41位设为1 。在一些开发语言中,位图域常由一个ISO8583数据结构体(表2-1)定义为/* FLD 1 */ 0,BIT MAP,EXTENDED , 8, 0, 0, 2, NULL,0表2-1 Iso8583结构体的定义字段域段字段域段是ISO8583报文数据的核心区域,所有有用的数据都集中于此。它总共由127个字段域组成,其中已经被明文规定的字段域有60个,而其他67个字段域可以根据具体情况进行制定。其中尤以以下9个字段域最为常用:(1) 字段2域,主帐号(Primary Account Number),对应位图位置为2,2位,变长,由22位数字组成,是唯一的确认一个用户交易的基本帐号。定义如下: /* FLD 2 */ 0,PRIMARY ACCOUNT NUMBER , 22, 0, 2, 0, NULL,0。(2) 字段3域,处理代码(Processing Code),对应位图位置为3,由6位数字组成,用于描述交易对客户帐户造成何种影响的代码,由以下三部分组成:1、2位交易动作码;3、4位付出帐户类型,用于借记类,如查询、代收费、转场交易;5、6位收入帐户类型,用于代收费、转帐等。注:处理代码和信息码一起可唯一定义一种交易的类型。定义如下:/* FLD 3 */ 0,PROCESSING CODE , 6, 0, 0, 0, NULL,0。(3) 字段4域,交易金额(Amount, Transaction) 对应位图位置为4,由12位数字组成,用于描述帐户人要求交易的交易金额,不含任何处理和交易费用。金额的表示和货币代码有关,应能表示相应货币的最小单位。对于查询等交易,应设交易金额为“000000000000”。 定义如下: /* FLD 4 */ 0,AMOUNT, TRANSACTION , 12, 0, 0, 1, NULL,0。 (4) 字段11域,系统跟踪号(Systems Trace Audit Number),对应位图位置为11,由6位数字组成,用于描述终端交易的跟踪号码,交易发起终端填写,和“交易日期、时间”、信息类型等合在一起可唯一定义某一个终端的唯一一笔交易。对于银行电子服务系统,其系统跟踪号是交易流水号。定义如下: /* FLD 11 */ 0,SYSTEM TRACE AUDIT NUMBER , 6, 0, 0, 1, NULL,0。(5) 字段12域,本地交易时间(Time ,Local Transaction),对应位图位置为12,采用hhmmss格式,由6位数字组成,用于描述交易在终端上发生的时间。本地交易时间在交易处理过程中不能改变。在自动冲正,存贮转发时,本地交易时间不能改变。定义如下: /* FLD 12 */ 0,TIME, LOCAL TRANSACTION , 6, 0, 0, 0, NULL,0。(6) 字段13域,本地交易日期(Date ,Local Transaction) ,对应位图位置为13,采用MMDD格式,由4位数字组成,用于描述交易在终端上发生的时间。本地交易时间不能改变,在自动冲正、存储转发交易时,本地交易时间也不能改变。定义如下: /* FLD 13 */ 0,DATE, LOCAL TRANSACTION , 4, 0, 0, 0, NULL,0。 (7) 字段37域,检索索引号(Retrieval Reference Number),对应位图位置为37,由12位字母和数字字符组成,用于描述检索索引号用来在任何时间标识一个金融、授权、自动冲正交易。定义如下: /* FLD 37 */ 0,RETRIEVAL REFERENCE NUMBER , 12, 0, 0, 0, NULL,0。(8) 字段41域,收卡单位终端标识码(Card Acceptor Terminal Identification),对应为图为之为41,由8位字母、数字和特殊字符组成,用于定义在收单单位中定义一个服务终端的标识码,在同一商户中服务终端标识码应唯一。定义如下:/* FLD 41 */ 0,CARD ACCEPTOR TERMINAL ID , 8, 0, 0, 0, NULL,0。(9) 字段48域,附加数据-私用(Additional Data-Private),对应位图位置为48,由999位3变长的字母、数字和特殊字符组成,用于描述银行电子服务系统使用此域的用途,如存放批量查询的返回数据和其格式与输出格式表对应等。定义如下:/* FLD 48 */ 0,ADDITIONAL DATA - PRIVATE ,999, 0, 3, 0, NULL,0。 其他域段详细介绍,见“附录”。2.2.2基于JPOS体系结构的介绍JPOS是一种与 J2EE兼容的基于ISO8583金融通信的框架库,它能够根据不同的金融信息的交换而体现出个性化和扩展性。JPOS提供了基于商户、付费处理机、银行等的电子支付及关联解决方案。其次JPOS有良好的硬件兼容连接能力,支持基于角色的安全特性。JPOS中包括一些主要的类,它们分别是ISOComponent、ISOBitMap、ISOMsg、ISOField、ISOBinaryField、ISOFieldPackager、ISOPackager、ISOFilter、ISOChannel、ISOMUX等。(1) ISOComponent是一个接口或者抽象类,它定义了叶子节点ISOBinaryField, ISOBitMap, ISOField, ISOMsg(如图2-3所示)和Composite节点的公共方法;采用composite模式,为的是能够以统一的方式处理基本元素和复合元素(Composite设计模式允许一个客户端对象统一地对待单一对象和复合对象)。Composite类维护了ISOComponent的一个集合,提供了对该集合操作的一些方法,比如addComponent()和removeComponent(),同时也包括了叶子节点的操作方法。(2) ISOBitMap是ISO8583中位图的直接类,它封装了protected BitSet value;并且提供了维护该bitmap的方法。在ISO8583的编程中,位图的纪录解析主要靠ISOBitMap类实现。它有一个setFieldNumber(int fieldNumber)方法,用来设置有用的字段域的位图。(3) ISOMsg是包含了ISOField的Composite (组合类),它包括了字段fields,header,direction及在第0号位元存放的消息类型的Hashtable fields,并维护了该报文的所有的位元。它用set(ISOComponentc)方法将ISO8583接口实现的报文载入,用getComponent(intfldno)返回给定域号的component对象(可以是isofield,isobitmap)。(4) ISOField,它也是ISOComponent的叶子节点,它的构造函数ISOField(intn,java.lang.Stringv)实现了字段域的结构,n代表域号,v代表value,通过将它载入ISOMsg对象,同时通过ISOBitMap对象致相应位图值,实现报文相应字段域数据的生成。(5) ISOBinaryField,它是有别于ISOField的另一种字段域的结构,它实现了一些域中值类型为byte16进制或者2进制的结构,通过ISOBinaryField (intn, bytev)构造函数。图2-3 ISOComponet的继承子类(6) ISOFieldPackager是有别于ISOComponent的另一个抽象类,它抽象了Iso8583的位元的封装方式,定义了位元的抽象特性和一些模板方法,如pack()和unpack()方法,它的子类有ISOAmountFieldPackager,ISOBinaryFieldPackager,ISOBitMapPackager, ISOFilledStringFieldPackager, ISOMsgFieldPackager, ISOStringFieldPackager,分别适用于不同的报文的编码方式,每种不同的编码方式都包括了三个成员类:Interpreter、pader和Prefixer,分别用于负责转换位元内容、插入填充内容和插入位元长度。通过继承每一种不同的编码方式的子类,JPOS提供了不同的具体的ISO的数据类型类。Interpreter、Pader、Prefixer接口的具体实现通过构造函数传入ISO的数据类型类。图2-4 ISOFieldPackager类的结构(7) ISOPackager为一个接口类(如图2-5所示),包含了ISOBasePackager, LogPackager, PackagerWrapper, VISA1Packager, XMLPackager等子类;它为整个ISO8583报文包含了全部128个域的定义,它的子类ISO87Apackager和ISO93Apackager也为一些重要和常用的某个具体的协议硬编码好了完整的位元信息,包括每个位元的代码,描叙和处理类(FieldPackager)。在具体使用的时候,可以直接使用这些报文处理类,也可以使用GeneriaPackager类来根据具体设置读取报文协议信息,具体在config/packager/iso*.xml中设置,这种方法可以很方便地切换协议、扩展协议。图2-5 ISOPackager类的结构(8) ISOFilter是一个接口类,它的子类有BSHFilter, DelayFilter, MacroFilter, MD5Filter, StatefulFilter, XSLTFilter,ISOFilter类利用public ISOMsg filter (ISOChannel channel, ISOMsg m, LogEvent evt) throws VetoException方法不仅能够修改通过ISOChannel接受和发送的ISOMsg以外,还能够通过抛出异常的方式终止ISOMsg的接受和发送。(9) ISOChannel是一个接口类,ClientChannel, FilteredChannel, ServerChannel都是它的子类;它用来完成底层的package和interchange,是应用层与底层细节的一个联系纽带。它能够通过调用相应的Packager完成Field的padder、intercpet和prefix,并创建connnection、发送和接收ISOMsg,有点像Socket类。(如图2-6所示)图2-6 ISOChannel接口类与ISOMsg、ISOPackager的关系(10) ISOMUX用来异步地处理某一个特定渠道发来的重发报文。ISOMUX为作为ISOChannel的前端fascade(如图2-7所示),供发送客户端调用。ISOMUX.getKey()方法返回报文中的11位元(交易系统生成的流水号)和41位元(终端标识码)的组合,可以用来唯一识别某比具体的交易。图2-7 ISOMUX类与ISORequest、ISOChannel类的关系2.2.3 Socket编程的介绍Socket诞生于上个世纪80年代初,美国政府的高级研究工程机构(ARPA)给加利福尼亚大学伯克力(Berkeley)分校提供了资金,委托他们在UNIX操作系统下实现TCP/IP协议的开发接口。于是研发人员就为TCP/IP网络通信开发了一个API(应用程序接口)。这个API称为Socket接口(套接字)。所以有时候说,Socket是TCP/IP上的API。 到了上个世纪90年代,当时的一些网络开发商,包括现在的Sun和Microsoft公司等,共同制定了一套WINDOWS下的网络编程接口,即WindowsSockets规范,简称WinSock规范。WinSock规范是一套开放的、支持多种协议的Windows下的网络编程接口。从1991年的1.0版到1995年的2.0.8版,经过不断完善并在Intel、Microsoft、Sun等公司的大力支持下,已成为Windows网络编程的事实上的标准。目前,WinSock规范主要有1.1版和2.0版。两者的最重要区别是1.1版只支持TCP/IP协议,而2.0版可以支持多协议。2.0版有良好的向后兼容性,任何使用1.1版的源代码,二进制文件,应用程序都可以不加修改地在2.0规范下使用。 可见Socket接口其实是TCP/IP网络的API接口函数,Socket数据传输其实就是一种特殊的I/O。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。面向连接的socket操作就像一部电话,他们必须建立一个连接和一人呼叫.所有的事情在到达时的顺序与它们出发时的顺序时一样。无连接的sockets操作就像是一个邮件投递,没有什么保证,多个邮件可能在到达时的顺序与出发时的顺序不一样。无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有的这次投递的信息。把它想象成一个信封吧,它有目的地址和要发送的内容。这个模式下的socket不需要连接一个目的的socket,它只是简单地投出数据报.无连接的操作是快速的和高效的,但是不可靠。面向连接的操作使用TCP协议。它由服务端首先定义一个socket(分配ip,端口),以建立了一个固定位置可以让其他计算机来访问,这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从065535之间的,前1024个端口已经被Tcp/Ip作为保留端口,因此你所分配的端口只能是1024个之后的,在该socket建立后,服务端就一直保持着accept状态等待客户端socket的连接,当客户端建立一个socket时,使用connect()方法向服务端发起连接,一旦客户端与服务端连接上,客户端,服务端就可以发送或者接收数据了。接着,当客户端发送接收数据结束时,关闭socket连接,服务端socket也可关闭,此为短连接,或者通过线程实现长连接。面向连接的操作比无连接的操作效率更低,但是数据的安全性更高,更可靠。ISO8583接口的编程中使用JPOS中的ISOChannel就是面向连接的。2.2.4 Webservice介绍WebService实现了对外的发布,与用户的交互,它是完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。其中AXIS框架是Apache的子项目之一,它是 Apache SOAP 项目的延续,是作为一个 SOAP 的实现来让开发者通过它来构建自己的 Web Service(支持 Java 和 C+)。本项目中的建行模块就是通过WebService的Axis框架实现的。WebService在应用上有许多优点:(1) 跨防火墙的通信如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。举个例子,在应用程序里加入一个新页面,必须先建立好用户界面(Web页面),并在这个页面后面,包含相应商业逻辑的中间层组件,还要再建立至少一个ASP页面,用来接受用户输入的信息,调用中间层组件,把结果格式化为HTML形式,最后还要把“结果页”送回浏览器。要是客户端代码不再如此依赖于HTML表单,客户端的编程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030家政O2O平台流量获取成本与变现效率比较研究报告
- 2026届河北省保定市曲阳县第一中学化学高三上期中联考试题含解析
- 心态责任心执行力课件
- 面向2025年的跨文化交流能力培养在国际化教育中的创新路径研究报告
- 2025年幼儿园3一6岁发展指南试题及答案幼儿园指南试题及答案
- 2025年眼科学习题与答案
- 2025年手术室练习试题(含答案)
- 2025年计算机四级网络工程师题库及答案
- 宏观研究面试题库精 编
- 不良资产处置行业市场格局创新模式与绿色金融报告
- 中医急症诊疗方案(3篇)
- 2025年上海市高考化学试卷(含答案)
- 《人工智能概论-面向通识课程》全套教学课件
- 三区人才面试题及答案大全
- 物业服务礼仪培训大纲
- 2025年舞台灯光设备项目市场调查研究报告
- 防火钢质门、卷帘门项目可行性研究报告-商业计划书
- 普查保密协议书
- 《初学者指南:美术基础课件》
- 冶金矿山采矿设计规范
- 配送车辆违章管理制度
评论
0/150
提交评论