Recuperar del usuario al hacer clic en "Denegar" en el cuadro de diálogo "Solicitar acceso a su computadora" del subprograma
Frecuentes
Visto 1,693 equipos
2
Estoy ejecutando un applet autofirmado usando la biblioteca deploymentApplet.js de Oracle. (Comprobando el html generado, está usando el applet
etiqueta: también estoy usando un archivo JNLP según los tutoriales de implementación de Oracle).
El problema ocurre cuando al usuario se le presenta el cuadro de diálogo que solicita permiso para acceder a su computadora. Si hacen clic en Permitir, todo está bien. Si hacen clic en Denegar, obtengo la siguiente excepción en la consola de Java:
ExitException[ 4]java.lang.RuntimeException: exit(-1)
at com.sun.javaws.Main.systemExit(Main.java:1316)
at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(AppPolicy.java:283)
at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(LaunchDownload.java:1825)
at com.sun.javaws.LaunchDownload.checkSignedResources(LaunchDownload.java:1508)
at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(JNLP2Manager.java:1161)
at sun.plugin2.applet.JNLP2Manager.loadJarFiles(JNLP2Manager.java:473)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1495)
at java.lang.Thread.run(Thread.java:680)
Exception: ExitException[ 4]java.lang.RuntimeException: exit(-1)
java.lang.NullPointerException
at sun.plugin.util.ErrorPanel.deniedCertificateFailure(ErrorPanel.java:334)
at sun.plugin.util.ErrorPanel.<init>(ErrorPanel.java:61)
at sun.plugin.util.GrayBoxPanel.setError(GrayBoxPanel.java:104)
at sun.plugin.util.GrayBoxPainter.paintGrayBox(GrayBoxPainter.java:473)
at sun.plugin.util.GrayBoxPainter$4.run(GrayBoxPainter.java:411)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:643)
at java.awt.EventQueue$1.run(EventQueue.java:641)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:652)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
El navegador se bloquea después de esto y necesito eliminar manualmente el proceso del subprograma Java o reiniciar el navegador. Basado en el seguimiento de la pila y al realizar algunos pasos de depuración del inicializador estático en mi subprograma, no parece que se ejecute ningún código en mi subprograma antes de que se produzca la excepción.
¿Hay alguna forma de recuperarse correctamente cuando el usuario hace clic en Denegar? Idealmente, el applet y la JVM simplemente saldrían limpiamente, pero estoy abierto a cualquier cosa que no deje el navegador colgando.
EDIT:
Información de registro adicional antes de que se produzca la excepción:
security: Showing MacOSXTrustSiteDialog
security: User permitted app to continue without priviledges
security: User has denied the privileges to the code
security: Adding certificate in Deployment denied certificate store
security: Added certificate in Deployment denied certificate store
security: We were not granted permission, exiting
basic: exception: exit(-1).
Java Plug-in 1.6.0_31
Using JRE version 1.6.0_31-b04-415-11M3646 Java HotSpot(TM) 64-Bit Server VM
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java applet or haz tu propia pregunta.
"¿Hay alguna forma de recuperarse correctamente cuando el usuario hace clic en Denegar?" Debe utilizar Oracle JRE. Un Iced Tea JRE no cargaba el código si el usuario rechazó la solicitud de confianza. - Andrew Thompson
Localmente estoy usando la versión actual que Apple envía con 10.7. Sin embargo, supongo que este problema depende de qué JRE tenga el usuario final, ¿correcto? - Jesse Vogt
Usar JavaScript para detectar el subprograma faltante/en el espacio aislado y redirigir a otra página es probablemente lo mejor que puede esperar. - Andrew Thompson
¿Algún consejo sobre cómo funcionaría? Cuando el usuario hace clic en Denegar, el navegador (Chrome actual y FF) se bloquea y debe reiniciarse. - Jesse Vogt