OK, I managed to solve the problem by excluding Camel Auto configuration, adding this annotation:
@EnableAutoConfiguration(exclude = {CamelAutoConfiguration.class}) Plus, I added this line to application.properties: camel.springboot.name=MyCamel , and changed id of camelContext in camel-context.xml to the same value like this: <camelContext id="MyCamel" useBreadcrumb="false" xmlns=" http://camel.apache.org/schema/spring"> Then all routes, rest and direct: started OK. But I still have to figure out why they don't seem to work now. Maybe I broke something in the process. On Fri, Mar 23, 2018 at 4:18 PM, Hrvoje Djurdjevic < hrvoje.djurdje...@gmail.com> wrote: > Hi, > > I'm using Apache Camel 2.20.1 and spring-boot-1.5.9.RELEASE, besides that > I see spring-context-4.3.13.RELEASE.jar and spring-beans-4.3.13.RELEASE.jar > printed in the error stack trace. > I don't get it, is it possible that I may be adding routes two times, once > through an explicit Camel Context and second time through an implicit > default Camel Context? > I import the configuration for the first by adding this import resource > annotation: > > > @SpringBootApplication > //load regular Spring XML file from the classpath that contains the Camel > XML DSL > @ImportResource({"classpath:spring/camel-context.xml"}) > > What files exactly do you want me to send you, that are critical to > understand my problem? I'd rather avoid sending the whole project. > > Error starting ApplicationContext. To display the auto-configuration > report re-run your application with 'debug' enabled. > 2018-03-23 15:50:33.398 INFO 10492 --- [ main] > ationConfigEmbeddedWebApplicationContext : Closing > org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApp > licationContext@70f5f57d: startup date [Fri Mar 23 15:50:32 CET 2018]; > parent: org.springframework.boot.context.embedded. > AnnotationConfigEmbeddedWebApplicationContext@29ba4338 > 2018-03-23 15:50:33.414 ERROR 10492 --- [ main] > o.s.boot.SpringApplication : Application startup failed > > org.apache.camel.RuntimeCamelException: > org.apache.camel.FailedToStartRouteException: > Failed to start route rest_getAccounts because of duplicate id detected: > rest_getAccounts. Please correct ids to be unique among all your routes. > at > org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1831) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:136) > ~[camel-spring-2.20.1.jar:2.20.1] > at org.apache.camel.spring.CamelContextFactoryBean.start( > CamelContextFactoryBean.java:369) ~[camel-spring-2.20.1.jar:2.20.1] > at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent( > CamelContextFactoryBean.java:416) ~[camel-spring-2.20.1.jar:2.20.1] > at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent( > CamelContextFactoryBean.java:94) ~[camel-spring-2.20.1.jar:2.20.1] > at org.springframework.context.event.SimpleApplicationEventMulticas > ter.doInvokeListener(SimpleApplicationEventMulticaster.java:172) > ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.event.SimpleApplicationEventMulticas > ter.invokeListener(SimpleApplicationEventMulticaster.java:165) > ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.event.SimpleApplicationEventMulticas > ter.multicastEvent(SimpleApplicationEventMulticaster.java:139) > ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext. > publishEvent(AbstractApplicationContext.java:393) ~[spring-context-4.3.13. > RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext. > publishEvent(AbstractApplicationContext.java:399) ~[spring-context-4.3.13. > RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext. > publishEvent(AbstractApplicationContext.java:347) ~[spring-context-4.3.13. > RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext. > finishRefresh(AbstractApplicationContext.java:883) > ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.boot.context.embedded. > EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) > ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at org.springframework.context.support.AbstractApplicationContext.refresh( > AbstractApplicationContext.java:546) ~[spring-context-4.3.13. > RELEASE.jar:4.3.13.RELEASE] > at org.springframework.boot.context.embedded. > EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) > ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at org.springframework.boot.actuate.autoconfigure. > EndpointWebMvcAutoConfiguration.createChildManagementContext( > EndpointWebMvcAutoConfiguration.java:193) ~[spring-boot-actuator-1.5.9. > RELEASE.jar:1.5.9.RELEASE] > at org.springframework.boot.actuate.autoconfigure. > EndpointWebMvcAutoConfiguration.afterSingletonsInstantiated( > EndpointWebMvcAutoConfiguration.java:156) ~[spring-boot-actuator-1.5.9. > RELEASE.jar:1.5.9.RELEASE] > at org.springframework.beans.factory.support.DefaultListableBeanFactory. > preInstantiateSingletons(DefaultListableBeanFactory.java:781) > ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext. > finishBeanFactoryInitialization(AbstractApplicationContext.java:867) > ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE] > at org.springframework.context.support.AbstractApplicationContext.refresh( > AbstractApplicationContext.java:543) ~[spring-context-4.3.13. > RELEASE.jar:4.3.13.RELEASE] > at org.springframework.boot.context.embedded. > EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) > ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at > org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) > [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at > org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) > [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) > [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) > [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) > [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] > at > hr.rba.digital.poc.accounts.AccountsApplication.main(AccountsApplication.java:14) > [classes/:na] > Caused by: org.apache.camel.FailedToStartRouteException: Failed to start > route rest_getAccounts because of duplicate id detected: rest_getAccounts. > Please correct ids to be unique among all your routes. > at > org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1137) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3727) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3441) > ~[camel-core-2.20.1.jar:2.20.1] > at org.apache.camel.impl.DefaultCamelContext.access$ > 000(DefaultCamelContext.java:208) ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3249) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:3245) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3268) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3245) > ~[camel-core-2.20.1.jar:2.20.1] > at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3168) > ~[camel-core-2.20.1.jar:2.20.1] > at > org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:133) > ~[camel-spring-2.20.1.jar:2.20.1] > ... 25 common frames omitted > > 2018-03-23 15:50:33.414 INFO 10492 --- [ main] > ationConfigEmbeddedWebApplicationContext : Closing > org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApp > licationContext@29ba4338: startup date [Fri Mar 23 15:50:23 CET 2018]; > root of context hierarchy > 2018-03-23 15:50:33.414 INFO 10492 --- [ main] > o.s.j.e.a.AnnotationMBeanExporter > : Unregistering JMX-exposed beans on shutdown > > Best Regards > > On Thu, Mar 22, 2018 at 3:07 PM, Claus Ibsen <claus.ib...@gmail.com> > wrote: > >> Hi >> >> What version of Camel and Spring Boot do you use? >> And can you maybe put your sample project on github or something so we >> can take a look there and try it out >> >> On Tue, Mar 20, 2018 at 6:59 PM, <hrvoje.djurdje...@rba.hr> wrote: >> > Hi, >> > >> > if I try to build this code: >> > >> > package org.mycompany; >> > >> > import org.apache.camel.builder.RouteBuilder; >> > import org.apache.camel.model.rest.RestParamType; >> > >> > >> > public class MyFirstRouterBuilder extends RouteBuilder { >> > @Override >> > public void configure() throws Exception { >> > try{ >> > restConfiguration().component("servlet"); >> > rest() >> > .get("/accounts/{accountId}/transactions").id("r1") >> > .param() >> > .name("accountId") >> > .type(RestParamType.path) >> > .dataType("string") >> > .required(true) >> > .endParam() >> > .to("direct:rest1"); >> > >> > from("direct:rest1") >> > .log("${body}"); >> > >> > }catch(Exception e){ >> > >> > } >> > } >> > } >> > >> > I receive: >> > >> > org.apache.camel.spring.boot.CamelSpringBootInitializationException: >> > org.apache.camel.FailedToStartRouteException: Failed to start route r1 >> > because of duplicate id detected: r1. Please correct ids to be unique >> > among all your routes. >> > >> > If I add .routeId("r2") or .id("r2") to the second route, immediately >> > after from("direct:rest1"), nothing changes. >> > >> > If I remove .id("r1") from the rest get operation, I receive: >> > >> > org.apache.camel.spring.boot.CamelSpringBootInitializationException: >> > org.apache.camel.FailedToStartRouteException: Failed to start route >> route1 >> > because of duplicate id detected: route2. Please correct ids to be >> unique >> > among all your routes. >> > >> > How is this supposed to be written in order to avoid that error? >> > I inject that into camel context like this: >> > >> > <bean class="org.mycompany.MyFirstRouterBuilder" >> id="myFirstRouter"/> >> > <camelContext id="camel" useBreadcrumb="false" xmlns=" >> > http://camel.apache.org/schema/spring"> >> > <routeBuilder ref="myFirstRouter"/> >> > </camelContext> >> > ______________________ >> > >> > Napomena: >> > Ova elektronička poruka i njeni prilozi mogu sadržavati povjerljive >> i/ili povlaštene informacije, a namijenjena je isključivo za upotrebu >> naznačenog primatelja. Ako ste ovu poruku primili greškom, molimo Vas da o >> tome bez odlaganja obavijestite pošiljatelja, da uništite izvornu poruku i >> njene priloge i bez odlaganja poruku i njene priloge izbrišete iz Vašeg >> sistema. Neovlaštena uporaba, distribucija, otkrivanje, umnožavanje ili >> izmjena ove poruke je zabranjena. Raiffeisenbank Austria d.d. ne daje niti >> ne prihvaća pravno obvezujuće izjave putem elektroničkih poruka osim >> ukoliko drugačije nije izričito navedeno. Budući da komunikacija internetom >> nije zaštićena, Raiffeisenbank Austria d.d. ne prihvaća odgovornost za >> sadržaj ove poruke, kao ni za eventualnu štetu nastalu zbog zaraženosti ove >> poruke virusom ili drugim štetnim programom, te zbog eventualnih tehničkih >> problema prilikom dostave ove poruke. >> > >> > Disclaimer: >> > This e-mail message and any attachment may contain confidental and/or >> privileged information and is intended for use by the indicated addressee >> only. If you have received this message in error, please notify the sender >> immediately, destroy the original message and any attachment and delete >> this message and any attachment from your system. Unauthorized use, >> distribution, disclosure, reproduction, or alteration of this e-mail >> message is forbidden. Raiffeisenbank Austria d.d. neither makes nor accepts >> legally binding statements via e-mail unless otherwise stated. Considering >> that internet communication is not secured, Raiffeisenbank Austria d.d. is >> not responsible for the content of this message, for potential damage >> occured due to infection of this message with a virus or other malicious >> program, and for potential technical problems during delivery of this >> message. >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 >> > >