【问题标题】:How can I change WildFly listening ports with Maven?如何使用 Maven 更改 WildFly 监听端口?
【发布时间】:2017-11-14 21:32:57
【问题描述】:

我正在使用 wildfly-maven-plugin 进行集成测试。

如何更改端口默认编号(8080、8443)?

我找不到这些端口号的任何配置属性。

更新

我尝试了yntelectualanswer,但端口号仍然是默认值。

我找到this 并且端口号已更改。但是启动目标失败,产生“在 XX 秒内启动失败”,可能某些信令程序不知道更改的端口。

    <executions>
      <execution>
        <id>wildfly-start</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>start</goal>
        </goals>
      </execution>
      <execution>
        <id>wildfly-deploy</id>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>deploy</goal>
        </goals>
      </execution>
      <execution>
        <id>wildfly-undeploy</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>undeploy</goal>
        </goals>
      </execution>
      <execution>
        <id>wildfly-shutdown</id>
        <phase>post-integration-test</phase>
        <goals>
          <goal>shutdown</goal>
        </goals>
      </execution>
    </executions>

使用jvmArgs

<configuration>
  <jvmArgs>-Djboss.socket.binding.port-offset=40000</jvmArgs>
</configuration>

端口号仍为默认值。

14:25:34,244 INFO  ... Undertow HTTP listener default listening on 127.0.0.1:8080
14:25:35,107 INFO  ... Undertow HTTPS listener https listening on 127.0.0.1:8443
14:25:40,183 INFO  ... Http management interface listening on http://127.0.0.1:9990/management
14:25:40,183 INFO  ... Admin console listening on http://127.0.0.1:9990

使用server-args

<configuration>
  <server-args>
    <server-arg>-Djboss.socket.binding.port-offset=40000</server-arg>
  </server-args>
</configuration>

端口号已更改,但 start 目标未完成。

14:29:35,535 INFO  ... Undertow HTTP listener default listening on 127.0.0.1:48080
14:29:36,543 INFO  ... Undertow HTTPS listener https listening on 127.0.0.1:48443
14:29:41,535 INFO  ... Http management interface listening on http://127.0.0.1:49990/management
14:29:41,535 INFO  ... Admin console listening on http://127.0.0.1:49990
BUILD FAILURE
------------------------------------------------------------------------
14:30:07,345 INFO  ... Undertow HTTPS listener https stopped, was bound to 127.0.0.1:48443
14:30:07,347 INFO  ... Undertow HTTP listener default suspending
14:30:07,357 INFO  ... Undertow HTTP listener default stopped, was bound to 127.0.0.1:48080
14:30:07,359 INFO  ... Undertow 1.4.0.Final stopping
14:30:07,365 INFO  ... WildFly Full 10.1.0.Final (WildFly Core 2.2.0.Final) stopped in 34ms
[INFO] Final Memory: 34M/460M
------------------------------------------------------------------------
Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:1.2.0.Alpha5:start (wildfly-start) on project ...
The server failed to start: 
The server did not start within 60 seconds. -> [Help 1]

要跟踪的问题

【问题讨论】:

    标签: maven wildfly wildfly-maven-plugin


    【解决方案1】:

    使用wildfly maven 插件,您可以将任何环境或jvm 变量传递给服务器进程。 JBoss/Wildfly 有一个端口偏移的概念,因此您可以为所有默认端口号值添加自定义值,例如使用端口偏移 100 启动服务器,将导致 http 端口监听 8180。使用 maven 插件只需将其指定为 jvm arg:

    <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <configuration>
            <jvmArgs>-Djboss.socket.binding.port-offset=100</jvmArgs>
        </configuration>
    </plugin>
    

    如果你想覆盖任何其他值,你只需要知道它的名字。查看 wildfly 配置,您会看到例如 http 端口在套接字绑定中定义如下:

    &lt;socket-binding name="http" port="${jboss.http.port:8080}"/&gt;

    表达式指定,如果名称为jboss.http.port 的变量存在,则将其用作值。否则,服务器将回退到冒号-:8080 之后指定的值。同样,可以通过设置属性jboss.https.port 来覆盖 https 端口。更多信息请浏览配置文件(默认为standalone.xml)和wildfly plugin docs

    【讨论】:

    • jvmArgs 已弃用,取而代之的是 javaOpts
    【解决方案2】:

    您收到“无法在 XX 秒内启动”,因为您必须为 maven 插件指定管理端口:

    你的情况

    <configuration>
      <server-args>
        <server-arg>-Djboss.socket.binding.port-offset=40000</server-arg>
      </server-args>
      <port>49990</port>
    </configuration>
    

    根据您的使用情况,最好逐个设置端口

    <configuration>
      <server-args>
        <server-arg>-Djboss.http.port=8080</server-arg>
        <server-arg>-Djboss.https.port=8443</server-arg>
        <server-arg>-Djboss.management.http.port=9991</server-arg>
        <server-arg>-Djboss.management.https.port=9993</server-arg>
      </server-args>
      <port>9991</port>
    </configuration>
    

    responseJames R. Perkins 中解释了为什么您需要在配置中使用 &lt;port&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2016-03-29
      • 1970-01-01
      • 2018-04-29
      相关资源
      最近更新 更多