Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 具有相同路径和不同谓词的Restlet_Apache Camel_Restlet - Fatal编程技术网

Apache camel 具有相同路径和不同谓词的Restlet

Apache camel 具有相同路径和不同谓词的Restlet,apache-camel,restlet,Apache Camel,Restlet,我有以下有趣的情况。我有一条路径和三个动词:GET、DELETE、POST。它们对应于骆驼上下文中的三条路线。我的观察是,如果这三条路线在同一个驼峰环境中,那么每一条路线都运行良好。但是,如果路径在不同的驼峰上下文中,则其中只有一个有效。到目前为止,我注意到deletewworks和另外两个停止工作。我的示例上下文如下: <camel:camelContext id="get-test" autoStartup="true"> <camel:route>

我有以下有趣的情况。我有一条路径和三个动词:GET、DELETE、POST。它们对应于骆驼上下文中的三条路线。我的观察是,如果这三条路线在同一个驼峰环境中,那么每一条路线都运行良好。但是,如果路径在不同的驼峰上下文中,则其中只有一个有效。到目前为止,我注意到deletewworks和另外两个停止工作。我的示例上下文如下:

<camel:camelContext  id="get-test" autoStartup="true">

        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=DELETE"></camel:from>
            <camel:transform>
                <camel:constant>Hi Delete</camel:constant>
             </camel:transform>
        </camel:route>
        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=GET"></camel:from>
            <camel:transform>
                <camel:constant>Hi Get</camel:constant>
             </camel:transform>
        </camel:route>
        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=POST"></camel:from>
            <camel:transform>
                <camel:constant>Hi Post</camel:constant>
             </camel:transform>
        </camel:route>
</camel:camelContext>

嗨,删除
你好
你好
因此,以上就是工作场景。以下是三种不同情况下不起作用的场景:

<camel:camelContext  id="delete-test" autoStartup="true">

        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=DELETE"></camel:from>
            <camel:transform>
                <camel:constant>Hi Delete</camel:constant>
             </camel:transform>
        </camel:route>
</camel:camelContext>

<camel:camelContext  id="get-test" autoStartup="true">

        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=GET"></camel:from>
            <camel:transform>
                <camel:constant>Hi Get</camel:constant>
             </camel:transform>
        </camel:route>

</camel:camelContext>

<camel:camelContext  id="post-test" autoStartup="true">


        <camel:route>
            <camel:from uri="restlet:/path?restletMethod=POST"></camel:from>
            <camel:transform>
                <camel:constant>Hi Post</camel:constant>
             </camel:transform>
        </camel:route>
</camel:camelContext>

嗨,删除
你好
你好

也许我在camel规范中遗漏了禁止这种配置的内容?

是的,不支持这种配置。选择路由以处理消息的逻辑仅使用上下文路径作为逻辑的一部分

不确定添加restleMethod以及部分选择逻辑有多容易。您可以随时登录JIRA票证,并深入代码进行贡献。我们热爱捐款:

我在使用ApacheCxf和Camel时也遇到了同样的问题。必须在同样的背景下做。很高兴知道。我会看看核心,看看能找到什么。同样徒劳的是,我注意到,在相同的camel上下文中,只有当参数具有相同的名称时,两个具有相同数量的参数和不同谓词的restlet端点才起作用。这意味着:restlet:/foo/{id}?restletMethod=POST和restlet:/foo/{id}?restletMethod=GET将在两个不同的端点上工作,而restlet:/foo/{id}?restletMethod=POST和restlet:/foo/{email}?restletMethod=GET不工作。不确定这是否与您上面提到的逻辑有关。