我有一个小程序,需要执行priveledges并与javascript通信。它已签署。
最近,一些用户(总共2000人)在早上启动IE时遇到了问题。小程序无法启动。关闭并重新打开浏览器通常可以解决问题并且applet可以正常工作。
我启用了applet跟踪并在控制台中获得了以下内容:(抱歉德语,但关键条目是英文)
Java Plug-in 1.6.0_23
Verwendung der JRE-Version 1.6.0_23-b05 Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = C:\Documents and Settings\user
.....
network: Cache-Eintrag gefunden [url: http://{sharepointportal}/_layouts/WebParts2010/ieLauncher.jar?version=2011120106, Version: null] prevalidated=false/0
cache: Read manifest for http://{sharepointportal}/_layouts/WebParts2010/ieLauncher.jar?version=2011120106: read=400 full=400
cache: Reading Signers from 1121 http://{sharepointportal}/_layouts/WebParts2010/ieLauncher.jar?version=2011120106 | C:\Documents and Settings\user\Application Data\Sun\Java\Deployment\cache\6.0\63\a69c47f-2eba4659.idx
security: Zertifizierungsstellen-Stammzertifikate wurden geladen aus C:\PROGRA~2\Java\jre6\lib\security\cacerts
security: Bereitstellungszertifikate werden geladen aus C:\Documents and Settings\user\Application Data\Sun\Java\Deployment\security\trusted.certs
security: Bereitstellungszertifikate wurden geladen aus C:\Documents and Settings\user\Application Data\Sun\Java\Deployment\security\trusted.certs
security: Zertifikate werden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate wurden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate werden aus Internet Explorer ROOT-Zertifikatspeicher geladen
security: Zertifikate wurden aus Internet Explorer ROOT-Zertifikatspeicher geladen
security: Zertifikate werden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikate wurden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikatskette mithilfe von CertPath-API prüfen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Keine Zeitstempelinformationen verfügbar
security: Zuständigkeitslistendatei gefunden
security: Beginn der Überprüfung auf vertrauenswürdige Erweiterung für dieses Zertifikat
security: Beginn des Vergleichs der Zuständigkeitsliste mit diesem Zertifikat
security: CRL-Unterstützung ist deaktiviert.
security: OCSP-Unterstützung ist deaktiviert.
security: Diese End Entity-Überprüfung mit OCSP ist deaktiviert.
security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
security: Zertifikate werden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate wurden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate werden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikate wurden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikatskette mithilfe von CertPath-API prüfen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Keine Zeitstempelinformationen verfügbar
security: Zuständigkeitslistendatei gefunden
security: Beginn der Überprüfung auf vertrauenswürdige Erweiterung für dieses Zertifikat
security: Beginn des Vergleichs der Zuständigkeitsliste mit diesem Zertifikat
security: CRL-Unterstützung ist deaktiviert.
security: OCSP-Unterstützung ist deaktiviert.
security: Diese End Entity-Überprüfung mit OCSP ist deaktiviert.
security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
security: Zertifikate werden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate wurden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate werden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikate wurden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikatskette mithilfe von CertPath-API prüfen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Keine Zeitstempelinformationen verfügbar
security: Zuständigkeitslistendatei gefunden
security: Beginn der Überprüfung auf vertrauenswürdige Erweiterung für dieses Zertifikat
security: Beginn des Vergleichs der Zuständigkeitsliste mit diesem Zertifikat
security: CRL-Unterstützung ist deaktiviert.
security: OCSP-Unterstützung ist deaktiviert.
security: Diese End Entity-Überprüfung mit OCSP ist deaktiviert.
security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
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.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at java.lang.ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.checkPackageAccess(Unknown Source)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Ausnahme: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
Ignored exception: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
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.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at java.lang.ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.checkPackageAccess(Unknown Source)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Ausnahme: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
Ignored exception: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.plugin.javascript)
如果我错了,请纠正我,但是,由于重新启动浏览器解决了问题,因此它不能成为证书或priveledge问题。正确?
有没有人知道它可能是什么或我还能做些什么来获取更多信息?
由于
更新
applet html
<APPLET ID='Launcher'
CODE='package.PortalLauncher.class'
ARCHIVE='ieLauncher.jar?version=2011120108'
CODEBASE='../../../_layouts/WebParts2010/'
WIDTH='0' HEIGHT='0'>
<div style='border: 1px red dotted; margin:10px;'>
Dieser Webbrowser unterstützt das APPLET-Tag nicht!<br/>
This browser does not support the APPLET tag!<br/>
</div></APPLET>
UPDATE2
applet可以直接从浏览器启动应用程序。链接onclick事件使用应用程序URL调用applet。允许applet启动可执行文件。它位于公司门户网站上,可直接访问当前用户可以使用的所有应用程序。
因此它是一个javascript to java链接。
UPDATE3
我更改为从APPLET到OBJECT的标记,并添加了MAYSCRIPT,SCRIPTABLE等(参见建议)并开始测试。我有想法在浏览器的“起始页”列表中添加第二页。许多用户自动启动IBM Host on Demand,所以我想我也会尝试一下。那是问题开始的时候。每次启动浏览器2-3次,我的applet出现问题。看一下这条痕迹,让我感到震惊的是,当小程序启动时,我会在跟踪中得到以下内容:
security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
security: Zertifikate werden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate wurden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
security: Zertifikate werden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
basic: Applet geladen
security: Zertifikate wurden aus Internet Explorer TrustedPublisher-Zertifikatspeicher geladen
security: Zertifikatskette mithilfe von CertPath-API prüfen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
security: Keine Zeitstempelinformationen verfügbar
security: Zuständigkeitslistendatei gefunden
security: Beginn der Überprüfung auf vertrauenswürdige Erweiterung für dieses Zertifikat
security: Beginn des Vergleichs der Zuständigkeitsliste mit diesem Zertifikat
security: CRL-Unterstützung ist deaktiviert.
security: OCSP-Unterstützung ist deaktiviert.
security: Diese End Entity-Überprüfung mit OCSP ist deaktiviert.
security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
basic: Applet geladen
当applet加载失败时,我得到:
security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
basic: Applet geladen
这说的是正在寻找证书。当它工作时,显示成功消息。当它失败时,没有任何进一步的追踪。即可能找不到证书。当我刷新页面时,它就成功了。
想法?
答案 0 :(得分:2)
我无法确定,但我想与您分享我的想法。从外页调用javascript的小程序必须标记为“MAYSCRIPT”。
我认为如果applet未标记为MAYSCRIPT
,则会抛出此异常。尝试检查一下:创建静态HTML页面,将applet添加到此页面而不使用MAYSCRIPT
属性。如果您遇到相同的例外,请继续执行后续步骤。
我的理论是,您的HTML页面会动态创建包含applet
标记的代码。因此,有时applet可能会在之前启动,浏览器会识别出此applet可以调用javascript。这就是刷新经常解决问题的原因。
因此,如果所有这些都正确,请尝试修改HTML页面,以便applet仅在浏览器读取了标记applet
的所有属性时启动。可能使动态代码静态或服务器生成。
如果我的理论完全错误,我很抱歉。多年来我一直没有实现applet。
答案 1 :(得分:2)
我怀疑AlexR已找出问题的原因,但还有一些额外的评论。
CODE='package.PortalLauncher.class'
应该是..
CODE='package.PortalLauncher'
这就是..
WIDTH='0' HEIGHT='0'>
..是可疑的('隐藏小程序'),可能会导致applet被过度保护的安全插件完全删除。
最好将大小设置为20x20,并通过样式(CSS)隐藏小程序。
确保验证HTML。
我无法解释问题的间歇性,但这是适合您的小程序。
上的W3C当我将样式设置为'display:none'时,似乎不再加载applet。
..请注意,'无'的显示不会创建一个不可见的框;它会创建 no box。
强调我的。所以这对我来说并不奇怪。 ;)
visibility: hidden
生成的框是不可见的(完全透明,没有绘制任何内容)..
在页面底部放置一个浅的宽applet元素,几乎不会被注意到。
您可能会调查以使applet消失的其他事项: