JBoss中枚举的每个NetworkInterface总是isUp

问题描述 投票:5回答:1

我写了以下EJB:

@Singleton
@LocalBean
@Startup
public class Starter {
    private static final Logger logger = Logger.getLogger("lab");

    @PostConstruct
    public void init() throws Exception {
        for (final Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
            final NetworkInterface iface = en.nextElement();
            if (iface.isUp()) {
                logger.info(iface);
            }
        }
    }
}

如部署此日志:

name:lo (Software Loopback Interface 1)
name:net0 (WAN Miniport (SSTP))
name:net1 (WAN Miniport (L2TP))
name:net2 (WAN Miniport (PPTP))
name:ppp0 (WAN Miniport (PPPOE))
name:eth0 (WAN Miniport (IPv6))
name:eth1 (WAN Miniport (Network Monitor))
name:eth2 (WAN Miniport (IP))
name:net5 (Intel(R) Wireless WiFi Link 4965AGN)
name:eth7 (Intel(R) Wireless WiFi Link 4965AGN - VirtualBox Bridged Networking Driver Miniport)
name:eth8 (VirtualBox Host-Only Ethernet Adapter)
name:net20 (Intel(R) Wireless WiFi Link 4965AGN-Netmon Lightweight Filter Driver-0000)
name:eth10 (VirtualBox Host-Only Ethernet Adapter-Netmon Lightweight Filter Driver-0000)
name:eth11 (VirtualBox Host-Only Ethernet Adapter-QoS Packet Scheduler-0000)
name:eth12 (VirtualBox Host-Only Ethernet Adapter-WFP LightWeight Filter-0000)
name:eth13 (WAN Miniport (IPv6)-QoS Packet Scheduler-0000)
name:eth14 (WAN Miniport (IP)-QoS Packet Scheduler-0000)
name:eth15 (WAN Miniport (Network Monitor)-Netmon Lightweight Filter Driver-0000)
name:eth16 (WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000)
name:net21 (Intel(R) Wireless WiFi Link 4965AGN-Native WiFi Filter Driver-0000)
name:eth20 (Intel(R) Wireless WiFi Link 4965AGN - VirtualBox Bridged Networking Driver Miniport-Netmon Lightweight Filter Driver-0000)
name:eth21 (Intel(R) Wireless WiFi Link 4965AGN - VirtualBox Bridged Networking Driver Miniport-QoS Packet Scheduler-0000)
name:eth22 (Intel(R) Wireless WiFi Link 4965AGN - VirtualBox Bridged Networking Driver Miniport-WFP LightWeight Filter-0000)

哪个无效。在J2SE运行时上运行的同一循环的输出如下:

name:lo (Software Loopback Interface 1)
name:net5 (Intel(R) Wireless WiFi Link 4965AGN)
name:eth8 (VirtualBox Host-Only Ethernet Adapter)

这是应用程序服务器问题吗?我正在使用JBoss EAP 6.1.0 GA(基于AS 7构建)。如何在不打开每个接口的情况下获得有效的NetworkInterfaces列表?除此之外,我想知道哪个支持多播,但这也总是true


回购

我已经用Idea的项目repo at github创建了compiled ear,并且为jbosspure jdk的运行创建了日志。它也包含used configuration filelist of dynamically loaded libraries

java jakarta-ee jboss7.x
1个回答
1
投票

区别是使用“ -Djava.net.preferIPv4Stack = true”命令行选项的结果,您可能使用此选项集启动了JBoss JVM。当使用此选项启动独立程序时,它将获得相同的结果。

关于为什么会发生这种情况,我仍在搜索。到目前为止,我得出的结论是,当您在同一物理设备上具有多个接口时,其中有些接口启用了IPv6,有些接口禁用了IPv6,这会使有些困惑。这个“东西”可能是Windows,JVM或NetworkInterface类。

有关此选项的一些信息,以及Oracle Networking IPv6 User Guide中JVM中IPv4和IPv6的工作方式。

Google搜索“ java.net.preferIPv4Stack isUp”导致OpenJDK bug report,该状态实际上指出在接口上禁用IPv6的某些情况下,ifUp()方法可能无法正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.