我尝试将Spring集成用作简单的调解器。我们有一个驻留在Intranet上的webapp,无法从外部访问。现在我想通过DMZ中的调解员公开这个应用程序。这只是意味着所有网址都应该http://gateway/TheApp/ *转发到http://internal/TheApp/ *。理论上非常简单,但似乎在Spring集成中处理传出的http-reuest的组件(HttpRequestExecutingMessageHandler)需要一个明确的URI,即没有通配符匹配。这可以通过Spring集成来实现吗?
答案 0 :(得分:1)
入站网关将url放入标头中;你只需在出站网关上使用一个表达式......
url-expression="headers['http_requestUrl'].replace('gateway', 'internal')"
如果您使用的是Java @Configuration
,则可以使用带Expression
的构造函数...
Expression expression = new SpelExpressionParser().parseExpression(
"headers['http_requestUrl'].replace('gateway', 'internal')");
This test case通过抓取查询字符串并将其附加到新网址来执行类似操作。
在这种情况下,它将查询字符串放在有效负载中;可以使用<int:header/>
子元素轻松添加为标题(例如,用于POST)。