ServiceMix 中的 Camel ReST 代理路由对于 Base64 上传失败



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

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 |异常 JettyContentExchange@188af650=POST//真实服务器地址...:8080/上下文路径.../保存文档#发送(3ms)->EXCEPTED(0ms)sent=3ms java.lang.IndexOutOfBoundsException

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

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

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

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

如果使用多部分 WS,则可以解决此问题。我已经实现了多部分 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 出了什么问题。

此处也跟踪此问题。

最新更新