[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类型的 ...
随机推荐
- [Postman]历史(8)
邮递员将您发送的所有请求存储在左侧边栏的“历史记录”视图中.您可以使用历史记录快速尝试各种请求,而不必浪费时间从头开始构建请求.您还可以通过单击请求名称来加载先前的请求. 如果您创建了一个帐户并登录P ...
- IDEA新手使用教程(详解)
IDEA从下载安装到使用,手把手教你 一.IDEA的下载 IDEA下载地址:https://www.jetbrains.com/idea/download/#section=windows IDEA ...
- 在ubuntu下搜索文件的几种方式
1.whereis 文件名 特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的查找都用这条命令. 2. ...
- Spring Data Redis 详解及实战一文搞定
SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问Redis的功能.它提供了与商店互动的低级别和高级别抽象,使用户免受 ...
- 【ABP框架系列学习】N层架构(3)
目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed ...
- MapReduce实现ReduceSideJoin操作
本文转载于:http://blog.csdn.net/xyilu/article/details/8996204 一.准备两张表以及对应的数据 (1)m_ys_lab_jointest_a(以下简称表 ...
- Pulsar Consumer实现介绍
Pulsar-Consumer “Pulsar is a distributed pub-sub messaging platform with a very flexible messaging m ...
- Hibernate实体类注解中如何忽略某些字段的映射
使用注解 @Transient在该字段上 例如: @Transient private int name: 这样在映射数据表和对象关系时候就不会报在表中不存在该字段的问题:
- python练习五—简单web应用
配置apache 我以前web开发基本都是基于java平台的,比如tomcat,servlet等等,由tomcat接收http请求,然后交给servlet处理,servlet处理完成以后把返回结果交给 ...
- python练习二—画幅好画
这个练习相对简单,主要是对reportlab库的学习调用,看代码 #! /usr/bin/env pyton # -*- coding=utf-8 -*- from reportlab.lib imp ...