동일한 서버의 다른 포트에 연결하려는 웹 페이지에서 샌드 박스 애플릿 (Java 8u25)을 사용하고 있습니다.Java에서 crossdomain.xml 검사를위한 연결 시간 초과 설정
이전 버전의 Java-Version (이전 8)에서는 아무 문제없이 작동했습니다.
java 8의 경우 이러한 종류의 액세스는 크로스 도메인 액세스로 간주되므로 대상 포트에 crossdomain.xml을로드하려고 시도합니다.
하지만이 경우이 포트는 HTTP (우리 자신의 바이너리 데이터 프로토콜)를 처리하지 않으며 요청에 대해 적절하게 응답하지 않습니다.
애플릿에 해당 상황에 대한 시간 제한이 없으므로 요청이 CrossDomainXML.check() 호출에서 중단 된 것 같습니다. 다른 방법으로 어떻게 든 연결 시간 제한을 설정하거나 할 수있는 방법이 거기에이 문제를 해결하기 위해 crossdomain.xml 파일이 체크 영향인가
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
- locked <0x058c2288> (a java.io.BufferedInputStream)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
- locked <0x058c2328> (a sun.net.www.protocol.http.HttpURLConnection)
at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
- locked <0x058c2328> (a sun.net.www.protocol.http.HttpURLConnection)
at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
at sun.plugin2.applet.SecurityManagerHelper.checkURLPermissionHelper(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at myCode calling new URL("http://...").openConnection().connect();
: 여기
이 붙어 애플릿의 스레드 덤프에서 스택입니다 ?편집 : 방금 더 악한 것으로 나타났습니다 : 일단이 호출이이 시점에서 멈 추면 (스레드를 죽이더라도) 아무런 호출도 성공적으로 수행 할 수 없습니다. 나는 특정 자물쇠가 열리고 붙어 있던 실을 중단하거나 멈추더라도 막히지 않기다는 것을 믿는다. (인터럽트() 전혀 효과가없는 것 같다.)
이 같은 글로벌 연결 시간 제한은 샌드 박스 애플릿에서 허용되지 않습니다 또한 설정 :
System.setProperty("sun.net.client.defaultReadTimeout", "2000");
System.setProperty("sun.net.client.defaultConnectTimeout", "2000");
그러나 그들을 설정하는 시도 가치가있을 수도 있습니다 외부에서 VM 매개 변수를 통해.