2010-04-22 2 views
8

У меня проблема с апплетом Java, который я развернул, который отказывается кэшироваться в «липкой» кеш-памяти jvm (или браузером). По какой-то причине каждый раз, когда пользователь загружает страницу, этот апплет включен, jvm повторно загружает файл jar с сервера, что вызывает длительную задержку.Java-апплет не кэшируется

Веб-страница, содержащая апплет, осуществляется доступ через Интернет, поэтому в соответствии с Sun's Java applet documentation я использую <applet> тег, а не <object> или <embed> тега.

Любая помощь, позволяющая отлаживать или идентифицировать проблему, будет высоко оценена.

Ниже приводится полный апплет тег Я использую:

<applet alt="Scanning Applet failed to load" archive="scanning.jar" 
     code="scanning.scanlet.class" codebase="/java/" codetype="application/java" 
     height="30" mayscript="True" name="scanlet" width="200"> 
    <param name="domain" value="192.168.12.23" /> 
    <param name="publishName" value="scan_attachment" /> 
    <param name="publishURL" value="http://192.168.12.23/draft/update/52" /> 
    <param name="curURL" value="http://192.168.12.23/draft/edit/52" /> 

Your browser is unable to process the Java &lt;APPLET&gt; tag needed to display this applet 
<br /> 
One solution would be to download a better web browser like 
<a href="http://www.mozilla.com/firefox">Mozilla's Firefox</a> 

</applet> 
+0

Я включил ведение журнала и отслеживание с помощью панели управления Java-> Advanced-> Debugging, и я получаю много итераций следующего сообщения: сеть: запись в кэш не найдена [url: http : //192.168.12.23/java/scanning.jar, версия: 1.0] –

+0

General StackOverflow Question: не существует способа форматировать «Комментарии» так же хорошо, как исходный вопрос? –

ответ

1

Эта официальная статья описывает, как вы можете изменить APPLET тег для увеличения кэширования:

http://java.sun.com/products/plugin/1.3/docs/appletcaching.html

+0

Jon, thx для быстрого ответа, к сожалению, я был вверх и вниз по этому официальному документу. В соответствии с этим, поскольку я просто использовал атрибут архива, я должен был получить какое-то резервное кэширование на уровне браузера, даже без новых атрибутов cache_ *, не так ли? –

+0

В любом случае, добавив атрибуты cache_ * к моему тегу applet следующим образом, апплет по-прежнему отказывается кэшировать jvm: ... те же параметры и т. д.

+0

Ну, это «резервное кэширование на уровне браузера» по-прежнему выполняется JVM и обычно является проблемой. – ArtemGr

2

Лично я решена кеширования с использованием параметров cache_archive и cache_version, размещенных на http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html

My ca che_version основана на фактической дате изменения файла, например.

val archive = libs.map("/" + _.getPath).mkString (", ") 
val version = libs.map(_.getUpdated/1000/20 - 59281420).mkString (", ") 

и работать с MSIE это выглядит как:

if (msie) { 
    cms write <OBJECT 
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
    codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" 
    width="100%" height="100%"> 
    ... 
    <PARAM name="cache_archive" value={archive}/> 
    <PARAM name="cache_version" value={version}/> 
    </OBJECT> 
} else { 
    cms write <applet ... 
    cache_archive={archive} cache_version={version}></applet> 
} 
+0

ArtemGr, thx для подробного ответа. Все наши пользователи получают доступ к сайту через Firefox, поэтому не могут использовать . мой апплет, чтобы включить атрибуты cache_ * (_archive, _option, & _version), но апплет все еще повторно загружается каждый раз, когда я просматриваю эту страницу. Вот мой измененный тег апплета: < applet cache_archive = "scan.jar" cache_option = "Plugin" cache_version = "1.0" code = "scan.scanlet.class" codebase = "/ java /" codetype = "application/java" height = "30" mayscript = "True "name =" scanlet "width =" 200 "> ... те же параметры и т. д. –

+0

Это происходит только с вами или происходит со всеми (некоторыми) пользователями веб-сайта? Если первое, то может быть, что Java Plugin на вашем компьютере не может кэшировать файл по какой-то причине? В Windows Java Plugin есть возможность кэшировать кеш браузера, и в этом случае могут применяться ограничения кэша браузера (вы можете увидеть, что кэшируется через панель управления, BTW); в UNIX ~/.java/deployment/folder используется для кэширования, ~/.java/должен быть доступен для записи и т. д. – ArtemGr

+0

Это происходит со всеми, кто использует сайт: [. На машинах Windows я просмотрел панель управления Java, и только настройки «кэширования», которые я могу найти, находятся в разделе «Временные файлы Интернета-> Настройки». Тем не менее, эти настройки выглядели неплохо. Я также просмотрел временные файлы Интернета-> Просмотр, чтобы проверить, что файл .jar, о котором идет речь, отсутствует в кеше: [ –

4

Я имел ту же самую проблему и нашел трюк, который нужно применять на стороне сервера. Кажется, что банки не кэшируются, если их тип mime неверен. Пожалуйста, проверьте ответ своего сервера, используя тип mime приложения/java-archive.

Другая проблема, которую я нашел, связана с конкретной банкой. В моем параметре архива было указано много банок, но только некоторые из них были кэшированы. Я обнаружил, что все банки до определенного, где кэшируются, все оставшиеся банки не кэшированы вообще. При загрузке апплета я нажал «5» в своей консоли java и нашел это сообщение сразу после последнего кэшированного jar: cache: подписанная запись отсутствовала из jar. Я до сих пор не знаю, что не так с этим файлом, но я переместил эту банку в конце списка параметров архива. Это «исправило» проблему.

1

Для меня было удалить файлы Jar из тега архива и просто его в cache_archive параметра и указать версии, как он не поросенок обратно на сервер для последнего изменения

Fixed это в firefox для меня

Смежные вопросы