2013-08-14 6 views
5

ich folgende EJB schrieb:Jeder Network innerhalb JBoss immer ISUP aufgezählt

@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); 
      } 
     } 
    } 
} 

Auf deploy diese protokolliert wie:

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) 

Welche nicht gültig ist. Ausgabe von dieser gleichen Schleife, die auf J2SE-Laufzeit ausgeführt wird, sieht wie folgt aus:

Ist dies ein Anwendungsserverproblem? Ich benutze JBoss EAP 6.1.0 GA (das auf AS 7 aufgebaut ist). Wie bekomme ich eine gültige Liste von NetworkInterfaces, die geöffnet werden, ohne die Verbindung auf jedem zu öffnen? Außerdem möchte ich wissen, welche Multicast unterstützt, aber das ist immer true auch.


Repo

Ich habe repo at github mit Idee des Projekts erstellt wurde, compiled ear und Protokolle für beide jboss und pure jdk läuft. Es enthält auch used configuration file und list of dynamically loaded libraries.

+0

Verwenden Sie die gleiche JRE? Oder verwendet JBoss z. OpenJDK und Ihre eigenständige App Oracle JRE? JBoss verwendet (optional) native Bibliotheken für ssl und Netzwerk und Datei io, aber ich bezweifle, dass es etwas mit Ihrem Problem zu tun hat. – greyfairer

+0

Ja, beide, pure loop und ejb wurden auf demselben 'jdk1.7.0_21_i586' von Oracle getestet – kbec

+0

Der SecurityManager kann die Anzahl der Netzwerkschnittstellen begrenzen, die Sie sehen können, aber sollte nicht den isUp Status beeinflussen ... Hat Sie versuchen, ohne die nativen Module zu laufen? IIRC heißen sie libapr-1.so und libapr-util-1.so. – greyfairer

Antwort

1

Der Unterschied ist ein Ergebnis der Verwendung der Kommandozeilenoption "-Djava.net.preferIPv4Stack = true", wahrscheinlich starten Sie die JBoss JVM mit dieser Option. Wenn Sie das eigenständige Programm mit dieser Option starten, erhalten Sie die gleichen Ergebnisse.

Warum genau das passiert suche ich noch. Bis jetzt bin ich zu der Vermutung gekommen, dass etwas verwirrt wird, wenn Sie mehrere Schnittstellen auf demselben physischen Gerät haben, wo einige IPv6 aktiviert haben und einige deaktiviert haben. Dieses "Etwas" könnte die Windows-, die JVM- oder die NetworkInterface-Klasse sein.

Einige Informationen über die Option und wie IPv4 und IPv6 innerhalb der JVM in der Networking IPv6 User Guide von Oracle arbeiten.

Die Google-Suche "java.net.preferIPv4Stack isUp" führt zu einem OpenJDK bug report, der angibt, dass die ifUp() -Methode in einigen Fällen, in denen IPv6 auf der Schnittstelle deaktiviert ist, möglicherweise nicht korrekt funktioniert.

+0

Klingt wie eine Lösung, ich werde es bald überprüfen. – kbec

Verwandte Themen