我正在使用:
在我的RouteBuilder.configure中,我有以下内容:
from("undertow:http://localhost:" + portNum + "/DataplatformESB/v3?matchOnUriPrefix=true&httpMethodRestrict=post,get,put,options,patch,delete")
当我使用"localhost:8080/DataplatformESB/v3"
,GET
或PUT
对PATCH
进行测试时,它们都能正常运行。但是当我测试"localhost:8080/DataplatformESB/v3/anythingelse"
时,我会得到一个404 (page not found)
作为回报。在Wildfly日志中,它的统计信息为:"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
似乎不适合我?
答案 0 :(得分:0)
我做了一些进一步的研究,发现了以下内容:
我从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以前缀"bar"
开头时返回OK。所以"bar/foo"
也会返回OK。
但是,当我将此代码粘贴到来自网站https://github.com/wildfly-extras/wildfly-camel-examples/tree/master/camel-rest-swagger
的Wildfly Camel Rest Swagger示例(没有Wildfly Camel Rest示例)时,我只有在使用"bar"
作为路径进行测试时才能正常运行。
使用"bar/foo"
会产生404返回码。
我仍在使用Wildfly 10.1 final和Camel 2.19.1。
那么是什么导致了输出的差异?我需要在Wildfly中进行哪些更改才能使其正常工作?
Wildfly上的选项matchOnUriPrefix
默认是禁用/忽略的吗?
答案 1 :(得分:0)
在Wildlfly安装上使用Wildfly-Camel 2.18.3时似乎可行。 看起来像matchOnUriPrefix的默认值已更改或此属性的处理。 在这种情况下,在我看来,这引入了如上所述的错误。