WSO2 ESB 未知错误代码 102511

标签 wso2 esb error-code

我最近在 Windows Server 2008 R2 上将 WSO2 ESB 升级到版本 4.7,并且在简单地将 SOAP 请求代理到端点时遇到了下一个错误:

在处理程序处于不一致状态时接收响应 REQUEST_HEAD

ERROR_CODE : 102511  
ERROR_MESSAGE : Error in Sender  
ERROR_DETAIL : Error in Sender  
ERROR_EXCEPTION : null 

事实是,文档中没有描述此错误代码,并且无一异常(exception),它的含义并不明显。我能找到的最接近的代码是 SND_INVALID_STATE = 102510,从源代码来看,该请求似乎带有无效的 header 。但并非所有请求都会失败。同一请求可能会随机通过或失败。我用 fiddler 记录了所有请求并重播它们。失败的人最终可以通过,反之亦然。在此之前,我在本地计算机(Windows 7)上部署并测试了新版本的 ESB,仅在冷启动时遇到此类错误。

重现它的最简单配置包括路径代理服务和地址端点。

代理服务配置:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="TestEP" transports="http" statistics="disable" trace="enable" startOnLoad="true">
   <target endpoint="TestEP">
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy>

地址端点描述

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="TestEP">
   <address uri="http://mydomain.test/SystemServices.asmx">
     <syn:suspendOnFailure>
       <syn:initialDuration>0</syn:initialDuration>
       <syn:progressionFactor>1.0</syn:progressionFactor>
       <syn:maximumDuration>0</syn:maximumDuration>
     </syn:suspendOnFailure>
   </address>
</endpoint>

还有其他人遇到过这个错误或者知道如何处理它吗?如果您能提供有关情况的任何见解,我将不胜感激。

更新:
看来请求失败的原因是

Expect: 100-continue

请求 HTTP header 中的选项。当我创建一个规则来在 fiddler 中删除它时,所有查询都成功。目前尚不清楚 WSO2 ESB 端是否有办法处理此类行为,或者是否应该删除这部分 header 。

最佳答案

我今天从 WSO2 ESB 4.5.1 升级到 4.7.0 时遇到了这个问题。我在 4.5.1 上遇到了另一个问题,因此必须升级,所以在 4.7.0 上遇到这个问题时,我别无选择,只能解决它。

思考了一段时间后,我记得在 4.6.0 中默认传输从 NHTTP 切换为 Passthrough 以提高性能。 4.7.0 附带了这两种配置,但默认启用 PT。配置文件位于 axis2 目录中:

${carbon.home}/repository/conf/axis2/

PT 配置文件是 axis2_pt.xml 。 NHTTP 是 axis2_nhttp.xml 。您可以比较它们以了解发生了什么变化;幸运的是,差异非常干净。

您可以通过修改主配置文件轻松从 PT 切换到 NHTTP:

${carbon.home}/repository/conf/carbon.xml

你有<ConfigurationFile> <Axis2Config>下的元素。默认文件axis2.xml似乎或多或少是axis2_pt.xml的副本。要切换到 NHTTP,只需更改 <ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2_nhttp.xml .

切换到 NHTTP 解决了 ESB 4.7.0 无法正确处理 100 CONTINUE 的问题。具体来说,我尝试使用curl 通过 ESB 将 PDF 上传到另一个服务。使用PT,失败;使用NHTTP,效果很好。我的明显结论是 PT 在这种情况下根本就是有问题的。

根据我对 PT 与 NHTTP 的阅读,从一种切换到另一种的唯一“官方”副作用是 PT 在某些情况下应该更快。然而,NHTTP 已经存在了更长时间,因此可能会因为经历了更多的错误修复而变得更加可靠。我不确定这一点,因为我没有参与 WSO2 ESB 的开发,但这是一个有根据的猜测。 :)

我也很想对 Isuru Perera 的回答发表评论,但我没有必要的声誉,所以我担心我必须对 https://wso2.org/jira/browse/APIMANAGER-1007 投入两分钱。这里。这个问题似乎确实相关 - 特别是根据我今天使用curl的经验 - 但不幸的是,WSO2的好心人在发表了一些评论后将这个问题解决为“不是错误”,最终建议避免使用curl,因为其他客户端“按预期工作”,从而使这是一个“ curl 问题”。恕我直言,HTTP 规范兼容请求的行为损坏不是客户端问题,应该得到解决。这实际上导致 PT 传输在某些情况下无法使用 - 即客户端对于如何 POST 大型实体更加智能的情况。这确实是一个遗憾,因为不需要解析请求体的场景正是 PT 传输的设计目的,也是它应该擅长的地方!

哦,这是我在 stackoverflow 上发表的第一篇文章,所以如果我违反了任何内部规则,我很抱歉;我已经成为被动参与者一段时间了,所以我希望我没有做任何错事!

关于WSO2 ESB 未知错误代码 102511,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183687/

相关文章:

wso2 - VFS 传输 WSO2 ESB 中文件的 XPath

postgresql - WSO2 企业集成商 DSS

WSO2 身份服务器 api

java - Mule:不同组件的接口(interface)绑定(bind),如何避免重复?

java - WSO2 ESB 如何对 Custom Mediator 的消息进行签名

wso2 - ESB 4.5.0 : User name not provided for the Entitlement mediator 中的错误

php - 我应该在哪里保持流明常数?

logging - WSO2 ESB日志太大,如何设置?

matlab - MATLAB 消息 ID 的最佳实践?

windows - 在哪里可以找到所有 Windows 错误代码的列表?