애플릿 기반 애플리케이션을 Web Start 애플리케이션으로 마이그레이션하고 있습니다.JavaFX Web Start 애플리케이션의 사용자 정의 SecureClassLoader 및 권한
다른 미디어에서 리소스 및 클래스를 가져 오려면 사용자 정의 ClassLoader가 필요합니다. 또한 맨 위에 JavaFX 레이어를 사용합니다.
WebStart 응용 프로그램에 대한 모든 권한이 부여되고 매니페스트가 완료되고 jar가 유효한 인증서로 서명됩니다. 사실, 미디어에서 클래스를 가져 오지 않고 기본 ClassLoader로로드하면 모든 것이 작동합니다. java.security.AccessControlException :에 의한
: 나는 사용자 정의 클래스 로더를 사용하는 경우에, 우리는 같은 문제에 직면 액세스 거부 ("낸다 java.net.SocketPermission" "www.mydomain.com:443" "연결 , 해결 "참조)
테스트 제안의 경우 사용자 지정 SecureClassLoader가 모든 사용 권한을 부여합니다. 그건 도움이 안돼.
나는 또한 보안 관리자를 교체하려고하지만거야 그럴 수 없어 :
이 java.lang.SecurityException : JVM 공유, 경우에도 보안 관리자에게
을 설정할 수 없습니다 I
매개 변수 이름 = "separate_jvm"값 = "true"를
,691 다음 JNLP 내부 애플릿 설명에 매개 변수를 추가
관리자를 대체 할 수 없습니다.
누구든지 해당 클래스에 대한 사용 권한을 부여 할 수 있습니까? 클라이언트 측에서 정책 파일을 변경할 수 없습니다.
java.security.AccessControlException: access denied ("java.net.SocketPermission" "www.mydomian.com" "resolve")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source)
at sun.plugin2.applet.FXAppletSecurityManager.checkConnect(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getByName(Unknown Source)
at com.sun.deploy.net.CrossDomainXML.addAccess(Unknown Source)
at com.sun.deploy.net.CrossDomainXML.allowNoAccess(Unknown Source)
at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source)
at sun.plugin2.applet.FXAppletSecurityManager.checkConnect(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getByName(Unknown Source)
at java.net.URLStreamHandler.getHostAddress(Unknown Source)
at java.net.URLStreamHandler.hashCode(Unknown Source)
at java.net.URL.hashCode(Unknown Source)
at java.util.HashMap.hash(Unknown Source)
at java.util.HashMap.get(Unknown Source)
at com.sun.deploy.security.CPCallbackHandler.getDefaultCodeSource(Unknown Source)
at com.sun.deploy.security.CPCallbackHandler.access$1400(Unknown Source)
at com.sun.deploy.security.CPCallbackHandler$ChildElement.<init>(Unknown Source)
at com.sun.deploy.security.CPCallbackHandler$ChildCallback.openClassPathElement(Unknown Source)
at com.sun.deploy.security.CPCallbackHandler$ChildCallback.openClassPathElement(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.getCodebaseLookup(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.getResourceAsResource(Unknown Source)
at com.sun.deploy.security.DeployURLClassLoader.getResourceAsStream(Unknown Source)
at java.lang.Class.getResourceAsStream(Unknown Source)
at mypackage.Util.readResource(Util.java:42)
at mypackage.CustomClassLoader.encryptedLookup(CustomClassLoader.java:101)
at mypackage.ClassLoader.findClass(CustomClassLoader.java:78)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at customUtil.ParametersGetter.getRole(ParametersGetter.java:80)
at com.application.ModuleConfig.main(ModConfig.java:448)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at mypackage.CustomClassLoader.launch(CustomClassLoader.java:126)
at mypackage.Browser$1.call(Browser.java:54)
at mypackage.Browser$1.call(Browser.java:45)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
감사 : 호출이 어디에서 오는지
여기에 나는 점에 스택 트레이스를 추가합니다.