Apache Camel:我们如何解析Servlet输入的URL路径,然后将其用作SQL输出中的参数

时间:2014-05-10 19:29:22

标签: apache-camel

我希望创建一个通用的restful服务来使用Camel执行crud操作,但是不使用Restlet,只需要普通的Servlet和SQL组件。

我只熟悉Camel 2天,而且我无法获取URL部分以便在SQL查询中使用它们。

这个想法是仅使用XML配置。我尝试了很多不同的方法,来使用javascript。到目前为止,这是我的代码(见下文)。

我无法弄清楚如何检查url路径,解析它的部分,放入“message body”,它应该是SQL查询参数的来源。

在这个特殊场景中,它说“ReferenceError:”响应“未定义”。

    <route>
        <from uri="servlet:///crud?matchOnUriPrefix=true"/>
        <setBody>
            <javaScript><![CDATA[
                  request.headers.get("CamelHttpPath").match(/\/(\w+)\/(\w*)/)
            ]]></javaScript>
        </setBody>
        <choice>
            <when>
                <javaScript><![CDATA[
                    request.headers.get("CamelHttpMethod") == "GET" && 
                    response.body != null
                ]]></javaScript>
                <to uri="sql:select * from person where id=2?dataSource=dataSource"></to>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'POST'</xpath>
                <transform>
                    <simple>Update!!! path - ${header.CamelHttpPath}, url - ${header.CamelHttpUrl}, uri = ${header.CamelHttpUri}, base uri = ${header.CamelHttpBaeUri}. And request is ${header.CamelHttpServletRequest}</simple>
                </transform>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'PUT'</xpath>
                <transform>
                    <simple>Insert</simple>
                </transform>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'DELETE'</xpath>
                <transform>
                    <simple>Delete...</simple>
                </transform>
            </when>
            <otherwise>
                <transform>
                    <simple>Unsupported method ${header.CamelHttpMethod} (${header.CamelHttpPath})</simple>
                </transform>
            </otherwise>
        </choice>
    </route>

0 个答案:

没有答案