【问题标题】:Java Applet init's very slow - java 1.8. u60Java Applet init 非常慢 - java 1.8。 u60
【发布时间】:2015-12-05 04:34:15
【问题描述】:

自从我的客户将他的 Java 环境更新到 Java 1.8 版本后,我在使用 Java 小程序时遇到了一些问题。 u60.

Applet 初始化页面请求总是非常缓慢。 问题只出现在 IE 中(测试 8、10、11),Firefox 没有问题!

IE - Java 控制台 - 日志:

AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 275883 us,
pluginInit dt 196499884 us, TotalTime: 196775767 us
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch
dt 275883 us, pluginInit dt 196499884 us, TotalTime: 196775767 us

详细的 IE - Java 控制台 - 行为发生的日志:

basic: Applet-Teardown wird gestartet
preloader: Delivering: ApplicationExitEvent
preloader: Enqueue: com.sun.javaws.progress.PreloaderDelegate$4@1518c9b
basic: Applet-Teardown beendet
basic: PluginMain.unregisterApplet: 10 from mananger
sun.plugin2.applet.Applet2Manager@da2dbb
ui: plugin2manager.parentwindowDispose
basic: Fortschritts-Listener entfernt:
sun.plugin.util.ProgressMonitorAdapter@9e3fee
preloader: Start progressCheck thread
preloader: Stop progressCheck thread queue.size()=0
basic: Applet-Teardown wird gestartet
preloader: Delivering: ApplicationExitEvent
preloader: Enqueue: com.sun.javaws.progress.PreloaderDelegate$4@56fa06
basic: Applet-Teardown beendet
basic: PluginMain.unregisterApplet: 11 from mananger
sun.plugin2.applet.Applet2Manager@176fe71
ui: plugin2manager.parentwindowDispose
preloader: Stop progressCheck thread queue.size()=0
---------20s stop here---------
preloader: Construct preloader delegate
preloader: Construct preloader delegate adapter=class 
com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter

FF - Java 控制台 - 日志:

ppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 330332 us,
pluginInit dt 687763051 us, TotalTime: 688093383 us
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch
dt 330332 us, pluginInit dt 687763051 us, TotalTime: 688093383 us

我可以做些什么来找出或解决问题?

【问题讨论】:

  • 我有同样的问题..除了下面的答案中解释的解决方法之外还有什么解决方案吗?
  • 当然,我们决定删除 Java Applet 并用另一个框架替换它,因为没有人知道这种解决方法会工作多长时间......可能只到下一次 Java 更新,然后你从新开始。

标签: java internet-explorer applet java-8 signed-applet


【解决方案1】:

使用 JavaScript 修改现有标记并插入 APPLET 标记。 这里我也插入了要在 JavaScript 中修改的标签 document.write('<div id="java-rsaspobj">Java Applet comes here</div>');

function rsaspobj_init(codebase, status_report, direct_applet_tag) {
    var elem = document.getElementById("java-rsaspobj")
    if (!elem && !direct_applet_tag) {
        alert('HTML div with id java-rsaspobj is missing on this page');
        return;
    }
    var applet_tag = '<APPLET id="RSAspProxyApplet" name="RSAspProxyApplet"'
        + ' codebase="' + codebase +'"'
        + ' code="RSProxy" archive="RSProxy.jar"';
    if (status_report)
        applet_tag += ' height="100" width="100" java_status_events="true"';
    else
        applet_tag += ' height="0" width="0"';
    applet_tag += '></APPLET>';
    if (direct_applet_tag)
        document.write(applet_tag); // 20 sec delay
    else
        elem.innerHTML = applet_tag; // no delay
}

【讨论】:

  • 奇怪的是,这消除了我的性能问题。只需在正文的onload 标记中调用上述代码的修改版本,一切都会恢复正常。 oracle 有 bug 文件吗?
  • 使用 $(selector).replaceWith(applettag) 时出现同样的问题。解决了当浏览器是IE时简单分配innerHTML。
猜你喜欢
  • 2021-05-13
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
相关资源
最近更新 更多