我正在使用:
- 狂野 10.1.0 决赛
- 骆驼 2.19.1
- Camel Java DSL RouteBuilder
在我的RouteBuilder.config中,我有以下内容来自:
from("undertow:http://localhost:" + portNum + "/DataplatformESB/v3?matchOnUriPrefix=true&httpMethodRestrict=post,get,put,options,patch,delete")
当我测试使用GET
、PUT
或PATCH
进行"localhost:8080/DataplatformESB/v3"
时,它们都工作正常。但是当我测试"localhost:8080/DataplatformESB/v3/anythingelse"
时,我会得到一个404 (page not found)
作为回报。在野蝇日志中,它统计:"Matched prefix path /DataplatformESB for path /DataplatformESB/v3/anythingelse"
。所以对我来说,"matchOnUriPrefix=true"
似乎不起作用。
我已经用from("restlet:http://localhost:" + portNum + "/DataplatformESB/v3?matchOnUriPrefix=true&httpMethodRestrict=post,get,put,options,patch,delete")
测试过,但这也不能用。
我也用restConfiguration
和.componentProperty("matchOnUriPrefix", "true")
尝试过,但没有运气。
有没有人知道为什么matchOnUriPrefix=true
似乎对我不起作用?
我做了一些进一步的研究,发现了以下内容:
我从https://github.com/apache/camel/tree/master/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowPrefixMatchingTest.java
那里获得了暗流测试项目,并在 NetBeans 中运行/测试了该项目。
代码为:from("undertow:http://localhost:{{port}}/bar?matchOnUriPrefix=true")
.transform(bodyAs(String.class).append(" Matching prefix"))
.to("mock:bar");
这运行良好,当 URL 以前缀开头时返回 OK:"bar"
。所以"bar/foo"
也返回正常。
但是当我从网站https://github.com/wildfly-extras/wildfly-camel-examples/tree/master/camel-rest-swagger
将此代码粘贴到野蝇骆驼休息 Swagger 示例中(没有野蝇骆驼休息示例(时,我只有在以"bar"
作为路径进行测试时才会得到 OK。 使用"bar/foo"
会产生 404 返回代码。
我仍在使用野蝇 10.1 最终版和骆驼 2.19.1。
那么是什么导致了产出的差异呢?我需要在 Wildfly 中更改什么才能使其正常工作?
默认情况下matchOnUriPrefix
选项是否在野蝇上被禁用/忽略?
在 Wildlfly 安装上使用 Wildfly-Camel 2.18.3 时,它似乎可以工作。 看起来 matchOnUriPrefix 的默认值已更改或此属性的处理已更改。 在这种情况下,在我看来,这引入了上述错误。