3

症状

我有一个在 Tomcat 上运行的 Web 应用程序。一些网页包含小程序,使用 CA 证书打包和签名,并在清单中请求“权限:所有权限”。

我在客户端有最新的JRE 7u40。当我使用小程序浏览页面时,它会成功加载而没有安全或其他警告。当我离开此页面并在短时间内(少于 60 秒)返回此页面时,无法加载小程序。如果我离开页面,则等到 java.exe 和 jp2launcher.exe 退出,然后返回页面,小程序再次加载成功。

此行为从JRE 7u25更改,其中小程序在所有情况下都成功加载。此问题可在带有 IE 8的 Windows 7 和带有最新 Chrome 30.0.xx 的 Windows 7 上重现我无法在带有 IE 10 的 Windows 8 上重现它。

解决方法

我知道的唯一解决方法是 applet.destroy() 中的 System.exit() 和 separate_jvm 小程序参数。但我认为这太野蛮了。 你知道任何其他解决方法吗?

技术信息

首先,我在 Java 控制面板中打开跟踪。二、我打开browser-jvm调试 JPI_PLUGIN2_DEBUG=1
JPI_PLUGIN2_VE​​RBOSE=1

当我离开带有小程序的页面时,在小程序控制台中看到以下内容,因此我认为该小程序已停止并被销毁。

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 秒)重新访问该页面时,我在与浏览器进程关联的调试命令窗口中看到以下错误。

尝试启动小程序
线程“Thread-0”java.lang.InternalError 中的异常:在 sun.plugin2.main.server 的 sun.plugin2.main.server.JVMManager.getBestJVMInstance(Unknown Source) 中不应找到正在运行的 JVM 实例但没有匹配的 JRE 平台.JVMManager.getOrCreateBestJVMInstance(Unknown Source) 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(Unknown Source) at sun.plugin2.main.server.IExplorerPlugin.access$200(Unknown Source) at sun.plugin2.main.server.IExplorerPlugin$ Sun.plugin2.main.server 上的 BackgroundStarter$1.run(Unknown Source)。IExplorerPlugin$1.run(未知来源)

4

1 回答 1

3

我发现

<param name="separate_jvm" value="true"/>

已经足够了。

于 2013-10-08T05:25:50.597 回答