云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_云主机免费空间_学生机

小七 141 0

大家好,

在这篇文章中,我想讨论利用发送方通信通道上的自定义EJB模块,捕捉并返回到发送方系统SAP PI中同步场景中可能发生的不同类型的异常的机会。

为了更好地理解,我们需要该模块做什么,让我们看一个特定的例子:发送方系统同步调用sappisoap服务,然后sappi调用接收方系统,比如某个数据库(JDBC接收方)并将响应返回给原始发送方系统。发送方系统对此服务的要求之一可能是:无论数据库调用成功还是由于某种原因在执行集成场景期间发生异常,永久免费自助建站软件,它都希望响应消息采用一种严格的格式。可能是发送方系统希望在出现异常或错误的情况下用值填充某些元素。

示例:发送方系统发送带有CompanyID的SOAP请求,希望从接收方系统获取有关该公司的一些额外信息。

如果调用成功,来自数据库的响应消息如下:

注意响应消息有和元素:如果成功的DB调用,超级淘客,则在响应消息映射中填充"0",并且为空。但是,如果在这个场景的执行过程中发生了某种类型的错误,发送方系统希望中填充某种错误代码,中填充错误描述。

现在,假设数据库服务器不可用,或者接收方通信通道中使用的凭据已被锁定的用户。在这种情况下,发送方系统将接收什么?响应消息大致如下(注意:如果是HTTP\ AAE或REST发送方适配器,响应消息看起来略有不同,但没有太大帮助):

如我们所见,如果在通过集成引擎管道处理消息时发生异常,客户端系统将收到响应消息具有严格定义的结构中的错误堆栈跟踪。响应操作映射被忽略,没有标准的方法来更改SAP定义的适配器异常消息结构。

为了克服这个问题,我开发了自定义EJB模块,它可以用于支持同步通信的发送方通信通道(SOAP、REST、HTTP适配器)。如果通过集成引擎管道成功处理消息,客户端系统将接收到来自接收方系统的响应消息–来自接收方系统的响应消息的标准处理将不受此自定义模块的影响。但是,如果在集成引擎管道执行的任何阶段(接收器确定、操作映射、接收器系统调用等)发生异常,定制模块将捕获该异常并调用特定的操作映射,我们将把该名称作为该模块的参数提交。原始消息将被处理到此操作映射(BI或AM版本取决于模块参数值)和异常描述(如果需要)。此操作映射的执行结果将返回到发送方系统,啥叫大数据,因此,我们可以为管道消息处理过程中发生异常的情况定义此响应消息的结构。

准备部署的EAR项目可以通过以下链接从github存储库下载:

https://github.com/IAlekseev91/customModulePI

要使用此模块,您必须删除中的标准模块条目发送方通信信道中"模块"选项卡上的处理顺序。用localejbs/CustomAdapterBean完全替换标准模块条目(在许多情况下是CallSapAdapter)。如果您想或需要使用标准作为默认模块参数,您也可以将它们与CustomAdapterBean一起使用。

我也建议您对此自定义模块使用"cab"键,因为它将在消息审核日志和通信通道监视器处理日志中生成以该前缀开头的条目。

带有可用于CustomAdapterBean模块的参数的表:

如果SAP PI/PO如果使用includes sapweb Dispatcher,则需要将sapwd的地址提交到此自定义模块参数。为此,您需要编辑应用程序设置:主持人:港口/nwa->配置->基础设施->应用程序模块。在overview选项卡上,您可以按名称"mo"筛选应用程序duleCustomAdapterEJB.jar文件"然后在"Environment and References"(环境和参考)选项卡上输入SAP web Dispatcher的网址作为参数"addressSAPWD"的值。

让我们使用CustomAdapterBean做一个考虑上述所有内容的示例。

模块的参数如下所示这:

在enterpriseservicebuilder操作映射om\u getCompany\u ErrorHandling中已经创建。在通过集成引擎管道处理消息时,自定义模块在捕获异常时将调用它。源操作将是发送方服务接口原始操作,对于目标操作,您必须有意识地创建服务接口(我们称之为*\u errorHandling),并将您希望发送方系统在通过管道处理消息期间遇到异常时接收的请求结构设置为请求结构(在许多情况下,它将与原始发送方服务接口操作响应相同)结构)。

只要发送方服务接口操作是同步的,目标操作也必须是同步的。同时,响应结构没有任何意义,永远不会使用–操作映射将忽略它。

只需为请求设置映射程序,请求将为原始发送方服务接口操作创建目标响应结构,并由发送方系统接收。在我们的示例中,我们可以使用下一种类型的消息映射:

元素我们将填充表示消息处理期间异常的数字值。

元素我们将填充与原始请求消息中元素的值串联的错误描述文本。