【问题标题】:WSO2 ESB won't forward a multi-part file to a proxy serviceWSO2 ESB 不会将多部分文件转发到代理服务
【发布时间】:2013-12-12 09:53:48
【问题描述】:

背景: 我有一个基于弹簧的 REST Web 服务,它接收不到 1k 的 xml 文件,在处理它之后,将消息发布到在 ActiveMQ 上运行的主题。应用程序战争被部署到一个 Tomcat 实例,一切都像一个魅力,我收到一个 Http 201(创建)响应。然后我创建了一个简单的 WSO2 ESB 代理服务,它使用 Pass-through 协议将相同的消息发送到部署在 Tomcat 上的 REST 服务。这在我的本地机器上按预期工作,我得到一个 Http 201(已创建)。

问题: 当代理服务部署在同一网络中的远程 WSO2 ESB 实例上时,与 201(已创建)相比,我开始收到 Http 202(已接受)响应。此问题仅适用于具有多部分请求参数的 REST 服务。我可以毫无问题地将几个参数传递给另一个 REST Web 服务。我使用过 RestTemplate 和 AdvancedRestClient(Chrome 插件)来提交消息。

我的配置:

  • WSO2 ESB:4.7.0
  • Tomcat:7.0.42
  • 甲骨文:JDK 1.7.0_45
  • ActiveMQ:5.8.0
  • 操作系统:Debian Sqeeze

故障排除步骤:<ESB_HOME>/repository/conf/log4.properties 中的每个条目的日志级别设置为 DEBUG,没有任何重要的问题指向 在包含 WSO2 ESB 的同一台远程计算机上安装 Tomcat 和 ActiveMQ,直接针对远程 Tomcat 发布并按预期收到 Http 201

这是我在<ESB_HOME>/repository/deployment/server/synapse-configs/default/proxy-services/EventProxy.xml 的代理定义

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
   name="EventProxy"
   transports="http"
   startOnLoad="true"
   trace="enable">
   <target>
      <inSequence>
         <log level="full" />
         <send>
            <endpoint>
               <address uri="http://localhost:8080/services/event"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full" />
         <send/>
      </outSequence>
   </target>
</proxy>

在我的代理中尝试了 inSequence 下的以下属性,但没有成功。

  • <property name="POST_TO_URI" value="true" scope="axis2" type="STRING" />
  • &lt;property name="DISABLE_CHUNKING" value="true" scope="axis2"/&gt;
  • 将 Tomcat 侦听端口更改为 9000 并在服务代理文件中
  • 在主序列中禁用过滤器介体 &lt;ESB_HOME&gt;/repository/deployment/server/synapse-configs/default/sequences/main.xml
  • 在发送 inSequence 后添加 &lt;drop/&gt; mediator &lt;ESB_HOME&gt;/repository/deployment/server/synapse-configs/default/sequences/main.xml

在远程服务器上运行时我需要做任何外部设置(增加某种超时)吗?我是 WSO2 的新手,没有任何想法,因此将不胜感激任何有用的指针。

执行的其他步骤:

使用 DNS 名称和 IP 但类似的 202 响应更改了 &lt;ESB_HOME&gt;/repository/conf/carbon.xml 中的 &lt;Host&gt; 元素。

谢谢。

【问题讨论】:

    标签: java proxy wso2 esb multipart


    【解决方案1】:

    在做了很多调试、日志级别、tcpdump 和wireshark 之后,让我想起了make 文件空间问题,显然我的测试客户端提交了一个末尾带有空格的url,而WSO2 对此回复了202,一旦发现它并移除最后的空间,一切都会按预期工作。

    对我自己感到失望,也对 wso2 esb 没有正确响应感到失望,它应该像“找不到代理服务”之类的那样做出响应。

    【讨论】:

      猜你喜欢
      • 2012-06-15
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多