M Alok
M Alok

Reputation: 1081

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")

Upvotes: 0

Views: 2583

Answers (2)

M Alok
M Alok

Reputation: 1081

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.

Upvotes: 0

Ra&#250;l Cancino
Ra&#250;l Cancino

Reputation: 76

please try the following uri format on your to(), as a starting point:

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

then you can switch to rest configuration

restConfiguration().host("gatewayinbound-dev11.devsite.com:443");

also, using camel-http this would be:

.setHeader(Exchange.HTTP_METHOD,constant(org.apache.camel.component.http.HttpMethods.POST))
.to("https:gatewayinbound-dev11.devsite.com/provideStatus?bridgeEndpoint=true")

Hope it works for you

Upvotes: 0

Related Questions