收到特定的错误代码时如何处理DataPower策略规则中的错误

时间:2019-05-22 07:37:46

标签: ibm-datapower

我在策略中有一条规则,我想处理一条错误消息。例如,如果我收到错误代码“ 0x80e003aa”,则停止规则并编写输入“ code13”(某些错误代码)。我知道存在“错误操作中”,但某些操作无效。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您将需要确保捕获规则中的第一个错误。设置调试登录并产生错误。在日志中,您(很可能)会看到许多错误,然后复制其中第一个错误代码。

在“处理策略”中创建一个新的“匹配”规则,并将其设置为与“错误代码”匹配。在选择列表中,您可以选择错误代码,找到您复制的代码并将其添加。如果您在列表中找不到该代码,则它不是可以捕获的“主要”错误,您将不得不添加另一个错误代码。 如果不确定,只需将所有代码添加到“匹配操作”中即可(可以有多个)。

接下来,请确保您的规则是“错误规则”,并且之前没有放置其他错误规则(在规则列表中位于较高位置)。 DataPower仅执行一个错误规则,因此您需要确保它们按顺序排列。

另一种解决方案是添加带有“全部匹配”(*)匹配操作的新错误规则,并在其中使用GatewayScript或XSLT来检查代码并采取适当的操作,例如对于GWS:

// get the service metadata, i.e. the service var's
var sm = require ('service-metadata');

console.log(JSON.stringify(sm));
console.log(JSON.stringify(sm).slice(1566));
console.log(sm.errorSubcode);

if (sm.errorSubcode === '0x01d30003') {
  // This is a XSD schema validation error
  const err = sm.errorMessage.slice(sm.errorMessage.indexOf('/validate: ') + 10).trim();
  session.output.write(err);
} else {
  session.output.write(sm.errorMessage);
}