有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安全Java插件7u40不能在将页面留给另一个小程序后加载小程序

症状

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

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

此行为与JRE 7u25不同,JRE 7u25在所有情况下均成功加载小程序。 此问题可在配备IE 8的Windows 7上重现,也可在配备最新Chrome 30.0的Windows 7上重现。x、 十,。 我无法用IE 10在Windows 8上复制它

变通办法

我所知道的唯一的解决办法是系统。小程序中的exit()。destroy()带有单独的_jvm小程序参数。但我觉得这太残忍了。 你知道其他的解决方法吗

技术信息

首先,我在Java控制面板中打开跟踪。 其次,我打开浏览器jvm调试 JPI_PLUGIN2_DEBUG=1
JPI_PLUGIN2_VERBOSE=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秒)内重新访问页面时,我在与浏览器进程相关联的调试命令窗口中看到以下错误

Attempting to start applet
Exception in thread "Thread-0" java.lang.InternalError: Should not find a running JVM instance but no matching JRE platform at sun.plugin2.main.server.JVMManager.getBestJVMInstance(Unknown Source) at sun.plugin2.main.server.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$BackgroundStarter$1.run(Unknown Source) at sun.plugin2.main.server.IExplorerPlugin$1.run(Unknown Source)


共 (1) 个答案

  1. # 1 楼答案

    我发现了

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

    这就足够了