PE框架发送报文,适用于PE及VX技术

步骤:

1.在action中使用发送报文,要指定报文在router端的交易名称

2.如果使用supe.execute(context)来发送,不需要第一步

3.配置从网银到router的xml报文

4.根据网银交易名匹配到router端交易名(这里对应的是第2步,如果用第一步的方式,可以跳过)

5.在router端配置交易,记住命名空间,交易名等要一致

6.配置报文编码,转换为主机的编码(交易名对应的数字)

7.配置router到主机的报文

8.配置主机返回router的报文

9.配置router返回网银的报文

发送报文配置xml,以查询卡信息为例(CifActsQryByLHW):

1.在Action中调用这句,就是用一个map来装载返回的报文内容

toHostMap.put(Constants.HOST_TRANSACTION_CODE,"pquery.CifActsQryByLHW");

双引号中的是在router端调用的交易名称,前半部为命名空间(同时也是报文的名称)

//还要使用这个来发送

Map resultMap=(Map)this.issueHostTrs(context,map);

使用这种方式发送报文,由于指定了router端的交易名称,所以不需要在resolver.xml中配置

也可以使用super.execute(context)来发送报文,这样上面两步都不用了,不过一样要引入父类parent="BaseQueryAction",使用这种方式发送报文,报文交易名必须在common包下的resolver.xml中配置(否则不知道该调用router端的那个交易)

2.配置从网银到路由的报文fsegquery.CifActsQryByLHW.xml,放在当前交易包下,

config.outbound.csxml.packets

<segment>

<xmlTag><String name="CardNo" ></String></xmlTag>

<xmlTag><Stringname="PageNo"defaultValue="0001"></String>

</xmlTag>

</segment>

格式就是fseg+报文名称.xml

3.在resolver.xml中配置报文名称所对应的交易id,在router端还要调用这个交易去发报文到前置。该xml在网银端common包下(如果在第1步中指定了交易名称,此步可以跳过,它其实是根据网银交易名匹配router到主机的交易名)

<param name="CifActsQryByLHW">pquery.CifActsQryByLHW</param>

前面的name就是网银交易名称,这个一般router中的和要发报文的交易都是相同的,后面的是报文名称,同时也是在router中的交易名称,pquery为命名空间

4.在router包的xml内定义交易,就是上面的那个id,注意namespace和transaction要与匹配的一致

<transaction id="CifActsQryByLHW" template="publicQueryTemplate">

<actions>

<ref name="action">CifActsQryByCardQueryAction</ref>

</actions>

</transaction>

这里是在router中定义的,一般查询就是用publicQueryTemplate,有操作的用publicTwoPhaseTrsTemplate


5.配置从路由到前置(主机)的报文fsegpquery.CifActsQryByLHW.xml,放在router包,

config.pquery.outbound.gdrcu.packets

<segment>

<xmlTag tagName="card_no"><String name="CardNo" ></String>

</xmlTag>

<xmlTag tagName="page_no"><String name="PageNo" ></String>

</xmlTag>

</segment>

格式就是fseg+报文名称.xml

6.在router端定义报文对应的接口名称,就是你所发报文与接口的对应关系,因为主机使用的是自己的编码,而不是网银的编码

<param name="pquery.CifActsQryByLHW">11130004</param>

7.配置前置到路由router的返回报文pquery.CifActsQryByLHW.xml,放在

Rotuer端

(经过第6步的转换,这里自动由p11130004.xml变为pquery.CifActsQryByLHW.xml)

<mapAlias name="parse">

<elementAlias name="Currency" alias="curreny"  />

<elementAlias name="AcctState" alias="acct_status"/>

</mapAlias>

格式就是P+报文名称.xml

如果返回的是list,如下:

<mapAlias name="parse">

<mapAlias name="List" alias="list" >

<elementAlias name="AcNo" alias="acct_no"  />

</mapAlias>

</mapAlias>

8.配置路由router到网银的返回报文fsegpquery.CifActsQryByLHW.xml,放在

Router端config.inbound.csxml.packets

<segment>

<xmlTag>

<idxField name="List"  >

<Group name="Map">

<xmlTag><String name="AcNo"></String></xmlTag>

<xmlTag><String name="AcFlag"></String></xmlTag>

</Group>

</idxField>

</xmlTag>

</segment>

格式就是fseg+报文名称.xml

如果返回的是map,不是list,那么如下写:

<segment>

<xmlTag><String name="AcctNo" ></String></xmlTag>

<xmlTag><String name="AcName" ></String></xmlTag>

</segment>

PE框架学习之道:PE框架——发送报文流程的更多相关文章

  1. PE文件学习系列三-PE头详解

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙 ...

  2. 框架学习之道:PE框架简介

    1.PE框架开发新功能所需的部分 2.PE框架工作流程(重要) 首先根据<transcation>中的id号,找到模板(template),然后再根据模板找到责任链(chain),一旦确认 ...

  3. PE框架学习之道:PE框架——style的配置

    1.在style.xml中定义style     <style id="NumberStyle"> <setting> <param name=&qu ...

  4. Django框架学习——python模拟Django框架(转载)

    原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ...

  5. WebX框架学习笔记之二----框架搭建及请求的发起和处理

    框架搭建 执行环境:windows.maven 执行步骤: 1.新建一个目录,例如:D:\workspace.注意在盘符目录下是无法执行成功的. 2.执行如下命令: mvn archetype:gen ...

  6. Spring框架学习之--搭建spring框架

    此文介绍搭建一个最最简单的spring框架的步骤 一.创建一个maven项目 二.在pom.xml文件中添加依赖导入spring框架运行需要的相关jar包 注意:在引入jar包之后会出现org.jun ...

  7. Java SpringMVC框架学习(三)springMVC的执行流程

    具体执行逻辑如下: 浏览器提交请求到中央调度器. 中央调度器将请求转给处理器映射器. 处理器映射器根据请求, 找到请求对应的处理器, 并将其封装为处理器执行链返回给中央调度器. 中央调度器根据处理器执 ...

  8. [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装

    1.先下载Composer-Setup.exe,下载地址:下载Composer .会自动搜索PHP.exe的安装路径,如果没有,就手动找到php路径下的php.exe. 2.在PHP目录下,打开php ...

  9. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

随机推荐

  1. smarty函数-转载

    Smarty常用函数 2009-08-13 14:05:55|  分类: Php |举报 |字号 订阅   1 .include_once语句: 引用文件路径,路径必需正确.   eg:include ...

  2. poj 1949 Chores 最长路

    题目链接 求出最长路..... #include <iostream> #include <vector> #include <cstdio> #include & ...

  3. Ubuntu Server修改IP、DNS、hosts

    本文记录下Ubuntu Server 16.04修改IP.DNS.hosts的方法 -------- 1. Ubuntu Server 修改IP sudo vi /etc/network/interf ...

  4. QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)

    如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开 ...

  5. 在 Windows Azure 上部署预配置 Oracle VM

    Microsoft 和 Oracle 近期宣布建立战略合作伙伴关系,基于此,我们将通过 Windows Azure 镜像库推出多种常用的 Oracle 软件配置.即日起,客户可以在 Windows S ...

  6. BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊(动态树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2002 [题目大意] 给出一片森林,操作允许更改一个节点的父亲,查询一个节点的深度. [ ...

  7. 一步一步学数据结构之1--n(通用树)

    今天来看大家介绍树,树是一种非线性的数据结构,树是由n个结点组成的有限集合,如果n=0,称为空树:如果n>0,则:有一个特定的称之为根的结点,它只有直接后继,但没有直接前驱:除根以外的其他结点划 ...

  8. Win7搭建Django开发环境

    1.官网下载并安装python 2.7.5 2.配置python 环境变量 在Path中加入python安装目录: PATH=PATH;c:\python26 在PATHEXT中加入以下变量,可以直接 ...

  9. Amazon S3 API

    一.概述 Amazon s3,全称为Amazon Simple Storage  Service.EC2和S3是Amazon最早推出的两项云服务. REST,这也是比较火的一种Web服务架构.简单来说 ...

  10. linux之iptable案例

    转自:http://blog.csdn.net/bill_lee_sh_cn/article/details/4401896 1.一对一流量完全DNAT 首先说一下网络环境,普通主机一台做防火墙用,网 ...