无法在wildfly-swarm上启动jax-rs服务

时间:2016-05-17 10:32:26

标签: wildfly wildfly-10 wildfly-swarm

我有一个JAX-RS服务,可以在本地使用wildfly-swarm 1.0.0.Beta8,但是当我在远程计算机上启动它时,我得到以下异常:

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地址。

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

有什么建议吗?

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我在Ken's answer上积累。当我尝试它时,我遇到以下错误:java.lang.ClassNotFoundException: org.wildfly.swarm.examples.netflix.ribbon.frontend.Main

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

    <configuration>
      <properties>
        <java.net.preferIPv4Stack>true</java.net.preferIPv4Stack>
      </properties>
    </configuration>