我已经在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 出了什么问题。
此处也跟踪此问题。