从 jetty.xml 动态注入 Jetty 端口的 Rest DSL restConfiguration 方式

Rest DSL restConfiguration way to dynamically inject Jetty port from jetty.xml

你能动态注入 jetty.xml 配置文件中设置的端口吗? 我有多个 jboss 保险丝容器 运行,每个都有不同的端口配置,从 rmiRegistryPort 到 jetty.port。我希望能够从 jetty.xml 中注入端口值。如果我使用的是 camel-jetty,我是否需要担心设置端口,因为如果从这个文件中自动获取端口???

        restConfiguration() 
            .component("jetty")         
            .host("localhost")          
            .port(getPort())            
            .scheme("https")            
            .bindingMode(RestBindingMode.json)  
            .jsonDataFormat("json-jackson")     
            .dataFormatProperty("prettyPrint", "true"); 

我不认识自己,但是 Camel REST DSL Docs 说:

if you use servlet component then the port number configured here does not apply, as the port number in use is the actual port number the servlet component is using, e.g., if using Apache Tomcat its the tomcat HTTP port, if using Apache Karaf it's the HTTP service in Karaf that uses port 8181 by default etc. Though in those situations setting the port number here, allows tooling and JMX to know the port number, so its recommended to set the port number to the number that the servlet engine uses.

基于此描述,我假设

  • Camel 使用实际的码头 HTTP 端点
  • 无论您在 restConfiguration 中设置什么端口,jetty HTTP 端点都会忽略它
  • 只有在 restConfiguration
  • 中设置正确的端口,JMX 和其他工具才能正常工作
  • 您必须为 restConfiguration(否 auto-magic)
  • 提供正确的码头端口

您可以在 application.properties 中使用端口值并读取它来设置值。

谢谢维克多,是的,...我只是想知道 Jetty 服务器是否有一些神奇的东西,我想我需要测试一下。 因为在 etc/jetty.xml 下有一个 jetty.xml 配置文件定义了码头配置...但是在每个示例中我都看到了端口的定义...看起来是如果启用可能???但我不知道。原因是我有 8 个不同的 JBoss 保险丝容器 运行 都有不同的 etc/configs 以避免端口冲突。

inside jetty.xml
        <!-- =========================================================== -->
        <!-- Special server connectors -->
        <!-- =========================================================== -->
        <!-- This is a sample for alternative connectors, enable if needed -->
        <!-- =========================================================== -->
        <!--
        <Call name="addConnector">
                <Arg>
                        <New class="org.eclipse.jetty.server.ServerConnector">
                                <Arg name="server">
                                        <Ref refid="Server" />
                                </Arg>
                                <Arg name="factories">
                                        <Array type="org.eclipse.jetty.server.ConnectionFactory">
                                                <Item>
                                                        <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                                                                <Arg name="config">
                                                                        <Ref refid="httpConfig" />
                                                                </Arg>
                                                        </New>
                                                </Item>
                                        </Array>
                                </Arg>
                                <Set name="host">
                                        <Property name="jetty.host" default="localhost" />
                                </Set>
                                <Set name="port">
                                        <Property name="jetty.port" default="8285" />
                                </Set>
                                <Set name="idleTimeout">
                                        <Property name="http.timeout" default="30000" />
                                </Set>
                                <Set name="name">jettyConn1</Set>
                        </New>
                </Arg>
        </Call>