Hi,
I'm trying to remove and reload rest definitions from xml using camel
2.17.1. I have the following code to load them (stolen from
camel-spring-boot):
for(String restRoutePath : restRoutePaths) {
try{
RestsDefinition rd =
camelContext.loadRestsDefinition(appContext.getResource(restRoutePath).getInputStream());
camelContext.addRestDefinitions(rd.getRests());
for(RestDefinition xmlDef : rd.getRests()) {
List<RouteDefinition> routeDefs =
xmlDef.asRouteDefinition(camelContext);
camelContext.addRouteDefinitions(routeDefs);
//Store loaded Routes
loadedRouteDefs.addAll(routeDefs);
}
} catch(Exception ex){
ex.printStackTrace();
}
}
To remove the routes I use:
camelContext.removeRouteDefinitions(loadedRouteDefs);
But then when i try to reload the xml again, i get the following error which
makes me think the Rest definitions are not getting completely removed. It
works fine for regular xml Routes, just not Rest.
org.apache.camel.FailedToStartRouteException: Failed to start route route71
because of duplicate id detected: route75. Please correct ids to be unique
among all your routes.
at
org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:963)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3295)
at
org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:908)
at com.transamerica.isb.api.interfaces.Utils.loadRoutes(Utils.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
--
View this message in context:
http://camel.465427.n5.nabble.com/Removing-and-reloading-Rests-XML-Definitions-dynamically-tp5783724.html
Sent from the Camel - Users mailing list archive at Nabble.com.