WSO2 ESB未知错误代码102511

时间:2013-08-12 09:32:12

标签: wso2 esb error-code

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

处理程序处于不一致状态REQUEST_HEAD

时接收响应
ERROR_CODE : 102511  
ERROR_MESSAGE : Error in Sender  
ERROR_DETAIL : Error in Sender  
ERROR_EXCEPTION : null 

事实是,这个错误代码没有在文档中描述,并且没有例外,它不明白该怎么做。我能找到的最接近的代码是SND_INVALID_STATE = 102510,从源代码判断,请求似乎带有无效的标头。但并非所有请求都失败了。相同的请求可以随机传递或失败。我用fiddler录制所有请求并重播它们。失败的人最终会通过,反之亦然。在此之前,我已在本地计算机(Windows 7)上部署并测试了新版本的ESB,并且仅在冷启动时遇到此类错误。

重现它的最简单配置包括Path Through Proxy服务和地址端点。

代理服务配置:

<?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标头中的

选项。当我创建一个规则以在fiddler中删除它时,所有查询都成功完成。目前尚不清楚是否有办法在WSO2 ESB方面处理此类行为,或者是否应删除标题的这一部分。

2 个答案:

答案 0 :(得分:2)

从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的问题。具体来说,我试图通过ESB将curl上传到另一个服务。使用PT,它失败了;使用NHTTP,它工作正常。我明显的结论是,PT在这种情况下只是错误。

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

此外,我很乐意评论Isuru Perera的答案,但我没有必要的声誉,所以我担心我必须在https://wso2.org/jira/browse/APIMANAGER-1007处写两分钱。这个问题确实看起来确实相关 - 尤其是基于我自己今天卷曲的经验 - 但不幸的是,WSO2的善良人士在一些评论之后将问题解决为“不是一个错误”,这些评论最终建议避免使用卷曲,因为其他客户“按预期工作”,从而使这成为“卷曲问题”。恕我直言,违反HTTP规范请求的行为不是客户端问题,应该解决。这有效地使PT传输在某些情况下不可用 - 即客户端对于如何POST大型机构更加智能的情况。这真是一种耻辱,因为不需要解析请求体的场景正是PT传输的设计目标和优势所在!

哦,这是我在stackoverflow上的第一篇文章,所以如果我违反任何房屋规则,我很抱歉;一段时间以来,我一直是被动的参与者,所以我希望我没有做错任何事情!

答案 1 :(得分:1)

WSO2 API Manager似乎也出现了类似的错误。见https://wso2.org/jira/browse/APIMANAGER-1007

ESB在API Manager中运行,因此您可能遇到JIRA comment中提到的类似问题。

以下文档列出了大部分错误代码。

http://docs.wso2.org/wiki/display/ESB470/Error+Handling

但遗憾的是,此问题中提到的错误代码未列出。