0

我已经在 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 时它也会失败。

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

4

1 回答 1

0

如果使用 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 出了什么问题。

该问题也在此处进行跟踪。

于 2013-11-08T12:37:58.337 回答