Apache Camel Route无法找到Endpoint

时间:2017-06-29 22:03:02

标签: apache-camel cxf cxfrs

我为我的应用程序创建了一个cxf路由,如下所示:

from("cxfrs:{{url}}?resourceClasses=MyImpl&bindingStyle=SimpleConsumer")
.to("${header.operationName}").end();
from("direct:{{getUser}}")
        .bean("userImpl", "getUserByName")
        .marshal().json(JsonLibrary.Jackson)
    .to("log:foo");

    from("direct:{{login}}")    
        .bean("userImpl", "loginUser")
        .marshal().json(JsonLibrary.Jackson)
    .to("log:foo");

如果我尝试在处理器中获取我的operationName,我可以得到它,但如果我调用此路由,我会收到此消息:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Error 500 No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</title>
</head>
<body>
    <h2>HTTP ERROR 500</h2>
    <p>Problem accessing /user/login. Reason:

        <pre>    No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</pre>
    </p>
    <hr>
    <i>
        <small>Powered by Jetty://</small>
    </i>
    <hr/>
</body>

我的路线有什么问题? 为什么我的标题不能被识别?

1 个答案:

答案 0 :(得分:4)

问题在于:

.to("${header.operationName}")

&#34;至(...)&#34;不支持动态数据,因此在您的情况下,它实际上会尝试发送到端点&#34; direct:{header.operationName}&#34;。

要使用标题中的动态值,您可以使用toD(来自Camel 2.19)或带有一个收件人的recipientsList(2.19之前的Camel)