it-swarm.com.de

Wie kann Java.net.preferIPv4Stack = zur Laufzeit gesetzt werden?

Ich muss IPv6 deaktivieren. In der Java-Dokumentation wird dafür die Einstellung der jvm-Eigenschaft Java.net.preferIPv4Stack=true angegeben.

Aber ich verstehe es nicht aus dem Code selbst.

In vielen Foren wurde dies mit dem Befehl Prompt demonstriert, aber ich muss es zur Laufzeit tun.

31

Sie können System.setProperty("Java.net.preferIPv4Stack" , "true"); verwenden.

Dies entspricht der Übergabe in der Befehlszeile über -Djava.net.preferIPv4Stack=true

47
Kal

Ein anderer Ansatz: Wenn Sie verzweifelt sind und keinen Zugriff auf (a) den Code oder (b) die Befehlszeile haben, können Sie Umgebungsvariablen verwenden:

http://docs.Oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html .

Definieren Sie speziell für Java-Webstart die Umgebungsvariable:

JAVAWS_VM_ARGS

und für Applets:

_JPI_VM_OPTIONS

z.B.

_JPI_VM_OPTIONS = -Djava.net.preferIPv4Stack = true

Außerdem können unter Windows globale Optionen (für allgemeine Java-Anwendungen) auf der Seite Java-Steuerungsplan auf der Registerkarte "Java" festgelegt werden.

9
Jamie Love

Ich bin auf dieses Problem gestoßen, als ich versuche, Mail mit javax.mail von einer Webanwendung auf einem Webserver mit Java 7 zu senden. Interne Mailserverziele sind mit "Netzwerk unerreichbar" gescheitert, obwohl Telnet und Ping vom selben Host aus und außerhalb laufen Mailserver funktionierten. Ich habe es versucht

System.setProperty("Java.net.preferIPv4Stack" , "true");

im Code, aber das ist fehlgeschlagen. Der Parameterwert wurde also wahrscheinlich früher vom System zwischengespeichert. Festlegen des Arguments VM

-Djava.net.preferIPv4Stack=true

im Webserver-Startskript funktionierte.

Ein weiterer Beweis: In einem sehr kleinen gezielten Testprogramm wird die Systemeigenschaft im Code did work festgelegt. Der Parameter wird also wahrscheinlich zwischengespeichert, wenn der erste Socket verwendet wird, wahrscheinlich nicht beim Start der JVM.

8
dtc

gut,

Ich habe System.setProperty("Java.net.preferIPv4Stack" , "true"); verwendet und es funktioniert von Java aus, aber es funktioniert nicht auf JBOSS AS7. 

Hier ist meine Arbeit um die Lösung,

Fügen Sie die untere Zeile am Ende der Datei $ {JBOSS_HOME} /bin/standalone.conf.bat hinzu (direkt nach :Java_OPTS_SET).

set "Java_OPTS=%Java_OPTS% -Djava.net.preferIPv4Stack=true"

Hinweis: Starten Sie den JBoss-Server neu

3
Hussein mahyoub

System.setProperty funktioniert nicht für Applets. Weil die JVM bereits vor dem Start des Applets ausgeführt wird. In diesem Fall verwenden wir Applet-Parameter wie folgt: 

    deployJava.runApplet({
        id: 'MyApplet',
        code: 'com.mkysoft.myapplet.SomeClass',
        archive: 'com.mkysoft.myapplet.jar'
    }, {
        Java_version: "1.6*", // Target version
        cache_option: "no",
        cache_archive: "",
        codebase_lookup: true,
        Java_arguments: "-Djava.net.preferIPv4Stack=true"
    },
       "1.6" // Minimum version
    );

DeployJava.js finden Sie unter https://www.Java.com/js/deployJava.js

0
mkysoft

sie können die Umgebungsvariable Java_TOOL_OPTS wie folgt setzen, die von JVM für jede Anwendung ausgewählt wird.

setzen Sie Java_TOOL_OPTS = -Djava.net.preferIPv4Stack = true

Sie können dies über den Befehl Eingabeaufforderung oder in Systemumgebungsvariablen festlegen, je nach Bedarf. Beachten Sie, dass sich dies auf alle Java-Anwendungen auswirkt, die auf Ihrem Computer ausgeführt werden, auch wenn es sich um einen Java-Interpreter handelt, den Sie in einem privaten Setup verwenden.

0
Soundararajan