[ 
https://issues.apache.org/jira/browse/CAMEL-25086?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Federico Mariani resolved CAMEL-25086.
--------------------------------------
    Resolution: Fixed

> camel-platform-http-starter: fails to start outside a servlet web application 
> (ServerProperties/WebMvcProperties)
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25086
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25086
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-platform-http, camel-spring-boot
>    Affects Versions: 4.22.0, 4.22.1
>            Reporter: Henrik
>            Priority: Major
>             Fix For: 4.22.2, 4.23.0
>
>
> h3. Summary
> Since 4.22.0 an application context that is not a servlet web application 
> fails to start when {{camel-platform-http-starter}} is on the classpath:
> {noformat}
> Error creating bean with name 'platform-http-engine' ... Unsatisfied 
> dependency expressed through method
> 'springBootPlatformHttpEngine' parameter 1: No qualifying bean of type
> 'org.springframework.boot.web.server.autoconfigure.ServerProperties' available
> {noformat}
> and, from {{SpringBootPlatformWebMvcConfiguration}}, the same for 
> {{org.springframework.boot.webmvc.autoconfigure.WebMvcProperties}}.
> The common case is {{@SpringBootTest(webEnvironment = WebEnvironment.NONE)}} 
> on an application with platform-http or Rest DSL routes, which worked on 
> 4.21.0.
> h3. Cause
> "camel-platform-http-starter: align auto-configuration with Spring Boot 4 
> idioms" (595c737) made the engine inject {{ServerProperties}} instead of 
> reading {{server.port}}, and stopped enabling {{WebMvcProperties}} on the 
> grounds that the owning auto-configuration does. Spring Boot only registers 
> both beans in a servlet web application, so neither exists in a non-web 
> context.
> {{@ConditionalOnWebApplication}} is not a fix: without an engine bean 
> {{PlatformHttpComponent.getOrCreateEngine}} fails to resolve one, so the 
> routes fail to start instead.
> h3. Proposed fix
> Inject both as {{ObjectProvider}}. The engine port uses {{ServerProperties}} 
> when present, otherwise the {{server.port}} property, otherwise 8080 (the 
> 4.21 behaviour). A missing {{WebMvcProperties}} means no async request 
> timeout was configured.
> h3. Found in
> On the 4.21.0 -> 4.22.1 upgrade: every {{WebEnvironment.NONE}} test context 
> failed to start.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to