我有一个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地址。
我不知道我可能做错了什么。
有什么建议吗?
答案 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>