我在我的apache camel代码中遇到此问题,我在过去两天试图解决,但我无法解决它。
我有两条路线。第一条路线如下:
public class XXXRoute1 extends RouteBuilder {
public void configure() {
String endpointUri = "cxf:/XXX;
String logEndpoint = "log:" + XXX() + "?level=DEBUG";
from(endpointUri)
.to(logEndpoint).to(ROUTE2.ENDPOINT_URI)
.to(logEndpoint);
}
第二条路线:(在第二条路线中,我通过onException捕捉到一些异常)
public class Route2 extends RouteBuilder {
public void configure() throws Exception{
String integrationEndpoint = "xxx.integration";
onException(RuntimeException.class).handled(true).onWhen(exceptionMessage().contains("Invalid")).bean(translator, "translateSomeError(${property.XXX})").end();
from(ENDPOINT_URI)
.
.
. so on
现在,就我而言,我通过onException
填充的对象public SomeObjectResponse translateSomeError(Object someObject) throws Exception{
SomeObjectResponse someObjectResponse = new SomeObjectResponse();
someObjectResponse.setError("someError");
return someObjectResponse ;
}
但是,在测试SOAP UI时,我得到一个空的SOAP信封
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body/>
</soap:Envelope>
我在apache camel中使用cxf组件。
答案 0 :(得分:0)
你可以完全发布你的路线吗?你有onException的地方吗?
在您使用自定义课程之前,您可以试试这个吗?只是想确保onException中设置的任何内容都传播回CXF端点:
onException(RuntimeException.class).handled(true).setBody()。simple(“&lt; / Unexpected exception&gt;”);
答案 1 :(得分:0)
onException()块似乎位于第二条路径中,因此不在第一条路径的范围内。
使onException()块全局化或将其添加到CXF路由中,使其在范围内。