How to set java.net.preferIPv4Stack=true at runtime?

前端 未结 6 1659
半阙折子戏
半阙折子戏 2020-12-13 12:56

I need to disable IPv6. For that the java documentation indicates setting jvm property java.net.preferIPv4Stack=true.

But I don\'t understand how to do

相关标签:
6条回答
  • 2020-12-13 13:28

    You can use System.setProperty("java.net.preferIPv4Stack" , "true");

    This is equivalent to passing it in the command line via -Djava.net.preferIPv4Stack=true

    0 讨论(0)
  • 2020-12-13 13:30

    I ran into this very problem trying to send mail with javax.mail from a web application in a web server running Java 7. Internal mail server destinations failed with "network unreachable", despite telnet and ping working from the same host, and while external mail servers worked. I tried

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

    in the code, but that failed. So the parameter value was probably cached earlier by the system. Setting the VM argument

    -Djava.net.preferIPv4Stack=true
    

    in the web server startup script worked.

    One further bit of evidence: in a very small targeted test program, setting the system property in the code did work. So the parameter is probably cached when the first Socket is used, probably not just as the JVM starts.

    0 讨论(0)
  • 2020-12-13 13:32

    Another approach, if you're desperate and don't have access to (a) the code or (b) the command line, then you can use environment variables:

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

    Specifically for java web start set the environment variable:

    JAVAWS_VM_ARGS

    and for applets:

    _JPI_VM_OPTIONS

    e.g.

    _JPI_VM_OPTIONS=-Djava.net.preferIPv4Stack=true

    Additionally, under Windows global options (for general Java applications) can be set in the Java control plan page under the "Java" tab.

    0 讨论(0)
  • 2020-12-13 13:36

    well,

    I used System.setProperty("java.net.preferIPv4Stack" , "true"); and it works from JAVA, but it doesn't work on JBOSS AS7.

    Here is my work around solution,

    Add the below line to the end of the file ${JBOSS_HOME}/bin/standalone.conf.bat (just after :JAVA_OPTS_SET )

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

    Note: restart JBoss server

    0 讨论(0)
  • 2020-12-13 13:40

    you can set the environment variable JAVA_TOOL_OPTS like as follows, which will be picked by JVM for any application.

    set JAVA_TOOL_OPTS=-Djava.net.preferIPv4Stack=true

    You can set this from the command prompt or set in system environment variables, based on your need. Note that this will reflect into all the java applications that run in your machine, even if it's a java interpreter that you have in a private setup.

    0 讨论(0)
  • 2020-12-13 13:51

    System.setProperty is not working for applets. Because JVM already running before applet start. In this case we use applet parameters like this:

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

    You can find deployJava.js at https://www.java.com/js/deployJava.js

    0 讨论(0)
提交回复
热议问题