Я удаляю WSO2 из нашего стека, и я должен написать в Camel Java DSL конечные точки, которые были реализованы в WSO2.
В WSO2 у нас была конечная точка, как показано ниже:
<resource methods="OPTIONS GET" uri-template="/request/{data}" inSequence="requestreset"/>
<http method="GET" uri-template="http://127.0.0.1/index.php?_q=requestreset&data={uri.var.data}"/>
Мой код в Java Маршрутизатор Camel:
public class DefaultRouteBuilder extends RouteBuilder {
private HashMap<String, String> routeCorresponding = new HashMap();
@Override
public void configure() throws Exception {
routeCorresponding.put("reset/request/{data}", "http://127.0.0.1/index.php?_q=requestreset&data={data}");
for (Map.Entry<String, String> pair : routeCorresponding.entrySet()) {
String url = pair.getKey();
String target = pair.getValue();
String resultTarget = target.contains("?") ? target + "&bridgeEndpoint=true" : target + "?bridgeEndpoint=true";
fromF("servlet:"+ url +"?matchOnUriPrefix=true")
.log("Request: ${in.header."+ Exchange.HTTP_METHOD +"} to ${in.header."+ Exchange.HTTP_URI +"}")
.toF(resultTarget);
}
}
}
Но он не работает так, как я хотел бы, потому что когда я делаю запрос к tomcat.myserver.com:8080/camel-example-servlet/reset/request/blablablablabla
, я получаю ответ: org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking http://127.0.0.1/index.php/reset/request/blablablablabla?_q=requestreset&data=%7Bdata%7D with statusCode: 404
Вместо http://127.0.0.1/index.php/reset/request/blablablablabla?_q=requestreset&data=%7Bdata%7D
я бы хотел, чтобы следующий запрос был на http://127.0.0.1/index.php?_q=requestreset&data=blablablablabla
Можно ли добиться в Camel / Java DSL этого? В основном, что WSO2 реализовывал с помощью шаблона URI и фигурных скобок вокруг полей?