【问题标题】:Java Applet not workingJava小程序不工作
【发布时间】:2011-08-15 07:58:12
【问题描述】:

一位客户注意到我们的一个 java 小程序不再工作了。但是,我们无法判断问题所在。

规格

网络应用程序是tiparlo。它用于记录和组织口语,主要用于学校训练语言和存储以供以后评估。该应用程序包含一个由 JavaScript 管理的 HTML 界面。声音播放和录音是通过内部开发的java applet 完成的。正如您在测试页面上看到的,小程序本身处于工作状态。

然而,在tiparlo 中,小程序(进一步称为录音机)没有预加载的声音文件。由于tiparlo 包含多个声音文件,JavaScript 告诉录音机播放什么文件。例如,如果你想播放 foo.ogg,javascript 会告诉录音机播放 http://url/path/foo.ogg

这已经工作了几年,但现在已经不行了。

错误跟踪

问题在于它确实在某些条件下工作。例如,它适用于我们的本地开发机器和我们的公共测试环境。它只是不再为我们的客户工作。

工作示例:http://test.s2.olefa.com/cgi-bin/apps/tiparlo?projectid=3&mode=viewer
非工作示例:http://www.ecoles-dudelange.lu/cgi-bin/apps/tiparlo?projectid=1594&mode=viewer

一些有用的事实:

  • 两个示例都在同一台服务器上运行

  • java 小程序、js 代码、html 解析器和源代码是共享资源。因此,两个示例都运行完全相同的代码

  • 与问题相关的文件有:soundrecorder.js 和 jrecord.jar。 play 命令位于 soundrecorder.js:line 112

到目前为止我们所知道的

  • 浏览器对非工作示例的反应不同。 Safari/Mac 一切正常。然而,Safari/Win 在播放时冻结。 Firefox 4 根本不播放任何东西。 Firefox 3.5/Mac 又做对了。然而 Firefox3.5/Win 根本不播放任何东西。 IE9 也有同样的问题。 Chrome 也是如此。 Opera 彻底崩溃,需要重新启动。我们还没有找到适用于非工作示例的 linux 浏览器。澄清一下:工作示例适用于所有平台上的所有浏览器,Safari/Win (meh) 除外。 更新:这取决于 java 版本。使用 java 6.20,所有非工作示例都适用于所有浏览器。使用 java 6.24,只有工作示例有效。

  • 我们尝试为非工作示例 (webX.sX.olefa.com) 使用替代服务器 URL,这与工作示例类似。这次尝试失败了。

  • 我们尝试使用录音机的相对路径(例如 /path/foo.ogg)。

  • 我们尝试将 Java 更新到最新版本。

  • 我们尝试以不同方式访问小程序。

  • 6 个月前我们遇到过类似的问题,这是由 Java 更新引起的。我们在具有较旧 java 版本的 VM 上尝试了不工作的示例。有用。然而,我们怀疑 java 本身并不是罪魁祸首,因为相同的 java-version/browser 在工作示例上工作。

  • 录音机只拒绝播放通过 JS 动态加载的文件。如果它在初始化时加载文件,则没有错误。

  • 小程序本身已加载。您可以通过为其指定宽度/高度来使其可见。怀疑是java/js互通有问题(js在告诉java玩什么但是通信有问题?)。不过我目前还不能确认。

一般来说,我们无法弄清楚为什么在完全相同的条件下运行完全相同的代码可以在一个站点上运行,而在另一个站点上却不行。

解决方案

解决方案是评论的一部分。问题和解决方法可以在here找到。感谢 Ryan 为我们指明了正确的方向。

【问题讨论】:

    标签: java javascript applet


    【解决方案1】:

    我在 Windows (Java 1.6.0_24) 上使用 FF4,并且能够在 http://www.ecoles-dudelange.lu/cgi-bin/apps/tiparlo?projectid=1594&mode=viewer 看到小程序。

    但是,当我单击页面底部的蓝色大播放图标时,按钮上方窗格中的所有表情符号似乎都会发光 - “墨西哥波浪”风格。令人印象深刻:)

    我确实查看了 java 小程序控制台,并在单击按钮后注意到以下错误:

    network: Cache entry not found [url: http://www.ecoles-dudelange.lu/resources/audio/_tiparlo_1594/ismael_20110405_11-17-47_3129344.ogg, version: null]
    network: Connecting http://www.ecoles-dudelange.lu/resources/audio/_tiparlo_1594/ismael_20110405_11-17-47_3129344.ogg with proxy=DIRECT
    network: Cache entry not found [url: http://85.119.157.43/crossdomain.xml, version: null]
    network: Connecting http://85.119.157.43/crossdomain.xml with proxy=DIRECT
    network: Connecting http://85.119.157.43:80/ with proxy=DIRECT
    
    java.security.AccessControlException: access denied (java.net.SocketPermission 85.119.157.43 resolve)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkConnect(Unknown Source)
        at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at java.net.URL.openStream(Unknown Source)
        at lu.educdesign.audio.gui.JRecordApplet.load(Unknown Source)
    

    ...

    URL http://85.119.157.43/crossdomain.xml 加载一个 html 页面,该页面重定向到 http://confixx.s2.olefa.com,提示输入用户名/密码。

    也许对此有一个很好的解释,但在我看来,初步看来,这可能是个问题

    【讨论】:

    • confixx 听起来像是配置错误。但是,我可以使用浏览器访问该文件。会调查的。至少我们现在有一个有效的线索。谢谢队友。
    • >"但是,我可以使用浏览器访问该文件。" - 尝试清除您的 cookie,看看您是否仍然可以访问它。
    • 是的,仍然有效。但是在你的帮助下,我在这里发现了一个类似的问题:stackoverflow.com/questions/4135138/…。症状都匹配。
    • 我很想知道针对 CVE-2010-3560 建议的 4 种解决方法中的哪一种解决了您的问题。
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多