【问题标题】:Camel ReST Proxy route in ServiceMix fails for Base64 uploadsServiceMix 中的 Camel ReST 代理路由对于 Base64 上传失败
【发布时间】:2013-09-11 17:21:55
【问题描述】:

我在 SMX 上部署了以下路由,将所有 ReST 请求代理到真正的 ReST 服务提供商 (Tomcat)。所有对 SMX 的 ReST 调用都已成功路由,但是上传 PDF 文件的 saveDocument 服务失败。

public void configure() throws Exception {
from("jetty:http://{{smx.host}}:{{smx.rest-proxy-port}}/{{smx.context}}matchOnUriPrefix=true")
.log("ReST call received (Java DSL)")
.to("jetty:http://{{real-server-address}}:{{real-ws-port}}/{{context}}?bridgeEndpoint=true&throwExceptionOnFailure=false")
.log("Rest call proxied (Java DSL)");
}

servicemix.log 中记录了以下异常。

19:53:57,065 |警告 | HttpClient-137 | HttpExchange | 111 - org.eclipse.jetty.util - 7.5.4.v20111024 | EXCEPTION JettyContentExchange@188af650=POST//real-server-address...:8080/contextpath.../saveDocument#SENDING(3ms)-> EXCEPTED(0ms)sent=3ms java.lang.IndexOutOfBoundsException

在将调用重定向到真正的 ReST 服务之前,我是否必须在 base64 上执行一些额外的处理?

更新我之前的帖子。 当我使用 txt 文件但对 pdf 或 doc 失败时,这似乎有效。

更新 2:当 txt 大小超过 7KB 时也会失败。

是否可以设置骆驼码头接受大尺寸文件?

【问题讨论】:

    标签: rest apache-camel apache-servicemix


    【解决方案1】:

    如果使用 Multipart WS,则可以解决此问题。 我已经实现了 Multipart CXF ReST 文件上传服务,用于在多部分 WS 的情况下测试路由。

    The following route works OK for multipart:
    from("jetty:http://.../?matchOnUriPrefix=true&enableMultipartFilter=false")
            .noStreamCaching()
            .log("Service Proxied")
            .to("jetty:http://...:../?bridgeEndpoint=true&throwExceptionOnFailure=false");
    

    仍然找不到第一个 WS 出了什么问题。

    问题也被here 跟踪。

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2012-11-11
      • 2015-08-19
      相关资源
      最近更新 更多