[IB]Integration Broker 是如何处理传入的请求(Part 2)
让我们讨论一下集成代理如何处理传入的请求。可以先阅读(理解PeopleSoft集成代理 Part1)。
当PeopleSoft集成代理接收传入请求时,会发生一系列事件。
当侦听连接器(Listening Connector)接收到请求时,连接器所做的第一件事就是将请求写入到网关日志文件。请求是完全按照接收的方式编写的。这有助于在规范化发生之前捕获消息的发送。
然后,连接器尝试用收到的消息填充内部请求消息类。传入消息有2个部分——凭证和mesage body。值得注意的是,没有凭证的消息无法处理。如果网关接收到这样的消息,将会出现错误,并将错误消息返回给请求者。在此步骤中不发生解析——只是验证。
接下来,消息是PeopleSoft Target Connector来操作。这个连接器有两个主要职责:它将消息序列化为一个字符串,并通过与应用服务器的一个jolt连接发送该字符串。网关和应用服务器之间的所有通信都是通过使用多用途Internet邮件扩展(MIME)消息完成的。通常,MIME消息只有两个部分——消息正文和XML格式的凭证。
PeopleSoft Target Connector以标准格式转换消息,这样才能被网关和应用程序服务器所理解。所有消息最终都必须解析成这种格式,然后才能将其发送到应用服务器进行处理,否则appserver将无法理解它们。这种格式有效地将应用服务器与网关支持的协议隔离开来。
一旦MIME消息被构建,它就被写入到网关日志。然后将MIME响应解析回网关请求对象,然后返回到倾听连接器。
最后,连接器从integration properties file中查找jolt连接属性,并尝试将MIME发送到应用服务器。如果这些属性没有正确设置,网关将无法发送请求。
要记住的一点是,即使对appserver的MIME请求可能出现在网关日志文件中,实际的请求可能还没有到达应用服务器,因为日志条目是在消息发送之前写的。如果发生通信错误,该条目将仍然存在于日志文件中。但是,如果出现这种情况,将抛出异常,也将创建一个错误日志条目。
当应用服务器接收MIME请求时,将解析消息并用于构建请求对象。假定消息没有发生错误,应用程序服务器必须在实际处理请求之前预先处理消息。预处理包括:
- 根据配置的身份验证方案验证消息。如果请求失败身份验证,则返回一个错误。
确定是否有与节点事务表中的请求对应的事务。除了Ping消息,所有传入的消息都必须解析为该表中唯一的条目。如果不能为请求找到合适的事务,则发生错误。
确定要调用的消息处理程序。目前,集成代理支持三种消息类型:Ping、同步和异步。消息类型确定要调用的处理程序代码。同步消息传递到特定于sync的代码,而async消息传递给发布/订阅subsytem。
一旦消息传递给它们各自的处理程序,进一步的处理将由数据和特定于特定系统的人员决定。异步请求将被发布,订阅PeopleCode将被执行。同步消息可以调用PeopleCode,或者在集线器配置的情况下,请求可以立即路由到另一个外部系统。
8. 不管请求是如何处理的,响应消息必须由应用服务器返回到相同执行线程中的网关。网关与应用服务器之间的连接本质上是同步的,独立于交换的消息的类型。当网关向应用服务器发送请求时,它期望并必须得到响应。
在同步消息的情况下,响应的生成被请求的处理阻塞。无法生成响应,直到消息运行完成为止。在接收响应时,可能会有一个明显的延迟,这取决于PeopleCode是否正在运行,或者请求消息是否被从代理发送到外部系统以进行额外处理。
不像同步请求,在异步请求的情况下没有阻塞。当请求被写入发布队列时,将生成一个异步请求的响应。因此,对于异步请求生成的响应并不是最严格意义上的响应。这样的回答应该被认为是“pub / sub系统接收到消息”的响应。收到这样的响应并不能保证任何适用的订阅人员都成功运行了。
响应消息被应用服务器转换为MIME标准,并返回到网关。
9.一旦MIME PeopleSoft Target Connector收到响应,它是日志文件写入到网关。然后将MIME响应解析回网关请求对象,然后返回到ListeningConnector。
10. reponse对象被返回到ListeningConnector,响应被映射到一个响应给定协议的响应。从ListeningConnector的角度来看,请求消息的处理是同步进行的。一个请求被一个ListeningConnector接收,然后将其覆盖到合适的格式,对网关进行阻塞调用,以处理消息,并最终在执行的相同线程中得到响应。
如果感到对您有帮助没准儿你就会赞赏,iOS 专用赞赏通道:
[IB]Integration Broker 是如何处理传入的请求(Part 2)的更多相关文章
- 理解PeopleSoft集成代理(Integration Broker)-第1部分
PeopleSoft 集成代理对于那些刚开始开发PeopleSoft的工程师来说是模糊的,因此,本文的目的是帮助哪些想要了解Peoplesoft集成代理的人. 介绍PeopleSoft集成代理 peo ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- StaticFileMiddleware中间件如何处理针对文件请求
StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的 ...
- IIS 是如何处理 ASP.NET 请求的
#main{ width:1250px; } #mainContent{ width:915px } img#imgTop{ max-width:850px; } Web 服务器 VS Web 应用程 ...
- 根据传入url请求,返回json字符串
/** * 根据传入url请求,返回json字符串 * @param url * @return * @throws UnsupportedEncodingException */ public st ...
- IIS是如何处理ASP.NET请求的
每次服务器接受到请求,都要先经IIS处理.这不是一篇描述ASP.NE生命周期的文章,仅仅是关于IIS操作的.在我们开始之前,先了解这些会有助于对全文的理解,同时欢迎反馈和建议. 什么是Web Serv ...
- [转载]LoadRunner如何处理AJAX异步请求
最近在网上经常有人问“LoadRunner脚本回放成功,但数据没有写入数据库,这是什么原因”,记得以前的同事也遇到过相同的问题,再次将解决方法贴出来,希望能帮助大家. 相信大家在做测试的过程中,特别是 ...
- 记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)
在第六目把主函数写好了,先来运行一下主函数 从截图中可以看到,请求参数打印出来了,和excel中填写的一致 但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中 ...
- spring mvc后台如何处理ajax的请求,并返回json
spring mvc中有一个注解:@ResponseBody,把这个注解放到ajax请求对应的@RequestMapping(xxx)方法上,在方法体内部,把要返回的json赋给一个String类型的 ...
随机推荐
- 神经网络架构PYTORCH-初相识(3W)
who? Python是基于Torch的一种使用Python作为开发语言的开源机器学习库.主要是应用领域是在自然语言的处理和图像的识别上.它主要的开发者是Facebook人工智能研究院(FAIR)团队 ...
- 什么 是JavaScript中的字符串类型之间的转换问题详解? 部分4
字符串类型 单双引号都可以!建议使用单引号!(本人建议:个人觉得单个字符串更利于网页优化@特别地方特别处理!); 判断字符串的长度获取方式:变量名.length html中转义符: < < ...
- Kubernetes 中的核心组件与基本对象概述
Kubernetes 是 Google 基于 Borg 开源的容器编排调度,用于管理容器集群自动化部署.扩容以及运维的开源平台.作为云原生计算基金会 CNCF(Cloud Native Computi ...
- Elasticsearch基本概念及核心配置文件详解
Elasticsearch5.X,下列的是Elasticsearch2.X系类配置,其实很多配置都是相互兼容的 1. 配置文件 config/elasticsearch.yml 主配置文件 confi ...
- ITP项目:一期版本分享
摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 写代码和练书法一样,要坚持.昨晚的提笔留下. 一.项目小结: 项目经历了 ...
- systemctl enable docker.service
[root@dingyingsi ~]# systemctl start docker.service [root@dingyingsi ~]# systemctl enable docker.ser ...
- T4代码生成器
最近用MVC时业务上需要新增不同类型的视图页面,实际上页面排版什么的都差不多,只是内容有所不同,但是不能使用同一个视图. 想到了用T4代码生成器完成,之前就有听说过这个好东西,但是一直没有深入研究.借 ...
- Resource Agent:LSB和OCF
1.简介 heartbeat和pacemaker都支持三种资源代理:传统的haresources脚本(/etc/ha.d/resource.d).符合LSB规范的脚本(/etc/init.d)以及OC ...
- Python中return self的用法
在Python中,有些开源项目中的方法返回结果为self. 对于不熟悉这种用法的读者来说,这无疑使人困扰,本文的目的就是给出这种语法的一个解释,并且给出几个例子. 在Python中,retur ...
- IDEA更换主题
更换IDEA主题只需要3步 1. 下载主题 在主题网站上IDEA Color Themes 上浏览喜欢的主题并下载该主题.(如果网址有变更,google IDEA themes即可.) 2. 导入主 ...