我已在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)发送= 3ms java.lang.IndexOutOfBoundsException
在将呼叫重定向到真正的ReST服务之前,我是否必须在base64上执行一些额外的处理?
在我之前的帖子上更新。 这似乎在我使用txt文件时有效,但对于pdf或doc失败。
更新2:当txt大小超过7KB时,它也会失败。
是否可以将camel jetty设置为接受大尺寸文件?
答案 0 :(得分: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出了什么问题。
此问题也会被跟踪here。