IPv6를 비활성화해야합니다. java 문서는 jvm 속성 java.net.preferIPv4Stack=true
설정을 나타냅니다.런타임시 java.net.preferIPv4Stack = true로 설정하는 방법은 무엇입니까?
하지만 코드 자체에서 어떻게 수행하는지 이해할 수 없습니다.
많은 포럼에서 명령 프롬프트에서이 방법을 보여 주었지만 런타임에는이를 수행해야합니다.
IPv6를 비활성화해야합니다. java 문서는 jvm 속성 java.net.preferIPv4Stack=true
설정을 나타냅니다.런타임시 java.net.preferIPv4Stack = true로 설정하는 방법은 무엇입니까?
하지만 코드 자체에서 어떻게 수행하는지 이해할 수 없습니다.
많은 포럼에서 명령 프롬프트에서이 방법을 보여 주었지만 런타임에는이를 수행해야합니다.
당신은 당신이 필사적이고 (a)는 코드 나에 대한 액세스 (없는 경우는, -Djava.net.preferIPv4Stack=true
획득 한 브로드 캐스트 주소는 여전히 255.255.255.255 –
입니다. 이는 IPv4에서는 꽤 정상적인 것처럼 보입니다. 표준 0.0.0.0 네트워크 브로드 캐스트 주소입니다. –
이것이 효과가 있습니까? [소스] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/net/InetAddress.java#InetAddress.0preferIPv6Address)에서 보니 나에게'java.net.preferIPv4Stack'은 JVM이 시작될 때만 읽히고 다시는 읽히지 않는다. 그래도 틀릴 수 있습니다. – peterh
를 통해 명령 줄에서 또 다른 접근 방법을 전달하기에 해당 System.setProperty("java.net.preferIPv4Stack" , "true");
사용할 수 있습니다 b) 명령 행 다음 환경 변수를 사용할 수 있습니다.
http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-Desktop/html/plugin.html.
JAVAWS_VM_ARGS
및 애플릿
:_JPI_VM_OPTIONS
예컨대 Java 웹 환경 변수를 설정하기 시작 특별히
_JPI_VM_OPTIONS =를 -Djava.net.preferIPv4Stack = 사실
또한, (일반 자바 애플리케이션) 윈도우 글로벌 옵션은 "자바"탭에서 자바 관리 계획 페이지에서 설정할 수 아래.
Java 7을 실행하는 웹 서버의 웹 응용 프로그램에서 javax.mail을 사용하여 메일을 보내려고 할 때 매우 문제가 발생했습니다. 같은 호스트에서 텔넷 및 핑이 작동하고 있음에도 불구하고 내부 메일 서버 대상이 "네트워크 도달 불가능"으로 실패했습니다. 외부 메일 서버가 작동하는 동안. 시도했지만 코드에서
System.setProperty("java.net.preferIPv4Stack" , "true");
코드에 오류가 발생했습니다. 따라서 매개 변수 값은 아마도 시스템에 의해 일찍 캐시되었을 것입니다. VM 인수 설정
-Djava.net.preferIPv4Stack=true
웹 서버 시작 스크립트가 작동했습니다.
추가적인 작은 증거 : 코드의 시스템 속성을 으로 설정하면 매우 작은 대상 테스트 프로그램에서이 작동합니다. 따라서 JVM이 시작될 때와 마찬가지로 첫 번째 소켓이 사용될 때 매개 변수가 아마도 캐싱 될 것입니다.
아니라,
나는System.setProperty("java.net.preferIPv4Stack" , "true");
를 사용하고는 JAVA에서 작동하지만,이 JBOSS의 AS7 작동하지 않습니다.
여기에 솔루션 주위에 내 작품,
가 파일 $ {JBOSS_HOME} /bin/standalone.conf의 끝 부분에 아래 줄을 추가합니다.박쥐
set "JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true"
(단지 :JAVA_OPTS_SET
후) 주 :
System.setProperty 에의 애플릿 작동하지 않습니다 JBoss 서버를 다시 시작합니다. 애플릿이 시작되기 전에 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을 찾을 수 있습니다 당신은 모든 응용 프로그램에 대해 JVM에 의해 포착 될, 다음과 같은 환경 변수 JAVA_TOOL_OPTS을 설정할 수 있습니다.
세트 JAVA_TOOL_OPTS =를 -Djava.net.preferIPv4Stack = 사실
당신은 명령 프롬프트에서이 설정하거나 필요에 따라, 시스템 환경 변수에 설정할 수 있습니다. 이것은 개인 설정에서 가지고있는 자바 인터프리터 인 경우에도 컴퓨터에서 실행되는 모든 Java 응용 프로그램에 반영됩니다.
IPv6에서 코드에있는 버그를 해결하려면 IPv6를 사용하지 않도록 설정하면됩니다. 이제 실제 문제를 해결하고 나중에 두통을 피하십시오. – Flexo
IPv6를 사용하지 않도록 설정해야하는 이유를 알고 싶습니다. 합법적 인 이유가있을 수 있지만, 아직 하나도 보지 못했습니다 ... –
@BrianKnoblauch 여기 있습니다 : [authbind] (http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html)는 IP4에서만 작동합니다. – maaartinus