Как остановить Java-апплет, запрашивающий такие службы, как javax.xml.parsers.DocumentBuilderFactory

У меня есть приложение на основе апплета, которое использует следующие классы:

  • javax.xml.parsers.DocumentBuilderFactory
  • javax.xml.parsers.DocumentBuilder
  • javax.imageio.ImageIO
  • javax.imageio.ImageWriteParam
  • javax.imageio.ImageWriter
  • javax.imageio.stream.FileImageOutputStream . . так далее

Вот как я инициализирую апплет:

 var attributes = {
   codebase : "http://example.com/urlto/jars",
   code     : "AppletLauncher.class",
   archive  : "MyApp.jar?v=" + Math.random()
};

var parameters = {"java_arguments": "-Xmx512m"};

deployJava.runApplet(attributes, parameters, "1.6");

Апплет делает несколько запросов GET. Вот несколько примеров запросов:

[GET]  /urlto/jars/META-INF/services/javax.imageio.spi.ImageInputStreamSpi
[HEAD] /urlto/jars/META-INF/services/javax.imageio.spi.ImageInputStreamSpi
[GET]  /urlto/jars/META-INF/services/javax.imageio.spi.ImageTranscoderSpi
[HEAD] /urlto/jars/META-INF/services/javax.imageio.spi.ImageTranscoderSpi
[GET]  /urlto/jars/META-INF/services/javax.imageio.spi.ImageReaderSpi
[GET]  /urlto/jars/META-INF/services/javax.imageio.spi.ImageOutputStreamSpi
[GET]  /urlto/jars/META-INF/services/javax.imageio.spi.ImageWriterSpi
[GET]  /urlto/jars/META-INF/services/javax.xml.parsers.DocumentBuilderFactory

Я прочитал этот пост, и в нем упоминается об отключении codebase_lookup, у меня это тоже не сработало.

Я понимаю, что загрузчик классов сначала будет искать классы в JVM и файле jar апплета. Если он не найдет его, он будет искать в кодовой базе и делать этот запрос. Если это правда, я использую все основные классы, почему он должен делать какие-либо запросы? Как я могу заставить его не делать эти запросы?

Апплет, наконец, инициализируется, когда все запросы терпят неудачу, но запуск апплета занимает слишком много времени.

В приложении я просто читаю JPEG в BufferedMemory и записываю JPEG из BufferedMemory.


person Mo3z    schedule 18.07.2013    source источник
comment
1) archive : "MyApp.jar?v=" + Math.random() Измените эту чушь на archive : "MyApp.jar" 2) Я прочитал этот пост, и в нем упоминается об отключении codebase_lookup. Когда я это делаю, он даже не загружает MyApp.jar и, следовательно, не инициализирует приложение. Это не так, как это предназначено для работы.. т.е.   -  person Andrew Thompson    schedule 19.07.2013
comment
1) Причина, по которой у меня это было, заключается в том, что мне нужно было перезагружать банку каждый раз, когда я что-то тестировал. Я уважаю ваше беспокойство, но вопрос не в этом. 2) Я обновил свой вопрос. Я делал какую-то глупую ошибку с запятой, поэтому он не инициализировался, но даже после исправления это не сработало для меня. Спасибо!   -  person Mo3z    schedule 21.07.2013
comment
На самом деле вопрос не в этом. Поскольку они могут быть причиной проблем, я сосредоточусь на «вопросе», как только все эти «сомнительные вещи» будут рассмотрены.   -  person Andrew Thompson    schedule 21.07.2013
comment
@ Эндрю, я удалил это, и он все еще делает эти запросы. Спасибо!   -  person Mo3z    schedule 21.07.2013


Ответы (1)


Я использовал встроенную в eclipse функцию экспорта Runnable Jar для создания файла jar. Он создавал свой собственный файл МАНИФЕСТА и добавлял следующий параметр

Class-Path: .

Итак, я использовал этот скрипт ant, но удалил этот параметр для создания файла jar, и он перестал выполнять этот запрос. Я не уверен, в чем проблема. Я предполагаю, что он искал эти файлы SPI в "." путь, который он не нашел, поэтому он сделал эти удаленные запросы. Если у кого-то есть идеи, пожалуйста, прокомментируйте. Спасибо!

person Mo3z    schedule 22.07.2013