[
https://issues.apache.org/jira/browse/CAMEL-25533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18125990#comment-18125990
]
Federico Mariani commented on CAMEL-25533:
------------------------------------------
Fixed by [#27667|https://github.com/apache/camel/pull/27667] (main, 4.23.0) and
backported by [#27668|https://github.com/apache/camel/pull/27668]
(camel-4.22.x, 4.22.2).
The HTTP server started implicitly for {{platform-http}} under {{camel run}}
now binds the {{camel.server.*}} settings as camel-main does for
{{camel.server.enabled=true}}: properties files, initial and override
properties, then {{CAMEL_SERVER_*}} OS environment variables and JVM system
properties overriding them, with placeholders resolved. {{--port}} keeps
precedence and {{camel.server.enabled}} itself is ignored there. Not changed:
the implicit server does not switch on {{useGlobalSslContextParameters}}
automatically when a global SSL context exists; it can be set explicitly with
{{camel.server.useGlobalSslContextParameters=true}}.
_Claude Code on behalf of Croway_
> camel-jbang - camel run ignores camel.server.port (and the other
> camel.server.* settings) for the HTTP server started for platform-http unless
> camel.server.enabled=true
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-25533
> URL: https://issues.apache.org/jira/browse/CAMEL-25533
> Project: Camel
> Issue Type: Bug
> Components: camel-jbang
> Affects Versions: 4.22.1
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Minor
> Fix For: 4.22.2, 4.23.0
>
>
> *Problem*
> Under {{camel run}}, a route that uses {{platform-http}} starts an embedded
> HTTP server even when {{camel.server.enabled}} is not set: when the
> {{platform-http}} component is resolved,
> {{MainHttpServerFactory.setupHttpServer}} (camel-kamelet-main) creates the
> server with a new {{HttpServerConfigurationProperties}}, and only reads the
> port from the run settings file, which {{camel run}} writes only for
> {{--port}}. The {{camel.server.*}} settings of {{application.properties}} are
> applied by camel-main only to the server it starts itself, as
> {{BaseMainSupport.setHttpServerProperties}} binds them and then returns when
> {{camel.server.enabled}} is not true.
> So {{camel.server.port=9090}} (or {{host}}, {{path}}, {{maxBodySize}}...) is
> silently ignored and the server listens on 8080, while the auto-configuration
> summary at startup lists {{[application.properties] camel.server.port =
> 9090}} as applied. Adding {{camel.server.enabled=true}} makes it work.
> We found this while evaluating AI coding agents on legacy-to-Camel
> migrations: the agents spent many tool calls looking for why the port was not
> taken, some concluded that "placeholders are not supported for
> camel.server.port", and in 5 of 10 trials the application ended up on the
> wrong port.
> *Reproduction*
> {{hello.camel.yaml}}:
> {code:yaml}
> - route:
> from:
> uri: platform-http:/hello
> steps:
> - setBody:
> constant: Hello
> {code}
> {{application.properties}}:
> {code}
> camel.server.port=9090
> {code}
> {code}
> camel run hello.camel.yaml application.properties
> {code}
> *Expected:* the server listens on 9090.
> *Actual:*
> {code}
> BaseMainSupport : [application.properties] camel.server.port = 9090
> VertxPlatformHttpServer : Vert.x HttpServer started on 0.0.0.0:8080
> MainHttpServerUtil : http://0.0.0.0:8080/hello
> {code}
> {{curl localhost:8080/hello}} answers, {{curl localhost:9090/hello}} does
> not. With {{camel.server.enabled=true}} added to the same file the server
> starts on 9090.
> *Proposal*
> When the HTTP server is started implicitly for {{platform-http}}, apply the
> {{camel.server.*}} properties to it (port, host, path, max body size, static
> content, authentication...), binding them the same way camel-main does when
> {{camel.server.enabled=true}}, with placeholders resolved. The {{--port}}
> option keeps precedence. The run settings file then records the actual port,
> so {{camel export}} and the other commands see it.
> Making {{camel.server.port}} imply {{camel.server.enabled=true}} was
> considered, but it would change plain Camel Main applications, where the
> property alone does not start a server today, while the implicit server is
> specific to {{camel run}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)