Camel:如何为<restconfiguration>中配置的jetty组件设置matchOnUriPrefix = true

时间:2016-09-06 06:15:41

标签: apache-camel

我有以下驼峰路由配置。

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

<!-- Rest Configuration -->
<restConfiguration component="jetty" port="9092" bindingMode="auto">
    <dataFormatProperty key="json.in.disableFeatures" value="FAIL_ON_UNKNOWN_PROPERTIES" />
</restConfiguration>

<rest path="/" consumes="application/json"
        produces="application/json">
        <post uri="/" type="com.aaa.xxxx.esb.config.xxxxEsbJsonMapping">
            <route>
                <setHeader headerName="Authorization">
                    <simple>Basic YWRtaXXXXWRtaW4=</simple>
                </setHeader>
                <setHeader headerName="CamelHttpMethod">
                    <constant>POST</constant>
                </setHeader>

                <setHeader headerName="CamelHttpMethod">
                    <constant>POST</constant>
                </setHeader>

                <setHeader headerName="RestEndpointURL">
                    <simple>
                        http://${body.serviceURL}?bridgeEndpoint=true
                    </simple>
                </setHeader>
                <setBody>
                    <simple>{"UserDetails": ${body.serviceDataJsonObj}}</simple>
                </setBody>

                <log message="Exchanged headers : ${headers.RestEndpointURL}" />

                <recipientList>
                    <simple>${headers.RestEndpointURL}</simple>
                </recipientList>

            </route>
        </post>
    </rest>

我需要知道的是我可以设置的地方

  

matchOnUriPrefix =真

我已经为驼峰休息配置的jetty组件的

选项。

根据Claus Ibsen的回答,我更改了配置XML如下。

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

    <!-- Rest Configuration -->
    <restConfiguration component="jetty" port="9092"
        bindingMode="auto">
        <dataFormatProperty key="json.in.disableFeatures"
            value="FAIL_ON_UNKNOWN_PROPERTIES" />
        <componentProperty key="matchOnUriPrefix" value="true" />
    </restConfiguration>

    <!-- Rest Services -->
<rest path="/" consumes="application/json" produces="application/json">
        <post uri="/" type="com.aaa.xxxx.esb.config.xxxxEsbJsonMapping">
            <route>
                <setHeader headerName="Authorization">
                    <simple>Basic YWRXXX46YWRtaW4=</simple>
                </setHeader>
                <setHeader headerName="CamelHttpMethod">
                    <constant>POST</constant>
                </setHeader>

                <setHeader headerName="CamelHttpMethod">
                    <constant>POST</constant>
                </setHeader>

                <setHeader headerName="RestEndpointURL">
                    <simple>
                        http://${body.serviceURL}?bridgeEndpoint=true
                    </simple>
                </setHeader>
                <setBody>
                    <simple>{"SystemUserDetails": ${body.serviceDataJsonObj}}</simple>
                </setBody>

                <log message="Exchanged headers : ${headers.RestEndpointURL}" />

                <recipientList>
                    <simple>${headers.RestEndpointURL}</simple>
                </recipientList>

            </route>
        </post>
    </rest>

</camelContext>

我使用的是servicemix apache-servicemix-7.0.0.M2 我将其camel ver 2.16.3升级到2.17.3

由于

2 个答案:

答案 0 :(得分:1)

使用componentProperty

中的restConfiguration配置rest-dsl
<restConfiguration component="jetty" port="9092" bindingMode="auto">
    <componentProperty key="matchOnUriPrefix" value="true"/>
    <dataFormatProperty key="json.in.disableFeatures" value="FAIL_ON_UNKNOWN_PROPERTIES" />
</restConfiguration>

您可以在文档中找到有关此内容的详细信息:http://camel.apache.org/rest-dsl

答案 1 :(得分:0)

你可以在里面添加 的路线

标签如下:

<route>
  <from uri="jetty://foo?matchOnUriPrefix=true"/>
  ...
</route>