2

我有一个在本地与 wildfly-swarm 1.0.0.Beta8 一起工作的 JAX-RS 服务,但是当我在远程机器上启动它时,出现以下异常:

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.undertow.listener.default: org.jboss.msc.service.StartException in service jboss.undertow.listener.default: Could not start http listener
    at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:142)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketException: Protocol family unavailable
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.xnio.nio.NioXnioWorker.createTcpConnectionServer(NioXnioWorker.java:190)
    at org.xnio.XnioWorker.createStreamConnectionServer(XnioWorker.java:243)
    at org.wildfly.extension.undertow.HttpListenerService.startListening(HttpListenerService.java:126)
    at org.wildfly.extension.undertow.ListenerService.start(ListenerService.java:138)
    ... 5 more

此外,当我将应用程序部署到完整的 Wildfly 10 时,它工作得很好。

我在谷歌上搜索到“协议系列不可用”异常可能与只有 IPv6 地址的机器有关,而 java 默认为 IPv4,但是这台机器确实有 IPv4 地址。

我不知道我可能做错了什么。

有什么建议么?

4

3 回答 3

7

您可以尝试修改 wildfly-swarm-plugin 以进行如下设置:

  <plugin>
    <groupId>org.wildfly.swarm</groupId>
    <artifactId>wildfly-swarm-plugin</artifactId>
    <configuration>
      <mainClass>org.wildfly.swarm.examples.netflix.ribbon.frontend.Main</mainClass>
      <properties>
        <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
      </properties>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>package</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

它可能需要将 java.net.preferIPv4Stack 设置为 true。

于 2016-06-26T19:21:38.770 回答
2

我以肯的回答为基础。当我尝试它时,我遇到了以下错误:java.lang.ClassNotFoundException: org.wildfly.swarm.examples.netflix.ribbon.frontend.Main.

<mainClass>从 pom 中的插件配置中删除元素就像一个魅力。

    <configuration>
      <properties>
        <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
      </properties>
    </configuration>
于 2017-12-11T16:56:32.423 回答
1

在 $JBOSS_HOME/bin/standalone.conf 中添加 java 选项 JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

于 2017-10-27T11:12:02.570 回答