Search code examples
camel-rest

apache camel REST failing with [Error creating bean with name 'rest-configuration']


My route looks like below -

@Override
    public void configure() throws Exception {

        from("kafka:adapterTopic")
        .to("rest://post:gatewayinbound-dev11.devsite.com");
    }

I have tried with this as well,

.to("rest:post:gatewayinbound-dev11.devsite.com");

and this as well,

restConfigutation().host("gatewayinbound-dev11.devsite.com");
from("kafka:adapterTopic")
.to("rest:post:provideStatus/");

I have tried with camel-rest-starter dependency in the classpath and without it as well.

I have tried putting camel-rest instead of camel-rest-starter in the pom.

But nothing is making the exception go away, below is the stacktrace-

{"timestamp":"2020-04-21 18:17:45.327","severity":"ERROR","class":"org.springframework.boot.SpringApplication","crId":"","msg":"Application run failed","exception":"org.apache.camel.RuntimeCamelException","cause":"org.apache.camel.FailedToCreateRouteException: Failed to create route route10 at: >>> To[rest:post:gatewayinbound-dev11.devsite.com] <<< in route: Route(route10)[[From[kafka:adapterTopic]] -> [To[rest:... because of Failed to resolve endpoint: rest:\/\/post:gatewayinbound-dev11.devsite.com due to: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rest-configuration' defined in class path resource [org\/apache\/camel\/model\/rest\/springboot\/RestConfigurationDefinitionAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.camel.spi.RestConfiguration]: Factory method 'configureRestConfigurationDefinition' threw exception; nested exception is java.lang.IllegalArgumentException: Cannot configure option [useXForwardHeaders] with value [true] as the bean class [org.apache.camel.spi.RestConfiguration] has no suitable setter method, or not possible to lookup a bean with the id [true] in Spring Boot registry"

Please help me here. Looking at the examples at Camel's website it looks quite easy to configure a rest producer endpoint but for me it has been very difficult.

Edit-

As Rest component is part of camel-core, I was using camel-core-2.22.1.

Then as suggested by Raúl Cancino, I tried this as well-

to("rest:post:provideStatus?host=gatewayinbound-dev11.devsite.com:443")

Solution

  • The problem was with the version of camel-core library my applcation was using (as transitive dependency), when I switched to camel-core-2.24.2 the problem got resolved.

    I compared org.apache.camel.spi.RestConfiguration classes from both versions of camel-core, 2.22.1 and 2.24.2 and found that property useXForwardHeaders was missing in older version.