JPos学习
基于JPos的消息交换系统
消息交换系统需求解读
消息交换系统不不是一个具体的业务系统,而是业务系统的运转的基础框架;
他的运转是体现在报文交换上的;
要定义一个可被不同业务系统使用的报文规范;
报文格式
报文内容参考ISO8583(87版),传输使用XML形式。为不和标准冲突,目前吧自定义域放在87版的自定义域里。
具体定义可参考schema.xls。
系统运转机制
基于JPos的消息交换系统是一个自管理的服务框架。
JPos作为消息平台十分灵活,为统一流程我们将设计一套网银专用的消息交换机制。
系统将建立3个层次,接入层、业务层、收单链路层;
每个层都是一或多个平等的组件,相互间可以通过Socket调用;
- 一个标准的组件由下列几个模块组成 
- 服务器的工作机制
 作为一个服务程序它在启动后将监控一个部署目录,不断扫描并发现所有的XML配置文件。如果发现有新增或改动,就会用XML生成组件并加载到注册机里。
- 消息交换流程
- 客户端把消息发送到组件服务
- 服务监听将接收到的消息转给入口通道
- 入口通道顺序执行被配置在这里的处理器
- 经过入口通道后消息被转给路由器
- 路由器根据配置域的为消息匹配一个出口通道
- 消息被转给出口通道
- 出口通道顺序执行配置在这里的处理器
- 消息被发送出去
 
配置文件
| <!-- 服务监听 --><serverclass="org.jpos.q2.iso.QServer"logger="Q2"name="module">    <attrname="port"type="java.lang.Integer">9031</attr>    <!-- 入口通道 -->    <channelclass="org.jpos.iso.channel.XMLChannel"logger="Q2"        packager="org.jpos.iso.packager.XMLPackager">        <!-- 入口通道内的处理器,如果不需要要也可以不配置 -->        <!-- 方向incoming:匹配消息进入,outgoing:匹配消息返回-->        <filterclass="com.example.jpos.client.TestFilter"direction="incoming">            <propertyname="fields"value="0 2 3"/>        </filter>    </channel>    <!-- 路由器 -->    <!-- 这里是根据32域匹配出口通道 -->    <request-listenerclass="org.jpos.apps.qsp.Q2Router"logger="Q2">        <routerswitch="${32}==01"type="mux"bounce="true"destination="out1"timeout="30000"/>        <routerswitch="${32}==02"type="mux"bounce="true"destination="out2"timeout="30000"/>    </request-listener></server> | 
| <!-- 出口通道需要用mux链接 --><muxclass="org.jpos.q2.iso.QMUX"logger="Q2"name="out1">    <in>receive</in>    <out>send</out></mux><channel-adaptorname="channeladaptor"    class="org.jpos.q2.iso.ChannelAdaptor"logger="Q2">    <!-- 出口通道 -->    <channelname="channel"class="org.jpos.iso.channel.XMLChannel"logger="Q2"packager="org.jpos.iso.packager.XMLPackager">        <propertyname="host"value="localhost"/>        <propertyname="port"value="9051"/>    </channel>    <in>send</in>    <out>receive</out>    <reconnect-delay>1000</reconnect-delay></channel-adaptor> | 
JPos学习的更多相关文章
- Atitit.收银系统模块架构attilax 总结
		Atitit.收银系统模块架构attilax 总结 1. 常规收银系统模块结构1 1.1. 商品管理1 1.2. 会员系统1 1.3. 报表系统1 1.4. 会员卡系统1 1.5. 库存管理1 2. ... 
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
		2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ... 
- Angular2学习笔记(1)
		Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ... 
- ABP入门系列(1)——学习Abp框架之实操演练
		作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ... 
- 消息队列——RabbitMQ学习笔记
		消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ... 
- js学习笔记:webpack基础入门(一)
		之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ... 
- Unity3d学习 制作地形
		这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ... 
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
		书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ... 
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
		2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ... 
随机推荐
- jQuery选择器之表单对象属性筛选选择器
			<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ... 
- 02html基础
			02_html 1.几个标签 1.1 meta标签 meta标签的属性有name和http-equiv,其中name属性用于描述网页,对应于content(网页内容). <meta name=& ... 
- 清理xcode缓存
			code版本:8.3.3 iOS版本:10.3.2 移除 Xcode 运行安装 APP 产生的缓存文件(DerivedData) 只要重新运行Xcode就一定会重新生成,而且会随着运行程序的增多,占用 ... 
- 8 Explicit Animations 指明的动画 笔记
			8 Explicit Animations 指明的动画 笔记 If you want something done right, do it yourself. 如果你想让事情做好,那就自动来 ... 
- Implicit Animations  默认动画 读书笔记
			Implicit Animations 默认动画 读书笔记 Do what I mean, not what I say. Edna Krabappel, The Simpsons Part I ... 
- ubuntu下安装redis扩展
			采用源码编译安装 下载 下载redis源码包到本地一个临时目录 git clone https://github.com/phpredis/phpredis.git 移动文件到合适目录 mv phpr ... 
- oracle的Hint
			与优化器模式相关的Hint 1 ALl_ROWS 让优化器启用CBO /*+ all_rows */ 2 first_rows(n) 让优化器启用CBO 模式,而且得到目标sql的执行计 ... 
- 主成分分析、因子分析、ICA(未完成)
			并且SVD分解也适用于一般的矩阵. 主成分分析可以简单的总结成一句话:数据的压缩和解释.常被用来寻找判断某种事物或现象的综合指标,并且给综合指标所包含的信息以适当的解释.在实际的应用过程中,主成分分析 ... 
- 初探node.js
			一.定义及优势 定义:Node.js是一个基于 Chrome V8 引擎 的 JavaScript 运行时,它以事件驱动为基础实现了非阻塞模型. 优势:由于Web场景下的大多数任务(静态资源读取.数据 ... 
- 使用VS自带WCF测试客户端
			打开VS自带WCF测试客户端 打开VS2015 开发人员命令提示 输入:wcftestclient,回车 提取wcftestclient 当然,可以看到VS2015 开发人员命令提示知道,当前路径在C ... 
