对 JSON 请求问题进行故障诊断

如果 CICS® 拒绝 JSON (无论是作为 Web Service 的输入消息还是与可链接接口配合使用以变换 JSON 时) ,那么 JSON 可能无效或不符合模式。

关于此任务

如果 CICS 迂到由 Web Service 请求者或应用程序提供的 JSON 问题,那么将返回错误消息以及问题的详细信息。 当 CICS 充当 Web Service 提供程序时,会将错误消息作为 JSON 响应返回到客户机应用程序。 有关更多信息,请参阅 返回到客户机的错误响应。 当应用程序调用可链接接口以变换 JSON 时,将在 DFHJSON-ERROR 容器中返回错误代码,并在 DFHJSON-ERRORMSG 容器中返回详细消息。 有关更多信息,请参阅 JSON 变换器可链接接口。 在这两种情况下,故障诊断步骤相同,并且取决于错误类型。

过程

  • 检查 JSON 是否符合 CICS施加的限制。 有关更多信息,请参阅 JSON Web Service 限制
  • 如果发生 JSON 解析错误,请检查 JSON 格式是否正确。 错误消息提供了问题的详细信息,例如:

    "Expected a ',' or '}' at character 44 of {"inquireCatalogRequest": "myData }

    您可以使用工具来验证 JSON 语法,例如 JSONLint
  • 如果 CICS 在尝试将 JSON 映射到应用程序数据时检测到结构错误,那么将发出 DFHPI1007 消息以提供错误的详细信息。
    例如:

    DFHPI1007 04/19/2013 15:14:42 IYK2ZKE1 00112 JSON to data transformation failed because of incorrect input (UNDEFINED_ELEMENT Operation) for WEBSERVICE SimpleMappings.

    检查 JSON 是否包含您提供给 DFHJS2LS的模式所描述的 JSON 对象和属性,或者是否包含由 DFHLS2JS生成的 JSON 对象和属性。 您可以使用工具来验证 JSON 是否符合模式。

  • 如果未发生错误,但应用程序接收到某些字段的空数据,请检查是否提供了相应的 JSON。 CICS 将不会检测到缺少模式所描述的 JSON 属性。 您可以使用 JSON 验证工具来检查此情况,如前所述。
  • 迂到内部服务器错误。
    Internal Server Error
    
    CICS TS: Unhandled Pipeline Error
    
    Release: 670
    在浏览器中,检查消息 DFHSJ1006。 请检查 JVMServer 是否存在并且未禁用。
  • 在某些情况下。 CICS 在内部处理期间向 JSON 请求或响应添加包装器元素。 这将永远不会对应用程序可见,但有时会出现在错误消息中。
    例如:
    "Error obtaining parser from data source:Expected a ':' 
    after a key at character 25 of {\"DFHWrapper\": { l2jb01c\":"...
    在这些情况下,在确定错误原因时应忽略 DFHWrapper 元素。

下一步操作

更正 JSON 后,请重新运行应用程序。