matchOnUriPrefix = true似乎不起作用

时间:2017-07-20 14:50:32

标签: wildfly restlet undertow

我正在使用:

  • wildlfy 10.1.0 final
  • Camel 2.19.1
  • Camel Java DSL RouteBuilder

在我的RouteBuilder.configure中,我有以下内容:

from("undertow:http://localhost:" + portNum + "/DataplatformESB/v3?matchOnUriPrefix=true&httpMethodRestrict=post,get,put,options,patch,delete")

当我使用"localhost:8080/DataplatformESB/v3"GETPUTPATCH进行测试时,它们都能正常运行。但是当我测试"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似乎不适合我?

2 个答案:

答案 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的默认值已更改或此属性的处理。 在这种情况下,在我看来,这引入了如上所述的错误。