我在Tomcat上运行了一个Web应用程序。 某些网页包含applet,打包并使用CA证书签名,并在清单中请求“权限:所有权限”。
我在客户端有最新的 JRE 7u40 。 当我使用applet浏览页面时,它会在没有安全性或其他警告的情况下成功加载。 当我离开此页面并在短时间内(少于60秒)返回此页面时,无法加载applet。 如果我离开页面,那么等到java.exe和jp2launcher.exe退出,然后返回页面,applet再次成功加载。
此行为已从 JRE 7u25 更改,其中applet在所有情况下都已成功加载。 此问题可在 Windows 7 with IE 8 上以及Windows 7上使用最新的Chrome 30.0.x.x重现。 我无法在Windows 8上使用IE 10重现它。
我所知道的唯一解决方法是applet.destroy()中的System.exit()with separate_jvm applet参数。但我认为这太粗野了。 你知道其他任何解决方法吗?
首先,我在Java控制面板中打开跟踪。
其次,我打开browser-jvm调试
JPI_PLUGIN2_DEBUG = 1
JPI_PLUGIN2_VERBOSE = 1
当我使用applet离开页面时,我在applet控制台中看到以下内容,因此我认为applet已停止并被销毁。
PluginMain: processing GetAppletMessage PluginMain: processing JavaObjectOpMessage LiveConnectSupport: HAS_FIELD_OR_METHOD "rf" network: Created version ID: 1.7.0.40 network: Created version ID: 1.7.0.25 LiveConnectSupport: HAS_FIELD_OR_METHOD "rf": returning result false PluginMain: processing JavaObjectOpMessage LiveConnectSupport: HAS_FIELD_OR_METHOD "onremove" network: Created version ID: 1.7.0.40 network: Created version ID: 1.7.0.25 LiveConnectSupport: HAS_FIELD_OR_METHOD "onremove": returning result false PluginMain: processing StopAppletMessage, applet ID 1 basic: Starting applet teardown basic: Finished applet teardown basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@1c24701 basic: PluginMain.unregisterApplet: 1 from mananger sun.plugin2.applet.Applet2Manager@6f403e Applet2Manager executing destroyTGAndAC() for entry http://host:80/AppName/applet/,myapplet.jar
当我在短时间内(少于60秒)重新访问该页面时,我在与浏览器进程关联的调试命令窗口中看到以下错误。
尝试启动applet
线程“Thread-0”中的异常 java.lang.InternalError:找不到正在运行的JVM实例但是没有 匹配JRE平台 at sun.plugin2.main.server.JVMManager.getBestJVMInstance(Unknown Source) at sun.plugin2.main.server.JVMManager.getOrCreateBestJVMInstance(未知 资源) at sun.plugin2.main.server.JVMManager.startAppletImpl(Unknown Source) at sun.plugin2.main.server.JVMManager.startApplet(Unknown Source) at sun.plugin2.main.server.JVMManager.startApplet(Unknown Source) at sun.plugin2.main.server.IExplorerPlugin.maybeStartApplet(未知 资源) at sun.plugin2.main.server.IExplorerPlugin.access $ 200(未知来源) at sun.plugin2.main.server.IExplorerPlugin $ BackgroundStarter $ 1.run(Unknown 资源) 在sun.plugin2.main.server.IExplorerPlugin $ 1.run(未知来源)
答案 0 :(得分:3)
我发现了
<param name="separate_jvm" value="true"/>
已经足够了。