2012-03-27 2 views
31

IPv6를 비활성화해야합니다. java 문서는 jvm 속성 java.net.preferIPv4Stack=true 설정을 나타냅니다.런타임시 java.net.preferIPv4Stack = true로 설정하는 방법은 무엇입니까?

하지만 코드 자체에서 어떻게 수행하는지 이해할 수 없습니다.

많은 포럼에서 명령 프롬프트에서이 방법을 보여 주었지만 런타임에는이를 수행해야합니다.

+5

IPv6에서 코드에있는 버그를 해결하려면 IPv6를 사용하지 않도록 설정하면됩니다. 이제 실제 문제를 해결하고 나중에 두통을 피하십시오. – Flexo

+1

IPv6를 사용하지 않도록 설정해야하는 이유를 알고 싶습니다. 합법적 인 이유가있을 수 있지만, 아직 하나도 보지 못했습니다 ... –

+4

@BrianKnoblauch 여기 있습니다 : [authbind] (http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html)는 IP4에서만 작동합니다. – maaartinus

답변

46

당신은 당신이 필사적이고 (a)는 코드 나에 대한 액세스 (없는 경우는, -Djava.net.preferIPv4Stack=true

+0

획득 한 브로드 캐스트 주소는 여전히 255.255.255.255 –

+3

입니다. 이는 IPv4에서는 꽤 정상적인 것처럼 보입니다. 표준 0.0.0.0 네트워크 브로드 캐스트 주소입니다. –

+3

이것이 효과가 있습니까? [소스] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/net/InetAddress.java#InetAddress.0preferIPv6Address)에서 보니 나에게'java.net.preferIPv4Stack'은 JVM이 시작될 때만 읽히고 다시는 읽히지 않는다. 그래도 틀릴 수 있습니다. – peterh

9

를 통해 명령 줄에서 또 다른 접근 방법을 전달하기에 해당 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 = 사실

또한, (일반 자바 애플리케이션) 윈도우 글로벌 옵션은 "자바"탭에서 자바 관리 계획 페이지에서 설정할 수 아래.

7

Java 7을 실행하는 웹 서버의 웹 응용 프로그램에서 javax.mail을 사용하여 메일을 보내려고 할 때 매우 문제가 발생했습니다. 같은 호스트에서 텔넷 및 핑이 작동하고 있음에도 불구하고 내부 메일 서버 대상이 "네트워크 도달 불가능"으로 실패했습니다. 외부 메일 서버가 작동하는 동안. 시도했지만 코드에서

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

코드에 오류가 발생했습니다. 따라서 매개 변수 값은 아마도 시스템에 의해 일찍 캐시되었을 것입니다. VM 인수 설정

-Djava.net.preferIPv4Stack=true 

웹 서버 시작 스크립트가 작동했습니다.

추가적인 작은 증거 : 코드의 시스템 속성을 으로 설정하면 매우 작은 대상 테스트 프로그램에서이 작동합니다. 따라서 JVM이 시작될 때와 마찬가지로 첫 번째 소켓이 사용될 때 매개 변수가 아마도 캐싱 될 것입니다.

2

아니라,

나는 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 후) 주 :

0

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

당신은 https://www.java.com/js/deployJava.js

0

에서 deployJava.js을 찾을 수 있습니다 당신은 모든 응용 프로그램에 대해 JVM에 의해 포착 될, 다음과 같은 환경 변수 JAVA_TOOL_OPTS을 설정할 수 있습니다.

세트 JAVA_TOOL_OPTS =를 -Djava.net.preferIPv4Stack = 사실

당신은 명령 프롬프트에서이 설정하거나 필요에 따라, 시스템 환경 변수에 설정할 수 있습니다. 이것은 개인 설정에서 가지고있는 자바 인터프리터 인 경우에도 컴퓨터에서 실행되는 모든 Java 응용 프로그램에 반영됩니다.

관련 문제