You need to enable JavaScript to run this app. WSO2 ESB 7.1.0二进制响应被截断为375B问题如何解决
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 ESB 7.1.0二进制响应被截断为375B问题如何解决

截断原因

你遇到的375B固定截断来自WSO2底层Axiom XML解析器的默认单文本节点长度限制,当你把大段BASE64直接作为文本节点写入payloadFactory的XML结构中时,超出长度的部分会被解析器直接截断,转成二进制后刚好对应375B的有效内容。这个阈值是可配置的。

解决步骤

1. 调整XML节点长度限制

在WSO2 ESB安装目录下的conf/axis2/axis2.xml配置文件中添加如下参数,调整单文本节点最大长度(示例为10MB,可按需调整):

<parameter name="org.apache.axiom.om.maxTextNodeSize">10485760</parameter>

修改后重启服务生效。

2. 优化二进制响应构造逻辑

你原有的序列存在两个问题:一是直接把BASE64硬编码到payloadFactory的format标签中容易触发XML节点截断,二是没有显式设置Content-Length头,关闭分块传输后传输层会按默认缓冲区大小截断内容。
优化后的序列示例如下:

<!-- 先将BASE64内容存入上下文属性,避免XML节点截断 -->
<property name="pdfBase64" scope="default" type="STRING" value="你的实际PDF文件BASE64编码"/>

<payloadFactory description="构建二进制负载" media-type="xml">
  <format>
    <ns:binary xmlns:ns="http://ws.apache.org/commons/ns/payload">$1</ns:binary>
  </format>
  <args>
    <arg expression="$ctx:pdfBase64"/>
  </args>
</payloadFactory>

<script language="js"><![CDATA[
var binaryNode = mc.getEnvelope().getBody().getFirstElement().getFirstOMChild();  
binaryNode.setBinary(true);
]]></script>

<!-- 配置传输属性 -->
<property name="TRANSPORT_HEADERS" scope="axis2" action="remove"/>
<property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
<property name="messageType" scope="axis2" type="STRING" value="application/octet-stream"/>
<property name="ContentType" scope="axis2" type="STRING" value="application/pdf"/>
<!-- 显式计算并设置Content-Length,避免传输截断 -->
<property name="Content-Length" scope="transport" expression="fn:string-length(base64Decode($ctx:pdfBase64))"/>

<header name="Content-Disposition" scope="transport" value="attachment; filename=&quot;raport.pdf&quot;"/>

3. 调整消息格式化器配置

将application/pdf对应的格式化器替换为BinaryFormatter,稳定性优于ExpandingMessageFormatter,修改conf/axis2/axis2.xml中的messageFormatters配置:

<messageFormatter contentType="application/pdf" class="org.apache.axis2.format.BinaryFormatter"/>

如果需要兼容其他二进制格式,可保留application/octet-stream对应的ExpandingMessageFormatter配置。

内容的提问来源于stack exchange,提问作者Marcin Orliński

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 10:36:02