Integrator5.5-渠道接入Integrator平台架构主要包含内容:yIntegrator接入架构y通讯接入y运行调度y报文拆组包y服务识别y报文映射y插件y服务执行y通讯接出ySession管理y异常处理Integrator-渠道接入通讯接入配置通讯接入配置包含两部分:通讯接入组件以及通讯接入适配器9通讯接入组件通讯接入组件的配置文件位于framworkdist/actions/connectorName/的目录下,其中connectorName为接入组件,可以根据需要命名,该部分需要配置的配置文件包括:component.xml,此配置文件定义了接入组件的名称及实现类。connector.xml,此配置文件定义了接入组件中需要的配置信息。urn-conf.xml,组件加载配置文件注:connector.xml中将会配置通讯接入后使用的运行调度器,数据加载到AdapterConfig中9渠道通讯接入协议通讯接入协议的配置文件位于framworkdist/channel/的目录下,该文件主要配置渠道接入协议实现类及接入ip、端口、接入和接出前进行处理的插件信息以及其他一些数据,该配置文件加载后保存在ConnectionConfig类中注:相同通讯协议配置一个配置文件中通讯接入配置加载实现通讯接入类图常用的通讯接入组件9TCP接入适配器—TcpConnectorcom.dcfs.integrator.channel.platform.adapter.impl.ConnectorImpl一般TCP/IP接入通讯适配器需要配置的扩展属性包括:mode,通讯模式,0代表短连接,1代表长连接commport,通讯端口maxbytes,缓冲区最大字节数dispatcher,调度组件名9HTTP接入通讯适配器—HTTPConnectorcom.dc.eai.adapter.http.HTTPConnectorHTTP接入通讯适配器,实际实现是一个HttpServlet。运行调度类图服务识别9服务识别用于针对拆解后的数据进行发往后台服务的识别,获取服务标识ID,用于下一步选择服务打拆包、数据映射、以及执行后台服务数据的配置,服务识别有两种识别方式:CompositeData和定长报文的识别。9服务识别组件的配置文件位于:frameworkdist\components\custom\identify9服务识别配置文件位于:frameworkdist\channel\identify服务识别-定长报文?xmlversion=1.0encoding=UTF-8?identify-configchannel-configchannel=as400message-headposition=0length=16remove=true/tranid=0700200000101mapping-id=0700200000101”service-id=esb_serviceencoding=UTF-8conditionposition=0length=12value=FMS001FMS001//tran/channel-config/identify-config注:message-config针对一个渠道进行设定,不需要针对每个交易报文进行设置渠道名称报文头的起始位置和长度,识别后是否需要去掉报文头。交易标识交易识别条件,识别服务识别码的起始位置、长度和值。服务执行标识数据映射标识服务识别-CompositeData?xmlversion=1.0encoding=UTF-8?identify-config!--电话银行--channel-configchannel=PHNmessage-headposition=0length=10remove=true/message-head!--注册客户(个人)身份验证--tranid=5100mapping-id=5100service-id=peopleidentitycheckencoding=UTF-8conditionposition=SYS_HEAD.MESSAGE_CODElength=4value=5100//tran/channel-config/identify-config注:其中的message-head和condition中的length无任何意义,可不进行配置服务识别类图报文拆组包该组件将Channel组件发送过来的报文拆包成ESB可以识别的CompositeData,并将ESB返回的报文组包成Channel可以识别的定长报文或XML9该组件提供的接口为:com.dcfs.integrator.channel.platform.convert.MessageConverter对外接口提供两个API:报文拆包CompositeDataPublicunpack(byte[]message)报文打包byte[]Publicpack(CompositeDatadata)说明返回值可见性方法9报文拆组部分使用Framework中的Channel组件进行改造,将渠道特殊处理改为拆包前、拆包后、组包前、组包后插件组进行处理,所有插件均实现其对应的插件接口.拆组包前的特殊处理插件配置文件位于:frameworkdist/channel/convert/目录下9默认实现为:com.dcfs.integrator.channel.platform.convert.impl.MessageConverterImpl配置文件位于:frameworkdist\components\custom\convert\目录下报文拆组包类图拆组包配置?xmlversion=1.0encoding=UTF-8?package-configtranid=as400channel=as400encoding=UTF-8requestpackage-modename=sequence/package/package/requestresponsepackage-modename=sequence/package/package/responseerrorpackage-modename=sequence/packagestructname=SYS_HEADfieldname=PackTypetype=stringstore-mode=strebcdlength=2/fieldname=SubTCodetype=stringstore-mode=strebcdlength=8/fieldname=NextPacktype=stringstore-mode=strebcdlength=1/fieldname=DealFlagtype=stringstore-mode=strebcdlength=1//struct/package/error/tran/package-config拆组包模式配置拆组包所遵循的模式在配置文件/frameworkdist/shared/mode.xml中进行定义,如下所示:?xmlversion=1.0encoding=GB2312?mode-configpackage-mode!--标准xml格式报文的拆组包--modename=standardimpl-class-name=com.dc.eai.conv.packconv.StandardPackageConverter/!–定长报文的拆组包--modename=“sequenceimpl-class-name=com.dc.eai.conv.packconv.SequencePackageConverter/!--传统渠道拆组包-fts拆组包格式--modename=traditionalimpl-class-name=com.dc.eai.pack.TraditionalPackageConverter//package-modefield-store-modemodename=standardimpl-class-name=com.dc.eai.conv.fieldconv.StandardFieldConverter/modename=stringimpl-class-name=com.dc.eai.conv.fieldconv.StringFieldConverter/modename=doubleimpl-class-name=com.dc.eai.conv.fieldconv.StringFieldConverter/modename=packimpl-class-name=com.dc.eai.conv.fieldconv.PackDecimalFieldConverter/modename=zoneimpl-class-name=com.dc.eai.conv.fieldconv.ZoneDecimalFieldConverter/modename=withlengthimpl-class-name=com.dc.eai.conv.fieldconv.WithLengthFieldConverter/attributename=namevalue=length/attributename=typevalue=int/attributename=lengthvalue=4/attributename=scalevalue=0/attributename=storemodevalue=standard//field-store-mode/mode-config拆组包特殊处理9拆组包特殊处理可以通过插件实现,所执行的相关插件配置在文件:frameworkdist\channel\convert\package_plugins.xml中,注使用的插件必须在插件容器中已注册过9配置示例:?xmlversion=1.0encoding=UTF-8?package-pluginstranid=as400before-unpack/before-unpackafter-unpackpluginmodule=after_unpackid=test01sequence=1//after-unpackbefore-packpluginmodule=before_packid=test02sequence=1/pluginmodule=before_packid=test03sequence=2//before-packafter-pack/after-pack/tran/package-plugins数据映射9将数据映射为后台服务所需要的数据结构9数据映射组件实现类配置文件位于:frameworkdist\components\custom\mapping9数据映射配置文件位于:frameworkdist\channel\mapping9数据映射可配置为静态数据、表达式、静态方法调用。数据映射-配置文件结构说明映射目标的表达式否target映射源的表达式否source该节点定义一个数组结构的规则项。否sarray映射目标的表达式是target映射源的表达式是source该节点定义了错误报文映射规则是error-mapping该节点定义了返回报文映射规则是response-mapping该节点定义了请求报文映射规则是request-mapping该属性标识了渠道是channel该节点定义了一组映射规则。是item该属性唯一标识一个配置文件是id该节点是配置文件的根节点是tran备注