Java-FTP-апплет - PullRequest
       86

Java-FTP-апплет

1 голос
/ 10 ноября 2011

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

В любом случае, я пытался использовать java.io.Fileобъекты в апплете, и как только я это сделал, он получает ошибку ... В любом случае, основываясь только на предположениях, я считаю, что эта проблема существует (по крайней мере, частично), потому что каждый раз, когда апплет запускается, а виртуальная машина не может работать, существуют две файловые системывыбирать между файловой системой локального компьютера и серверами ... Я также считаю (основываясь на том факте, что мой java получал ошибку всякий раз, когда я пытался импортировать java.io. *), что еще одним источником проблемы является то, что я импортирую эту вещь.Если бы я определил «File» в апплете и каким-то образом указал файловую систему, используемую для JVM, это решило бы одну или обе мои проблемы? И если да, то как бы я поступил так?

1 Ответ

1 голос
/ 10 ноября 2011

Java-апплеты запускаются в «песочнице» - они не получают доступа к локальной файловой системе (если вы не подпишете их и не перепрыгнете через некоторые обручи)

Поскольку апплеты выполняются на «клиенте», они не путаются между файловой системой сервера и клиента - файловая система сервера полностью недоступна (за исключением случаев, когда она опосредована каким-либо протоколом, таким как FTP или HTTP).

Oracle скажем

Если вы пытались запустить пример апплета, вы, несомненно, видели ошибки, когда нажимали кнопку Click Me. Это связано с тем, что безопасность платформы Java 2 не позволяет апплету выполнять запись и чтение из файлов без явного разрешения.

Апплет не имеет доступа к локальным системным ресурсам, если ему специально не предоставлен доступ.


Обновление: некоторые разъяснения понятий:

«Java-ftp-апплет» - это Java-апплет, представляющий собой некоторый байт-код Java, хранящийся в файле .jar на сервере, где он может обслуживаться веб-сервером, таким как Apache или IIS, в веб-браузерах, таких как Internet Explorer, FireFox. , Chrome, Safari и т. Д.

Использование идет так

  • Веб-браузер на персональном компьютере загружает веб-страницу с сервера по протоколу HTTP.
    • отправляет HTTP-запрос
    • получает ответ HTML
  • Когда он анализирует и отображает HTML-страницу, браузер находит в ней теги, которые ссылаются на апплет
  • Веб-браузер использует HTTP для запроса с сервера файла jar для апплета.
  • Веб-сервер возвращает копию содержимого файла jar.
  • Браузер запускает виртуальную машину Java (JVM)
  • Браузер передает содержимое файла jar апплета JVM
  • JVM на персональном компьютере (не на сервере) запускает апплет
  • Браузер отображает апплет и передает щелчки мыши и нажатия клавиш обратно в JVM.
  • Апплет отправляет запрос FTP-соединения на сервер, на котором работает демон / служба FTP
  • Сервер отвечает.
  • Апплет отправляет FTP-запрос на файл.
  • Сервер отправляет ответ FTP, содержащий файл.
  • Апплет делает что-то полезное с этим файлом.

Апплет работает на персональном компьютере, доступ к файлам на этом компьютере разрешен только в том случае, если апплет подписан и ему предоставлено разрешение от этого персонального компьютера.

Если на персональном компьютере отдельно использовался протокол обмена файлами (например, NFS или SMB), который делает некоторые каталоги на сервере похожими на локальные каталоги на персональном компьютере (например, отображение диска), - тогда локальные приложения (такие как подписанный апплет) может быть разрешен доступ к этим файлам с помощью обычного обычного простого ввода-вывода Вероятно, это не тот случай.

Апплет никогда не имеет прямого доступа к файлам на сервере.

Апплет может взаимодействовать со службами на сервере с помощью сетевых протоколов (не обычный файловый ввод-вывод). Некоторые из этих служб (например, службы на основе HTTP и FTP) могут разрешать передачу копий содержимого файлов на сервер.

...