IPv6を無効にする必要があります。そのため、JavaドキュメントはjvmプロパティJava.net.preferIPv4Stack=true
。
しかし、私はコード自体からそれを行う方法を理解していません。
多くのフォーラムでコマンドプロンプトから実行する方法が示されましたが、実行時に実行する必要があります。
System.setProperty("Java.net.preferIPv4Stack" , "true");
を使用できます
これは、-Djava.net.preferIPv4Stack=true
を介してコマンドラインで渡すことと同じです。
別のアプローチとして、必死で、(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コントロールプランページで設定できます。
Java 7. 7。同じホストから動作し、外部メールサーバーが動作している間。
System.setProperty("Java.net.preferIPv4Stack" , "true");
コードで、しかしそれは失敗しました。そのため、パラメータ値はおそらくシステムによって以前にキャッシュされました。 VM引数を設定する
-Djava.net.preferIPv4Stack=true
webサーバーの起動スクリプトで機能しました。
もう1つの証拠:非常に小さな対象テストプログラムで、コードでシステムプロパティを設定するdid work。したがって、おそらくJVMの起動時だけでなく、最初のソケットが使用されるときにパラメーターがキャッシュされる可能性があります。
まあ、
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サーバーを再起動します
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 にあります。
環境変数Java_TOOL_OPTSを次のように設定できます。これは、アプリケーションのJVMによって選択されます。
java_TOOL_OPTS = -Djava.net.preferIPv4Stack = trueを設定します
これはコマンドプロンプトから設定するか、必要に応じてシステム環境変数で設定できます。これは、プライベートセットアップで使用しているインタープリターJavaであっても、マシンで実行されるすべてのJavaアプリケーションに反映されることに注意してください。