Camel中的OnException未返回自定义响应

时间:2016-04-06 15:26:17

标签: apache-camel cxf

我在我的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组件。

2 个答案:

答案 0 :(得分:0)

你可以完全发布你的路线吗?你有onException的地方吗?

在您使用自定义课程之前,您可以试试这个吗?只是想确保onException中设置的任何内容都传播回CXF端点:

onException(RuntimeException.class).handled(true).setBody()。simple(“&lt; / Unexpected exception&gt;”);

答案 1 :(得分:0)

onException()块似乎位于第二条路径中,因此不在第一条路径的范围内。

使onException()块全局化或将其添加到CXF路由中,使其在范围内。