Апплеты в IPlanet с Firefox (класс не найден) - PullRequest
0 голосов
/ 08 июня 2010

У меня есть апплет, который прекрасно загружается при локальном доступе (как IE, так и Firefox).

Однако, когда я помещаю свою веб-страницу в веб-сервер (локальный IPlanet), она отказывается загружаться в Firefox (но все еще хорошо в IE). Я получаю следующую ошибку в консоли Java:

load: class XXX.localprinting.LocalPrintingApplet.class not found.
java.lang.ClassNotFoundException: XXX.localprinting.LocalPrintingApplet.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://XXX/test/XXX/localprinting/LocalPrintingApplet/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: XXX.localprinting.LocalPrintingApplet.class

[EDIT] Включив больше трассировки в консоли Java, я на самом деле добираюсь до корневой проблемы:

network: Connecting http://ZZZ:443/ with proxy=DIRECT
security: Loading Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts
security: Loaded Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts
security: Loading SSL Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts
security: Loaded SSL Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts
security: Loading Deployment SSL certificates from C:\Documents and Settings\ZZZ\Application Data\Sun\Java\Deployment\security\trusted.jssecerts
security: Loaded Deployment SSL certificates from C:\Documents and Settings\ZZZ\Application Data\Sun\Java\Deployment\security\trusted.jssecerts
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: Checking if certificate is in Deployment denied certificate store
security: Checking if certificate is in Deployment session certificate store
security: Checking if SSL certificate is in Deployment permanent certificate store
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with cookie "aria_user_profile={DSƌ!,!C!"ÍÔaÃæK9eä|IC¦!A:i̤!?!7æâ!A7!*E!%!'!F"ú°!4QÎ!B:N´)!'RJ6a\IS"
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with proxy=DIRECT
network: Connecting http://ZZZ:443/ with proxy=DIRECT
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with cookie "aria_user_profile={DSƌ!,!C!"ÍÔaÃæK9eä|IC¦!A:i̤!?!7æâ!A7!*E!%!'!F"ú°!4QÎ!B:N´)!'RJ6a\IS"
**java.io.IOException: Server returned HTTP response code: 400 for URL: https://ZZZ/modules/print/applet/LocalPrinting.jar**
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at sun.plugin.PluginURLJarFileCallBack.downloadJAR(Unknown Source)
    at sun.plugin.PluginURLJarFileCallBack.access$000(Unknown Source)
    at sun.plugin.PluginURLJarFileCallBack$2.run(Unknown Source)

Однако, используя URL https://ZZZ/modules/print/applet/LocalPrinting.jar,, я могу успешно загрузить банку.

Есть идеи, что может объяснить другое поведение веб-сервера?
Я уже исследовал вопрос «класс не найден», но не нашел ничего уместного.

Некоторая дополнительная информация:

  • Апплет использует файл JAR, который должен быть загружен. Тем не менее, я вижу в журналах, что он пытается загрузить файл класса

    172.16.195.55 - - [10 / Июн / 2010: 11: 47: 45 +0200] "GET /XXXX/apf/init/XXXX/localprinting/LocalPrintingApplet.class HTTP / 1.1" 400 147

  • Работает локально (без веб-сервера) в IE / Firefox / Chrome

  • Работает с Tomcat в IE / Firefox / Chrome
  • Работает с Iplanet на IE / Chrome
  • Не работает на Iplanet с Firefox (с или без HTTPS)
  • (когда я говорю Iplanet, это Iplanet для статического контента и Weblogic для J2EE)

HTML-код, предоставленный Firefox на вкладке Firebug HTML:

<object width="0" height="0" id="eprint_printingApplet" classid="clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA">
    <param value="application/x-java-applet;version=1.5" name="type">
    <param value="/modules/print/applet/LocalPrinting.jar" name="archive">
    <param value="xxx.localprinting.LocalPrintingApplet.class" name="code">
    <param value="true" name="mayscript">
    <param value="printingApplet" name="name">
    <param value="pdt1.glb.XXXX.net,pdt2.glb.XXXX.net" name="host">
    <param value="10244" name="port">
    <param value="" name="password">
    <param value="XXXX" name="unto">
    <param value="APPLET" name="env.applicationLabel">
    <param value="1" name="env.applicationIndex">
    <param value="6X" name="env.XXXX">

    <comment>
        <embed width="0" height="0" env.XXXX="6X" env.applicationindex="1" env.applicationlabel="APPLET" unto="XXXX" password="" port="10244" host="pdt1.glb.XXXX.net,pdt2.glb.XXXX.net" mayscript="true" name="printingApplet" code="XXXX.localprinting.LocalPrintingApplet.class" archive="/modules/print/applet/LocalPrinting.jar" type="application/x-java-applet;version=1.5">
        <noembed>No Java Runtime Environment v5.0 support for applet installed</noembed>
    </comment>

Ответы [ 4 ]

1 голос
/ 15 июня 2010

Попробуйте еще кое-что:

  • Зависит ли класс LocalPrintingApplet от классов в банке? Класс Applet загружается, как видно из журналов - также загружен ли jar? Вам не нужно иметь класс, внешний по отношению к банке.

IE имеет свои собственные особенности, что означает, что требуются два тега объекта - один для IE и один для браузеров, соответствующих стандарту. Посмотрите этот SO вопрос для примера кросс-браузерного тега объекта для апплетов, и эту статью: Демистификация Java-апплетов

В приведенном выше вопросе SO также упоминается, что FF не играл в мяч, и исправление должно было изменить порядок параметров объекта:

applet name="XYZ" archive="xxx.jar" code="x.y.Applet" width='100%' height='100%' mayscript="mayscript"

Теперь держитесь за соломинку, но вы также можете использовать атрибуты вместо <PARAM> дочерних тегов, поскольку атрибуты, похоже, используются более широко.

Наконец, если вы добились такого безуспешно, в этом посте на форуме в конце будет показан кросс-браузерный объект для встраивания, который работает как в FF, так и в IE.

0 голосов
/ 17 июня 2010

Сбой явно вызван нарушением безопасности java.security.AccessController.doPrivileged(Native Method)

С большой вероятностью причина связана с:

  • отсутствующими или недействительными сертификатами SSL или подписи апплета, или
  • межсайтовая защита сценариев, либо в java, либо в Firefox, либо
  • конфликтующий плагин firefox, такой как NoScript, или
  • настройки безопасности java в firefox

Я бы проверил все ваши настройки безопасности и плагины, связанные с Java.

0 голосов
/ 11 июня 2010

Попробуйте скачать файл jar напрямую из Firefox, чтобы увидеть, что происходит. Также убедитесь, что на веб-сервере задан правильный тип MIME для файлов JAR.

0 голосов
/ 08 июня 2010

Я думаю, что вы пытаетесь получить доступ к классу XXX.localprinting.LocalPrintingApplet.class, тогда как вы должны обращаться к классу XXX.localprinting.LocalPrintingApplet (без .class)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...