如何强制 Mediator 接受警笛内容

How to force Mediator to accept siren content

我有一个 REST 服务,它使用带有警笛内容的超媒体。 为了可用,客户端必须发送具有此值的接受 header :

application/vnd.siren+json

但是当我通过 Centrasite 将此服务虚拟化到 Mediator 包时,请求被拒绝。 当我使用仅接受 application/json 请求的接受时,但内容没有超媒体链接,因此无法使用。

我已经像这样更改了 Mediator 包资源中的 content-types.xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content-types xmlns="http://contentTypes.mediator.softwareag">
    <!-- Please enter the custom content-types
    <content-type type="xml">
            <name></name>
    </content-type>
    -->
    <content-type type="json">
            <name>application/vnd.siren+json</name>
    </content-type>
</content-types>

有了这个,现在接受带有警报器的请求,但没有超媒体内容(与 application/json 一样)

我如何强制 Mediator 接受此接受 header 并将其传输到端点而不更改它?

我使用带有 IS_9.7_Core_Fix19 的 webMethods Integration Server 9.7 和 Mediator 9.7.0.0017-0490

更新:

查看端点日志后,header 和响应似乎是正确的,但响应被中介截断了。 json 响应中删除了所有警笛内容,但响应仍然格式正确,但不完整,即使在调试模式下也没有任何登录 Mediator。

是 Mediator 问题、轴一问题还是其他问题?

在 Empower 知识库中搜索后,我发现了这个:

If the Content-Type header field specifies a content type for which no content
handler has been registered, Integration Server uses the default content 
handler (ContentHandler_Default), which treats the content as text/html.

这解释了为什么我必须更改 WmMediator 包的配置目录中的 content-types.xml 文件。

其次,我发现了这个问题:

SMGME-6616 (Fix 18)
MultiRoot node elements of JSON type are not passed for a custom content type.
When a custom content type for JSON is executed and a multi root node 
element is passed as a request for virtual rest API, then only the first 
node is passed to the backend native API. This issue is resolved.

这似乎很好地解释了为什么我没有回复的全部内容,因为使用 Siren 超媒体格式,我们在 json 消息中有多个根。

所以,除了打补丁没有解决办法。

编辑:

打补丁后问题解决