web-dev-qa-db-ja.com

実行時にJava.net.preferIPv4Stack = trueを設定する方法は?

IPv6を無効にする必要があります。そのため、JavaドキュメントはjvmプロパティJava.net.preferIPv4Stack=true

しかし、私はコード自体からそれを行う方法を理解していません。

多くのフォーラムでコマンドプロンプトから実行する方法が示されましたが、実行時に実行する必要があります。

32

System.setProperty("Java.net.preferIPv4Stack" , "true");を使用できます

これは、-Djava.net.preferIPv4Stack=trueを介してコマンドラインで渡すことと同じです。

48
Kal

別のアプローチとして、必死で、(a)コードまたは(b)コマンドラインにアクセスできない場合、環境変数を使用できます。

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

特にJava web startは環境変数を設定します:

JAVAWS_VM_ARGS

アプレットの場合:

_JPI_VM_OPTIONS

例えば.

_JPI_VM_OPTIONS = -Djava.net.preferIPv4Stack = true

さらに、Windowsのグローバルオプション(一般的なJavaアプリケーション)では、[Java]タブの下のJavaコントロールプランページで設定できます。

9
Jamie Love

Java 7. 7。同じホストから動作し、外部メールサーバーが動作している間。

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

コードで、しかしそれは失敗しました。そのため、パラメータ値はおそらくシステムによって以前にキャッシュされました。 VM引数を設定する

-Djava.net.preferIPv4Stack=true

webサーバーの起動スクリプトで機能しました。

もう1つの証拠:非常に小さな対象テストプログラムで、コードでシステムプロパティを設定するdid work。したがって、おそらくJVMの起動時だけでなく、最初のソケットが使用されるときにパラメーターがキャッシュされる可能性があります。

9
dtc

まあ、

System.setProperty("Java.net.preferIPv4Stack" , "true");を使用しましたが、Javaで動作しますが、JBOSS AS7では動作しません。

ソリューションの回避策は次のとおりです。

ファイル$ {JBOSS_HOME} /bin/standalone.conf.batの最後に以下の行を追加します(:Java_OPTS_SET

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

注:JBossサーバーを再起動します

3
Hussein mahyoub

System.setPropertyはアプレットに対して機能しません。 JVMはアプレットの起動前にすでに実行されているためです。この場合、次のようなアプレットパラメータを使用します。

    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は https://www.Java.com/js/deployJava.js にあります。

0
mkysoft

環境変数Java_TOOL_OPTSを次のように設定できます。これは、アプリケーションのJVMによって選択されます。

java_TOOL_OPTS = -Djava.net.preferIPv4Stack = trueを設定します

これはコマンドプロンプトから設定するか、必要に応じてシステム環境変数で設定できます。これは、プライベートセットアップで使用しているインタープリターJavaであっても、マシンで実行されるすべてのJavaアプリケーションに反映されることに注意してください。

0
Soundararajan